后端开发 \ PHP \ 微信支付curl出错及错误码解决方案

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

总点击834
简介:本文介绍微信支付开发集成过程中,常见的错误码及其解决方案。  1.curl错误码6出现场景PHPFatalerror:Uncaughtexception\'WxPayException\'withmessage\'curl出错,错误码:6\'inWxpayAPI_php_v3/lib/WxPay.Api.php:

本文介绍微信支付开发集成过程中,常见的错误码及其解决方案。

 

1. curl错误码6

出现场景

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

PHP Fatal error: Uncaught exception 'WxPayException' with message 'curl出错,错误码:6' in WxpayAPI_php_v3/lib/WxPay.Api.php:565Stack 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:565Stack trace:#0 WxpayAPI_php_v3/lib/WxPay.Api.php(62): WxPayApi::postXmlCurl('<xml><appid><![...',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

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

原因分析CURLE_COULDNT_RESOLVE_HOST(6)


无法解析主机。给定的远程主机没有得到解决。解决方法dns解析不了微信的域名,检查本地的dns服务器,或者在本地强制解析

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

vi etc/hosts添加下面内容101.227.143.34 open.weixin.qq.com101.226.90.149 api.mch.weixin.qq.com101.226.90.58 api.weixin.qq.com

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

 

2. curl错误码60

出现场景

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

 

Fatal error: Uncaught exception ‘WxPayException‘ with message ‘curl出错,错误码:60‘ in C:wwwrootfangbeilibWxPay.Api.php:564 Stack trace: #0 C:wwwrootfangbeilibWxPay.Api.php(62):

WxPayApi::postXmlCurl(‘<xml><appid><![...‘,‘https://api.mch...‘,6) #1 C:wwwrootfangbeipayjsapi.php(36):

WxPayApi::unifiedOrder(Object(WxPayUnifiedOrder)) #2 {main} thrown in C:wwwrootfangbeilibWxPay.Api.php on line 564

原因分析

证书校验失败

解决方法

第538行

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);

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

修改为

curl_setopt($ch,FALSE);

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

 

 


3. curl错误码58

出现场景

Fatal error: Uncaught exception 'WxPayException' with message 'curl出错,错误码:58' in C:wampwwwAPIlibWxPay.Api.php on line 565 WxPayException: curl出错,错误码:58 in C:wampwwwAPIlibWxPay.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,'cert'.DIRECTORY_SEPARATOR.'apiclient_cert.pem');

curl_setopt($ch,'cert'.DIRECTORY_SEPARATOR.'apiclient_key.pem');

curl_setopt($ch,'cert'.DIRECTORY_SEPARATOR.'rootca.pem');

 

 

4. curl错误码52

出现场景

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

原因分析

证书路径错误

解决方法

方法同错误码58

 

 

5. curl错误码77

出现场景

原因分析

证书路径错误

解决方法

方法同错误码58

 

 

6. curl错误码28

出现场景

支付curl出错,错误码:28

/wxpay_native/WxPay.Api.phpLINE: 563

/wxpay_native/WxPay.Api.php(61):WxPayApi::postXmlCurl(' #1

原因分析

CURLE_OPERATION_TIMEDOUT(28)

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

解决方法

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

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

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

 转自  http://www.cnblogs.com/txw1958/p/5221186.html

 部分解决方法也不正确,请参考原因

意见反馈 常见问题 官方微信 返回顶部