• 微信小程序支付获取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);//严格校验
            }
            
  • 相关阅读:
    Django 初试水(一)
    自己动手系列----使用数组实现一个简单的Set
    自己动手系列----使用数组实现一个简单的Map
    DB2中的MQT优化机制详解和实践
    Airy Memory 内存清理 + 注册码
    eclipse 工具翻译插件安装
    用sysdba登录oracle 11g数据库时遇到已连接到空闲例程 ora-013113
    Firewall 防火墙规则
    未找到段的定义
    ORACLE 锁表的解决方法 ORA-00054
  • 原文地址:https://www.cnblogs.com/zdzdbk/p/11351673.html
Copyright © 2020-2023  润新知