zoukankan      html  css  js  c++  java
  • 微信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;
        }

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

  • 相关阅读:
    Linux下新建服务
    查看MYSQL日志(包含最近锁表日志)
    Linux后台运行进程
    MYSQL分析慢查询
    Linux下打开超大文件方法
    通过文件列表打包文件
    linux学习笔记<基本知识普及>
    虚拟机的安装
    Android NDK编程,引入第三方.so库
    linux下软件安装与卸载
  • 原文地址:https://www.cnblogs.com/xiaoqian1993/p/5891570.html
Copyright © 2011-2022 走看看