微信紅包接口調試過程當中一直提示「CA證書出錯,請登錄微信支付商戶平臺下載證書」,經反覆調試,大體解決方法以下:html
1.首先確保CA證書的路徑是否正確,必定得是絕對路徑,由於是PHP開發的,這裏須要三個pem證書api
2.確保服務器支持,新浪雲的sae,經測試支持不是很好,一直報錯,換用其餘服務器後,一次經過服務器
POST紅包證書的代碼部分以下:微信
function post( $strXml) {curl
$url='https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';post
$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;
}url