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

下面由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

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

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

立即學習PHP免費學習筆記(深入)”;

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

$data=I("post.");//項目中這樣寫,導致支付寶傳來的數據部分特殊字符被過濾,具體主要是fund_bill_list和sign這兩部分 $data=$_POST;//寫成這樣就好了

還有一點:

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

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享