• 微信v3 JSAPI最新接口错误 get_brand_wcpay_request:fail


    WxPay.JsApiPay.php文件下

    原始接口代码

    /**
         * 
         * 获取jsapi支付的参数
         * @param array $UnifiedOrderResult 统一支付接口返回的数据
         * @throws WxPayException
         * 
         * @return json数据,可直接填入js函数作为参数
         */
        public function GetJsApiParameters($UnifiedOrderResult)
        {
            if(!array_key_exists("appid", $UnifiedOrderResult)
            || !array_key_exists("prepay_id", $UnifiedOrderResult)
            || $UnifiedOrderResult['prepay_id'] == "")
            {
                throw new WxPayException("参数错误");
            }
            $jsapi = new WxPayJsApiPay();
            $jsapi->SetAppid($UnifiedOrderResult["appid"]);
            $timeStamp = time();
            $jsapi->SetTimeStamp("$timeStamp");
            $jsapi->SetNonceStr(WxPayApi::getNonceStr());
            $jsapi->SetPackage("prepay_id=" . $UnifiedOrderResult['prepay_id']);
            $jsapi->SetSignType("MD5");
            $jsapi->SetPaySign($jsapi->MakeSign());
            $parameters = json_encode($jsapi->GetValues());
            return $parameters;
        }

    可修改为

    /**
         * 
         * 获取jsapi支付的参数
         * @param array $UnifiedOrderResult 统一支付接口返回的数据
         * @throws WxPayException
         * 
         * @return json数据,可直接填入js函数作为参数
         */
        public function GetJsApiParameters($UnifiedOrderResult)
        {
            if(!array_key_exists("appid", $UnifiedOrderResult)
            || !array_key_exists("prepay_id", $UnifiedOrderResult)
            || $UnifiedOrderResult['prepay_id'] == "")
            {
                throw new WxPayException("参数错误");
            }
            $jsapi = new WxPayJsApiPay();
            $jsapi->SetAppid($UnifiedOrderResult["appid"]);
            $timeStamp = time();
            $jsapi->SetTimeStamp((string)$timeStamp); // 本行代码加上原始加上双引号是想转换为字符串但是并没什么卵用需要手动强制转换
            $jsapi->SetNonceStr(WxPayApi::getNonceStr());
            $jsapi->SetPackage("prepay_id=" . $UnifiedOrderResult['prepay_id']);
            $jsapi->SetSignType("MD5");
            $jsapi->SetPaySign($jsapi->MakeSign());
            $parameters = json_encode($jsapi->GetValues());
            return $parameters;
        }

    也可以直接改

    WxPay.Data.php文件下的

    原始接口代码

    /**
        * 设置支付时间戳
        * @param string $value 
        **/
        public function SetTimeStamp($value)
        {
            $this->values['timeStamp'] = $value;
        }

    修改为

    /**
        * 设置支付时间戳
        * @param string $value 
        **/
        public function SetTimeStamp($value)
        {
            $this->values['timeStamp'] = (string)$value;
        }

    修改原理同上只需改一个文件即可

  • 相关阅读:
    圆上的整点
    学习笔记:用线性筛算不太常见的函数
    解题报告: luogu P1972
    解题报告: luogu P3907
    替罪羊树详解
    解题报告:luogu P2787
    解题报告:luogu P4170
    解题报告:luogu P4933
    10、.运维就是一场没有硝烟的战争
    九、模板层(三)
  • 原文地址:https://www.cnblogs.com/xiaoqian1993/p/5891570.html
Copyright © 2020-2023  润新知