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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM