微信紅包接口調試過程中一直提示“CA證書出錯,請登陸微信支付商戶平台下載證書”,經反復調試,大致解決方法如下:
1.首先確保CA證書的路徑是否正確,一定得是絕對路徑,因為是PHP開發的,這里需要三個pem證書
2.確保服務器支持,新浪雲的sae,經測試支持不是很好,一直報錯,換用其他服務器后,一次通過
POST紅包證書的代碼部分如下:
function post( $strXml) {
$url='https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//因為微信紅包在使用過程中需要驗證服務器和域名,故需要設置下面兩行
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // 只信任CA頒布的證書
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 檢查證書中是否設置域名,並且是否與提供的主機名匹配
curl_setopt($ch, CURLOPT_SSLCERT,'/var/www/html/hongbao/apiclient_cert.pem');
curl_setopt($ch, CURLOPT_SSLKEY,'/var/www/html/hongbao/apiclient_key.pem');
curl_setopt($ch, CURLOPT_CAINFO, '/var/www/html/hongbao/rootca.pem'); // CA根證書(用來驗證的網站證書是否是CA頒布)
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $strXml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}