您现在的位置是:首页 > 其他

李清波 2019-04-21 其他 519

关于微信退款出现错误代码:52的解决方法

我们在开发微信支付的过程中,在退款的时候可能会出现错误代码:52,其实一般来说都是证书的问题。


我们可以找一下这个公共函数:postXmlCurl,下面我们有写这个函数的代码


第一步、就是安装,并下载证书


第二步、就是替换证书的文件路径


//作用:使用证书,以post方式提交xml到对应的接口url
function postXmlSSLCurl($xml,$url,$second=30){
    $ch = curl_init();
    //超时时间
    curl_setopt($ch,CURLOPT_TIMEOUT,$second);
    //这里设置代理,如果有的话
    //curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8');
    //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
    //设置header
    curl_setopt($ch,CURLOPT_HEADER,FALSE);
    //要求结果为字符串且输出到屏幕上
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
    //设置证书
    //使用证书:cert 与 key 分别属于两个.pem文件
    //默认格式为PEM,可以注释
    curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLCERT, getcwd() . '/wechat_cert/apiclient_cert.pem');
    //默认格式为PEM,可以注释
    curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLKEY, getcwd() . '/wechat_cert/apiclient_key.pem');
    //post提交方式
    curl_setopt($ch,CURLOPT_POST, true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);
    $data = curl_exec($ch);
    //返回结果
    if($data){
        curl_close($ch);
        return $data;
    }else { 
        $error = curl_errno($ch);
        echo "curl出错,错误码:$error"."<br>"; 
        echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>";
        curl_close($ch);
        return false;
    }
}


如果上面那两个操作都完成了,估计不会再报:错误代码:52了


1555858744553173.png

评论