WeChat支払いAPIv3支払い通知非同期検証が失敗したPHP

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

おすすめ

転載: blog.csdn.net/ny18002122997/article/details/112915293