zoukankan      html  css  js  c++  java
  • 微信支付curl出错及错误码解决方案

    关键字:微信支付 curl出错 错误码6 错误码7 错误码28 错误码52 错误码58 错误码60 错误码77 
    作者:方倍工作室
    原文: http://www.cnblogs.com/txw1958/p/wxpay-curl-error.html

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

    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:wwwrootfangbeilibWxPay.Api.php:564 Stack trace: #0 C:wwwrootfangbeilibWxPay.Api.php(62): 
    WxPayApi::postXmlCurl(‘<xml><appid><![...‘, ‘https://api.mch...‘, false, 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,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: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, 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)
  • 相关阅读:
    看了一些Tab标签的效果,正好在学习前端,自己动手也写个把~
    js时间的操作,为了让cookie在当天24点过期~
    《转载》CSS换行问题
    【PHP项目】form表单的enctype属性
    php中处理字符串的常见函数
    PHP加密函数
    PHP判断时关于null,0,true,flase的值
    获取PHP页面的当前文件名(包括后缀名)
    php中关于empty()函数是否为真的判断
    【PHP】判断变量是否为控
  • 原文地址:https://www.cnblogs.com/-mrl/p/6066616.html
Copyright © 2011-2022 走看看