微信支付PHP開發(fā)問題總結(jié)
-
wechatpay-php 報錯
Cannot load privateKey from// 從本地文件中加載「商戶API私鑰」,「商戶API私鑰」會用來生成請求的簽名 $privateKeyFilePath = '/app/conf/apiclient_key.pem'; $privateKeyInstance = Rsa::from($privateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);處理方法是帶 file 協(xié)議,例如:
$privateKeyInstance = Rsa::from("file://".$privateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);
-
輸入源“/appid”映射到字段“公眾號ID”必填性規(guī)則校驗失敗,此字段為必填項
使用官方推薦的 wechatpay-php 開發(fā)庫,按照微信支付文檔中心APP支付接入前準備 內(nèi)容確認APPID 、mchid (商戶號)、商戶API證書序列號、APIv3密鑰這幾個參數(shù)。
-
如何獲取微信支付平臺證書
/usr/local/php/bin/php /data/html/api_kumayi/vendor/bin/CertificateDownloader.php -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath} -c ${wechatpayCertificateFilePath}參數(shù)說明:
-k 是API v3 密鑰;
-m 是商戶號;
-f 是商戶的私鑰文件
-s 是商戶證書的序列號
-o 是下載成功后保存證書的路徑,可選參數(shù)
-c 是微信支付證書,用于驗簽; 非必需參數(shù)
注意:
第一次下載證書對于微信支付平臺的應(yīng)答,需要使用平臺證書來進行驗簽;但平臺證書只能通過 獲取平臺證書接口 下載,所以當?shù)谝淮稳カ@取證書時,會出現(xiàn)個“死循環(huán)”。
為解決這個“死循環(huán)”,可以臨時跳過驗簽,來獲得證書。也就是說可以不提供微信支付證書參數(shù)(-c 參數(shù))來下載,在下載得到證書后,工具會使用證書對報文的簽名進行驗證,如果通過則說明證書正確。
參考文檔:
wechatpay-php 開發(fā)者庫: https://github.com/wechatpay-apiv3/wechatpay-php
APP支付官方文檔:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_5_1.shtml
微信支付接口規(guī)則 :https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay3_1.shtml
API證書及密鑰: https://kf.qq.com/faq/161222NneAJf161222U7fARv.html