ホームページ > 記事 > PHPフレームワーク > thinkphp ウェブサイト Alipay の非同期コールバック署名検証失敗の問題
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 サイトの他の関連記事を参照してください。