• 微信支付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: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)
  • 相关阅读:
    vscode sftp 本地目录设置问题
    Zend where or怎么传
    docker如何查看最近创建的容器
    基于apline构建php7+nginx
    修改layui tree组件支持上移下移
    mysql千万级数据表如何删除
    filezilla 链接ftp不显示本地目录 “您没有权限列出该目录内容”
    php使用socket通过tcp通信及php16进制求和校验位计算
    Session must be started before any output has been sent to the browser;问题解决
    mysql数据库中的union和union的区别(示例演示)
  • 原文地址:https://www.cnblogs.com/mracale/p/7170457.html
Copyright © 2020-2023  润新知