在微信支付,设置计划任务中自动退款操作curl报58错误

业务逻辑:商城用户下单未付款,15分钟自动给用户退款

我的方法:在宝塔写计划任务,自动执行查询未付款的订单,并执行微信退款流程

这是我的curl请求微信支付的方法

private function postXmlSSLCurl($xml,$url,$second = 30){
        $ch = curl_init ();
        $MENU_URL=$url;
        //证书路径,示例:/upload/wechat/123456.pem
        $sslcert = getcwd().$this->payConfig['client_cert'];
        //密钥路径,示例:/upload/wechat/123456.pem
        $sslkey = getcwd().$this->payConfig['client_key'];
        
        curl_setopt ( $ch, CURLOPT_URL, $MENU_URL );
        curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, "POST" );
        curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
        curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );
        curl_setopt($ch,CURLOPT_SSLCERT,$sslcert);
        curl_setopt($ch,CURLOPT_SSLKEY,$sslkey);
        curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
        curl_setopt ( $ch, CURLOPT_AUTOREFERER, 1 );
        curl_setopt ( $ch, CURLOPT_POSTFIELDS, $xml);
        curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );

        $data = curl_exec ($ch);
        //返回结果
        if($data){
            curl_close($ch);
            return $data;
        }else{
            //return false;
            $error = curl_errno($ch);
            echo "curl出错,错误码:$error"."<br>";
            echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>";
            addExceptionLog('退款curl请求错误','错误码:'.$error);
            curl_close($ch);
            return false;
        }
    }

上述方法在计划任务中报错58,提示客户端路径不对。

但是在控制器中调用没问题,后来在计划任务使用getcwd()来拼接相对路径,还是不行。

最后在计划任务中输入发现getcwd()输出是/usr/bin/server文件夹,在控制器中输入就是站点目录,

恍然大悟,后来将证书和密码写成绝对路径就行了

$sslcert = '/www/wwwroot/www.bdt177.com/public/upload/wechat/cert.pem';
$sslkey = '/www/wwwroot/www.bdt177.com/public/upload/wechat/key.pem';

不然不这样写的话,curl时加载证书和密钥的路径会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值