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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信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;
    }

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

 

以上是关于微信v3 JSAPI最新接口错误 get_brand_wcpay_request:fail的主要内容,如果未能解决你的问题,请参考以下文章

jsapi微信支付v3版

微信支付 jsapi接口怎么调

微信支付时jsapi缺少参数appid怎么办

jsapi_ticket用于调用微信JS接口的临时票据

调用支付jsapi缺少参数是啥意思

速入门微信硬件蓝牙jsapi