WeChat Payv3非同期検証に失敗しました
ここでは、通常、フレームワークに付属するリクエストを通じてパラメーター(メッセージの本文)を受け取ります。
例:TP6:$ this-> request-> param();
ここで、この受信メソッドを使用すると、json変換の検証は失敗します。
ネイティブの受信方法を使用する必要があります:file_get_contents( 'php:// input');
受信後、署名の検証のためにこのデータを直接取得します。
次のコードを添付してください。
public function verifySign() { $ timestamp = "ヘッダーのタイムスタンプ"; $ nonce = "ヘッダーのランダムな文字列"; $ signature = "ヘッダーの署名"; $ certZs = "プラットフォーム証明書"; / / $ data =の$ this - >要求- >のparam(); $データ=のfile_get_contents( 'PHP://入力'); $メッセージ= "$タイムスタンプ\ nは$ N $データ\ nは\ナンス"; //学校は、署名を確認し た場合(!$ this-> verify($ message、$得る、$ certZs)){ throw new \ Exception( 'verification failed'、123456); } } 123456789101112131415161718