首頁 > php框架 > ThinkPHP > thinkphp網站支付寶非同步回調驗簽失敗問題

thinkphp網站支付寶非同步回調驗簽失敗問題

藏色散人
發布: 2020-07-03 13:26:58
轉載
3446 人瀏覽過

下面由thinkphp框架教學專欄為大家介紹thinkphp網站支付寶異步回調驗簽失敗問題,希望對需要的朋友有幫助!

thinkphp網站支付寶非同步回調驗簽失敗問題

手頭一個項目,用到了支付寶手機網站支付,項目用tp做的,下載支付寶SDK後修改後調起正常,同步接口也可訪問,但異步介面驗簽總是錯誤失敗,fail,追蹤到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
登入後複製

百度無果,有說證書錯誤的亂七八糟,本人換證書也沒用。

後來偶然發現輸入有問題,最後找到一個原因:

這裡接收支付寶非同步通知的時候,不能使用I函數

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

還有一點:

無論簽章驗證是否正確,openssl_error_string()總是輸出error:0906D06C:PEM routines:PEM_read_bio:no start line,這是我這邊的情況,具體未深究。

以上是thinkphp網站支付寶非同步回調驗簽失敗問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板