この2週間、微信で支払った穴を分かち合う~参考にしてほしい(PHP)


前言
実はいかなるインタフェースの開発も与えられたインタフェースのドキュメントと例に従って開発すれば、基本的に大きな問題はありません.いくつかの問題は雑多な細部に出ています.今、微信の支払い開発で自分が出会った小さな細部を共有してください.JSセキュリティドメイン名の構成、Web認証ドメイン名、公衆番号認証ディレクトリなど、ドキュメントに従って開発前の構成を完了します.
坑一:配置
WeChat決済のドキュメントを見て、インタフェースのルールを理解します.WeChat決済の流れは基本的にopenid->統一注文パラメータの生成->ユーザー決済->コールバックですが、上記のようなものを構成する際にも複雑ではありません.
支払承認ディレクトリは、インタフェースの上位レベルのディレクトリに構成する必要があります.
スラッシュ(/)の末尾は、スラッシュの末尾でなければなりません.また、ルーティングジャンプをしたかどうかにかかわらず、バックエンドインタフェースのリクエストパスです.
ピット2:openidの取得
  • WeChat支払いDEMOリンクをダウンロード
  • ドキュメントにも例がありますが、exampleフォルダでは、最初のステップでopenidを取得すると引っかかりました.まず、こちらのコードフレームワークはフロントエンドvue+バックエンドthinkphpがapiインタフェースにデータインタラクションを実現するように与えたものです.最初のステップでopenidを取得するには、header("Location:....")リダイレクト取得codeその後Curlアクセスにジャンプaccess_tokenインタフェースでユーザーopenidを取得する必要があります.フロントエンド注文自体がページジャンプであればdemoの書き方で直接使えますが、フロントエンドpostリクエストであればリダイレクト操作ができないため、openidの取得と統合受注パラメータの生成は同じ方法では実現できません.フロントエンド非同期のリクエストではAccess-Control-Allow-Originのドメイン間問題が報告され、しかも新聞api.weixin.qq.comドメイン間ではできないapi.weixin.qq.com.したがって、上記のドメイン間問題に遭遇した場合は、フロントエンドの非同期リクエストとopenidの取得が一緒に書かれていますが、非同期リクエストがheaderのリダイレクトに応答できない理由です.プロジェクトでopenidを他の場所で入手した場合は問題ありません
    最初のピットの結果:
    フロントエンドが非同期リクエストデータであれば、openidは統一注文と一緒に書くことができません~openidは一度再注文して取得する必要があります.
    ピット2:統一オーダーの生成
    統一オーダーパラメータを生成するには、パラメータドキュメントのパラメータを厳密に照合して書く、exampleフォルダの例には、作成した組立パラメータの方法があり、直接呼び出すことができて問題はありませんが、以下の点に注意してください.
  • 厳格大文字・小文字
  • パラメータは文字列でなければならない
  • 付加パラメータattach値の最大長さは127
  • フロントエンドパラメータを受信したら、必ず構成対象を書くWeixinJSBridge.invokegetBrandWCPayRequestリクエスト中、対象であることに注意!!!相手!!相手!!フロントエンドとコミュニケーションをとるうちにフロントエンドがパラメータを文字列に変えて書いたgetBrandWCPayRequest中に入ったので、残業して資料を調べてみたらここの問題だった
  • このステップでは、次のエラーが発生します.
  • :appId(パラメータグループ全体が対象でないためエラー)
  • chooseWXPay:fail(開発者ツールで微信決済をデバッグすることはできませんが、ツールでこのエラーを報告します.実はネットで調べた資料の山ほどで解決したと言われています)
  • この穴の問題は、
    各種パラメータはドキュメントと照らし合わせて書き、フォーマットが正しい.
    坑三:支払い成功コールバック
    コールバックを支払う例に書き換える方法がありますNotifyProcess別の業務を書くならいいでしょうnotify.phpはファイルに書いてから別のコールバックインタフェースを書いてこのクラスを要求します.こちらでは、コールバックデータを返す方法を書き直しました.コールバックのピットは、コールバック業務が処理された後、最後に以下を追加することです.
  • return '';

  • そうでなければ、微信はあなたのコールバックを受け取っていないので、コールバックを5回繰り返して停止し、コールバックにビジネスが書かれている場合は操作を繰り返します.
    この穴は
    コールバック終了は成功したxml応答を返すことに注意してください.
    END
    ここ数日、微信決済で一時的に遭遇した問題はこれだけで、細部に注意するしかないでしょう.登った穴は記録してから遭遇すれば処理がわかります.
    ああ、それから微信の支払いに関する問題はネット上でたくさん検索できます...しかし、自分が出会ったものと一致するとは限らないし、ほとんどが長い間...
    このわずかな穴.