PHP WeChat 支払いの署名が失敗しました
モバイル決済の急速な発展に伴い、WeChat 支払いはますます多くの人に選ばれる支払い方法になりました。ただし、PHP を使用して WeChat 決済を実装する場合、署名が失敗する問題が発生する場合がありますので、この記事ではその解決策をいくつか紹介します。
- キーと証明書を確認する
WeChat 決済を使用する場合、加盟店番号やキーなどのパラメータを設定する必要があります。署名が間違っている場合は、キーが間違っていることが原因である可能性があります。
まず、加盟店番号とキーが正しいかどうかを確認してください。次に、証明書を使用する必要がある場合は、証明書が正常にインポートされたかどうか、および証明書のパスワードが正しいかどうかを確認する必要があります。
- データ形式を確認する
WeChat で支払いを行う場合、関連するパラメーターを指定された形式で渡す必要があります。パラメータの形式が正しくない場合も、署名が失敗する原因になります。
支払いパラメーターを作成するときは、次の点に注意する必要があります:
- パラメーター名の ASCII コードは、小さいものから大きいものへ (辞書順) にソートされます。
パラメータの値に中国語が含まれており、URL エンコードする必要がある場合; - パラメータ名とパラメータ値は「=」で接続され、パラメータは「&」で接続されます。 ##最後に、SHA1 署名用にマーチャント キーを追加する必要があります。
-
- 正しい署名方法を設定する
- WeChat 支払いの署名には MD5 と HMAC-SHA256 の 2 つの方法があります。署名方法は実際の署名方法に応じて設定する必要があります。状況。
WeChat 支払い時に署名の失敗を示すエラー メッセージが返された場合は、返された結果の err_code_des パラメーターを表示して、問題のトラブルシューティングに役立つ詳細なエラー情報を取得できます。
タイムスタンプとランダム文字列を確認する
- 支払いリクエストを行う際、ランダム文字列とタイムスタンプを設定する必要があります。タイムスタンプの有効期限が切れているか、ランダム文字列が無効な場合は、 , 署名が失敗する可能性があります。
PHP コードでは、time() 関数を使用して現在のタイムスタンプを取得し、rand() 関数を使用してランダムな文字列を生成できます。
PHP のバージョンと拡張機能を表示する
- PHP を使用して WeChat 支払いを実装する場合は、PHP バージョンが 5.4 以降であることを確認する必要があり、curl 拡張機能は次のとおりである必要があります。有効になります。
署名エラーが発生した場合は、phpinfo() 関数を実行して問題のトラブルシューティングを行うことで、現在の PHP バージョンと有効な拡張機能を確認できます。
WeChat Payment 開発ドキュメントを参照してください
- 上記の方法のいずれも署名失敗の問題を解決できない場合は、WeChat Payment の公式ドキュメントを参照して次の情報を見つけることができます。より詳細な解決策については、WeChat Pay サポート チームにお問い合わせください。
概要
PHP WeChat 支払いの署名が失敗する理由はたくさんありますが、そのほとんどは、キーと証明書の確認、データ形式の確認、正しい署名方法の設定、チェックを行うことで解決できます。タイムスタンプとランダム文字列、PHP のバージョンと拡張子を確認し、WeChat 決済開発ドキュメントを参照して解決してください。それでも問題が解決できない場合は、WeChat 支払いサポート チームにお問い合わせください。
以上がPHP WeChatの支払い署名が失敗した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。