微信小程序支付获取params的时候使用JsApiPay失败

昨天做一个微信小程序支付的时候调取JsApiPay获取params发现一直失败,因为之前一直使用的JsApiPay并没有出现问题,以为是自己参数错误,测试后发现一直返回为空,先看代码

      $this->load->library('wx/JsApiPay');
        // // 统一下单
        $input = new WxPayUnifiedOrder();

        $input->SetMch_id($mchid);
        $input->SetAppid($appid);
        $input->SetBody("小程序商品支付");
        $input->SetAttach('订单号123456789');
        $input->SetOut_trade_no($ordersnPlus);
        $input->SetTotal_fee(number_format(29900);
        $input->SetTime_start(date("YmdHis"));
        $input->SetTime_expire(date("YmdHis", time() + 600));
        $input->SetGoods_tag("test");
        $input->SetNotify_url("https://****.com");
        $input->SetTrade_type("JSAPI");
        $input->SetOpenid($openid);
 
        try
        {
            $unifiedOrder = WxPayApi::unifiedOrder($input);
           
        }
        catch (Exception $e)
        {
            $this->response($e, REST_Controller::HTTP_OK);
          
        }

        $params = $this->jsapipay->GetJsApiParameters($unifiedOrder);

不清楚为什么为空,按理说如果有问题应该走catch的,看了下错误提示也很详细,然后打印了下 $unifiedOrder发现提示了一个curl错误,错误码是60,然后百度发现是微信小程序SDK中curl需要https,不知道算不算BUG,之前也没有使用https没有出问题,

解决方案是在wxPayAPI.php文件中大概565行的


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

 

 替换为

     if(stripos($url,"https://")!==FALSE){
            curl_setopt($ch,CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
            curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
        }else{
            curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
            curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
        }
        

 

转载于:https://www.cnblogs.com/zdzdbk/p/11351673.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值