ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp ウェブサイト Alipay の非同期コールバック署名検証失敗の問題

thinkphp ウェブサイト Alipay の非同期コールバック署名検証失敗の問題

藏色散人
藏色散人転載
2020-07-03 13:26:583386ブラウズ

thinkphp フレームワーク の次のチュートリアル コラムでは、thinkphp ウェブサイトでの Alipay の非同期コールバック署名検証の失敗の問題を紹介します。困っている友人の役に立てば幸いです。 !

thinkphp ウェブサイト Alipay の非同期コールバック署名検証失敗の問題

手元のプロジェクトはAlipayモバイルサイト決済を使用しています。プロジェクトはTPで作成されています。Alipay SDKをダウンロードして修正すると、正常に呼び出すことができます。インターフェースにもアクセスできますが、非同期です。インターフェース署名の検証は常にエラーで失敗します。これは、

AopClient.php の 580 行目まで追跡され、

if ("RSA2" == $signType) {
    $result = (bool) openssl_verify($data, base64_decode($sign), $res, OPENSSL_ALGO_SHA256);//这句报错
} else {
    $result = (bool) openssl_verify($data, base64_decode($sign), $res);
}

が出力されます。コードの一番下。

print_r(openssl_error_string());、出力は

error:0906D06C:PEM routines:PEM_read_bio:no start line

です。Baidu には結果がありません。証明書が間違っているという人もいます。証明書を変更しても無駄です。自分自身。

その後、入力に問題があることに偶然気づき、最終的に理由を見つけました:

Alipay の非同期通知を受信する場合、I 関数は使用できません

$data=I("post.");//项目中这样写,导致支付宝传来的数据部分特殊字符被过滤,具体主要是fund_bill_list和sign这两部分
$data=$_POST;//写成这样就好了

もう 1 つ:

署名検証が正しいかどうかに関係なく、

openssl_error_string() は常に error:0906D06C:PEM Lukes:PEM_read_bio:no start line## を出力します。 #. これは私の状況であり、詳細については詳しく調べていません。

以上がthinkphp ウェブサイト Alipay の非同期コールバック署名検証失敗の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。