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;
        }

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

  • 相关阅读:
    C#流(stream)
    高并发图片(缩略图)处理中间层服务架构设计
    WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化
    我们一起学习WCF 第六篇文件传输
    远程服务器返回了意外相应:(413) Request Entity Too Large。
    三层架构
    传说中的WCF(9):流与文件传输
    分享WCF文件传输---WCFFileTransfer
    分享基于EF+WCF的通用三层架构及解析
    Winform开发框架之框架演化
  • 原文地址:https://www.cnblogs.com/xiaoqian1993/p/5891570.html
Copyright © 2011-2022 走看看