微信红包接口返回"CA证书出错,请登录微信支付商户平台下载证书"错误

 
0 6536
泡沫随风飘
2016-05-25 21:11

微信红包接口返回

今天在调试微信红包接口的时候,出现“CA证书出错”的错误,弄了一晚上,才发现是路径上的斜杠(/)或反斜杠(/)的原因。现在把过程记录下,供以后参考。

1、部分源码

$certs = array(

'SSLCERT' => getcwd().'\Application\Common\hongbao\apiclient_cert.pem',

'SSLKEY' => getcwd().'\Application\Common\hongbao\apiclient_key.pem',

'CAINFO' => getcwd().'\Application\Common\hongbao\rootca.pem',

);


$response = $this->http_request($this->URL, $xml, $certs, 'post');

function http_request($url, $fields, $params, $method='get', $second=30){

$ch = curl_init();

curl_setopt($ch,CURLOPT_TIMEOUT, $second);

curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);

curl_setopt($ch,CURLOPT_HEADER,FALSE);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);

if (isset($params)) {

curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');

curl_setopt($ch,CURLOPT_SSLCERT, $params['SSLCERT']);

curl_setopt($ch,CURLOPT_SSLKEYTYPE, 'PEM');

curl_setopt($ch,CURLOPT_SSLKEY, $params['SSLKEY']);

curl_setopt($ch, CURLOPT_CAINFO, 'PEM');

curl_setopt($ch,CURLOPT_CAINFO, $params['CAINFO']);

}

print_r($params['CAINFO']);

if ($method=='post') {

curl_setopt($ch,CURLOPT_POST, true);

curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);

}

$data = curl_exec($ch);

if(!$data){

$error = curl_errno($ch);

$data='<xml><err_code>'.$error.'</err_code><err_code_des>curl'.$error.'</err_code_des></xml>';

}

curl_close($ch);

return $data;

}

返回结果如下:

<xml>

<return_code><![CDATA[SUCCESS]]></return_code>

<return_msg><![CDATA[CA证书出错,请登录微信支付商户平台下载证书]]></return_msg>

<result_code><![CDATA[FAIL]]></result_code>

<err_code><![CDATA[CA_ERROR]]></err_code>

<err_code_des><![CDATA[CA证书出错,请登录微信支付商户平台下载证书]]></err_code_des>

<mch_billno><![CDATA[126992330120******915305913]]></mch_billno>

<mch_id>126*********01</mch_id>

<wxappid><![CDATA[wx9388********a81]]></wxappid>

<re_openid><![CDATA[oC7bosgutIjMmq*******leSU]]></re_openid>

<total_amount>100</total_amount>

</xml>

检查证书路径,都是正确的。然后就是反复的重新下载证书,修改curl参数,测试,测试结果要么不是ca证书出错就是curl出错。

<xml><err_code>77</err_code><err_code_des>cur77</err_code_des></xml>

测试中打印出证书路径,才发现路径中的斜杠和反斜杠的问题

Array

(

[SSLCERT] => /data/home/qyu2064360001/htdocs\Application\Common\hongbao\apiclient_cert.pem

[SSLKEY] => /data/home/qyu2064360001/htdocs\Application\Common\hongbao\apiclient_key.pem

[CAINFO] => /data/home/qyu2064360001/htdocs\Application\Common\hongbao\rootca.pem

)

系统是linux,路径中用的是斜杠“/”,而代码中后半段用的是反斜杠“\”,最后把路径的统一用斜杠“/”,测试,发送成功。

<xml>

<return_code><![CDATA[SUCCESS]]></return_code>

<return_msg><![CDATA[发放成功]]></return_msg>

<result_code><![CDATA[SUCCESS]]></result_code>

<mch_billno><![CDATA[12699233*******50817271856]]></mch_billno>

<mch_id>126*****1</mch_id>

<wxappid><![CDATA[wx9388*****a81]]></wxappid>

<re_openid><![CDATA[oC7bosgut*****mxleSU]]></re_openid>

<total_amount>100</total_amount>

<send_listid><![CDATA[0010569217*****0797713673]]></send_listid>

<send_time><![CDATA[20160525081728]]></send_time>

</xml>

百度搜索了下,linux中用斜杠“/”来分隔路径,windows则反之。

本文内容由互联网用户自发贡献,版权归作者所有,本站不拥有所有权也不承担相关法律责任。如需转载请按以下形式注明来源: 复制

文章来源:阿里云牛优惠资讯网
文章标题:微信红包接口返回"CA证书出错,请登录微信支付商户平台下载证书"错误
原文地址:https://aliyunnew.com/a/90.html
发布时间:2016-05-25 21:11
相关话题
没有相关话题
猜您喜欢
回帖
  • 抢占沙发~~