微信支付curl出错及错误码解决方案

Posted mracalele

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信支付curl出错及错误码解决方案相关的知识,希望对你有一定的参考价值。

1. curl错误码6

出现场景

复制代码
php Fatal error:  Uncaught exception \'WxPayException\' with message \'curl出错,错误码:6\' in WxpayAPI_php_v3/lib/WxPay.Api.php:565
Stack trace:
#0 WxpayAPI_php_v3/lib/WxPay.Api.php(62): WxPayApi::postXmlCurl(\'<xml><appid><![...\', \'https://api.mch...\', false, 6)
#1 WxpayAPI_php_v3/cyzjqpzf/jsapi.php(83): WxPayApi::unifiedOrder(Object(WxPayUnifiedOrder))
#2 {main}
  thrown in WxpayAPI_php_v3/lib/WxPay.Api.php on line 565
[10-Oct-2015 16:50:58 Asia/Shanghai] PHP Fatal error:  Uncaught exception \'WxPayException\' with message \'curl出错,错误码:6\' in WxpayAPI_php_v3/lib/WxPay.Api.php:565
Stack trace:
#0 WxpayAPI_php_v3/lib/WxPay.Api.php(62): WxPayApi::postXmlCurl(\'<xml><appid><![...\', \'https://api.mch...\', false, 6)
#1 WxpayAPI_php_v3/cyzjqpzf/jsapi.php(83): WxPayApi::unifiedOrder(Object(WxPayUnifiedOrder))
#2 {main}
  thrown in WxpayAPI_php_v3/lib/WxPay.Api.php on line 565
复制代码

原因分析

CURLE_COULDNT_RESOLVE_HOST(6)
无法解析主机。给定的远程主机没有得到解决。

解决方法

dns解析不了微信的域名,检查本地的dns服务器,或者在本地强制解析

复制代码
vi  etc/hosts

添加下面内容
101.227.143.34 open.weixin.qq.com
101.226.90.149 api.mch.weixin.qq.com
101.226.90.58 api.weixin.qq.com
复制代码

 

2. curl错误码60

出现场景

如下是运行微信支付测试代码时出错代码:

 

Fatal error: Uncaught exception ‘WxPayException‘ with message ‘curl出错,错误码:60‘ in C:\\wwwroot\\fangbei\\lib\\WxPay.Api.php:564 Stack trace: #0 C:\\wwwroot\\fangbei\\lib\\WxPay.Api.php(62): 
WxPayApi::postXmlCurl(‘<xml><appid><![...‘, ‘https://api.mch...‘, false, 6) #1 C:\\wwwroot\\fangbei\\pay\\jsapi.php(36): 
WxPayApi::unifiedOrder(Object(WxPayUnifiedOrder)) #2 {main} thrown in C:\\wwwroot\\fangbei\\lib\\WxPay.Api.php on line 564

原因分析

证书校验失败

解决方法

第538行

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验

修改为

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//严格校验

 

 

3. curl错误码58

出现场景

Fatal error: Uncaught exception \'WxPayException\' with message \'curl出错,错误码:58\' in C:\\wamp\\www\\API\\lib\\WxPay.Api.php on line 565 WxPayException: curl出错,错误码:58 in C:\\wamp\\www\\API\\lib\\WxPay.Api.php on line 565 证书路径正...

原因分析

证书路径错误

解决方法

windows服务器上证书路径使用绝对路径。

curl_setopt($ch, CURLOPT_SSLCERT, dirname(__FILE__).\'cert\'.DIRECTORY_SEPARATOR.\'apiclient_cert.pem\');
curl_setopt($ch, CURLOPT_SSLKEY, dirname(__FILE__).\'cert\'.DIRECTORY_SEPARATOR.\'apiclient_key.pem\');
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__).\'cert\'.DIRECTORY_SEPARATOR.\'rootca.pem\');

 Linux上使用相对路径

curl_setopt($ch, CURLOPT_SSLCERT, \'cert\'.DIRECTORY_SEPARATOR.\'apiclient_cert.pem\');
curl_setopt($ch, CURLOPT_SSLKEY, \'cert\'.DIRECTORY_SEPARATOR.\'apiclient_key.pem\');
curl_setopt($ch, CURLOPT_CAINFO, \'cert\'.DIRECTORY_SEPARATOR.\'rootca.pem\');

 

 

4. curl错误码52

出现场景

原因分析

证书路径错误

解决方法

方法同错误码58

 

 

5. curl错误码77

出现场景

原因分析

证书路径错误

解决方法

方法同错误码58

 

 

6. curl错误码28

出现场景

支付curl出错,错误码:28
/wxpay_native/WxPay.Api.php LINE: 563  
/wxpay_native/WxPay.Api.php(61):WxPayApi::postXmlCurl(\' #1  

原因分析

CURLE_OPERATION_TIMEDOUT(28)
操作超时。根据条件达到指定的超时期间。

解决方法

服务器网络和微信服务器连接时间太久,网速问题。

或者将超时时间设置长一些。比如将超时时间改为60

function postXmlCurl($xml, $url, $useCert = false, $second = 60)

以上是关于微信支付curl出错及错误码解决方案的主要内容,如果未能解决你的问题,请参考以下文章

黄聪:微信支付错误两个问题的解决:curl出错,错误码:60

微信支付:curl出错,错误码:60

微信支付:curl出错,错误码:60 阿星小栈

微信支付之扫码支付模式二

微信支付公众号支付redirect_uri域名与后台配置不一致,错误码10003

个体工商户怎么开通微信支付功能及收款码?