最近在做支付寶支付,在本地測試一切正常,上傳到服務器就遇到報錯:
最近在做支付寶支付,在本地測試一切正常,上傳到服務器就遇到報錯:
Warning: openssl_sign() [function.openssl-sign]: Unknown signature algorithm. in
這種問題有兩種情況
1.php未開啟php_OpenSSL擴展
2.php版本過低,不支持OPENSSL_ALGO_SHA256這樣的參數
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
開啟openss擴展自行百度
服務器上PHP環境支持openssl_sign()但卻不支持 OPENSSL_ALGO_SHA256這樣的參數在php5.4.8以上版本才支持,低版本的是使用的SHA256,
報錯原因是支付寶的demo中AopClient.php文件裏使用到了這樣的語句:
if ("RSA2" == $signType) {
openssl_sign($data, $sign, $res,OPENSSL_ALGO_SHA256);
} else {
openssl_sign($data, $sign, $res);
}
解決辦法就是把 OPENSSL_ALGO_SHA256 改成 SHA256
if ("RSA2" == $signType) {
openssl_sign($data, $sign, $res,SHA256);
} else {
openssl_sign($data, $sign, $res);
}
註意:這個文件中共有三處,要全部修改好!
非常感謝linux交流群南寧的朋友,還有原著紫石頭的文章。
支付寶支付php的demo或sdk報錯 Warning: openssl_sign() [function.openssl-sign]: Unknown signature algorithm. in
最近在做支付寶支付,在本地測試一切正常,上傳到服務器就遇到報錯: