微信公眾號支付JSAPI網頁,total_fee錯誤不正確,header重定向參數丟失,無法獲取訂單號和金額解決


微信公眾號支付官方demo錯誤,

公眾號支付只能用在微信里,也就是微信內部瀏覽器.

1.到WxPayHubHelper.php文件 JsApi_pub()類下createOauthUrlForCode($redirectUrl)方法, 第二個參數
改為 $urlObj["redirect_uri"] = urlencode($redirectUrl); //對$url變量進行url編碼 不然header重定向時無法獲取訂單號和金額

2.wx.jsapi.php這個文件在header重定向后,get,post等方式傳遞的參數就沒有了,不過重定向的URL里面有個STATE,可以把數據放里面,就OK了.具體看代碼.

文件為wx.jsapi.php

if (!isset($_GET['code']))  
{  
    //觸發微信返回code碼  
    $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
    //重定向的URL里面有個STATE,把GET到的數據參數放在一個數組后轉換成json格式的字符串            
    $state = json_encode(array(  
               "bill_no" => $data["bill_no"],  //訂單號           
               "title" => $data["title"],  //標題
               "return_url" => $data["return_url"],  //返回地址
               "total_fee" => $data["total_fee"] //金額
            ));  
    //替換這個STATE            
    $url = str_replace("STATE", $state, $url);
    //重定向后會帶上state參數,開發者可以填寫a-zA-Z0-9的參數值,最多128字節    
    Header("Location: $url");  
} else {  
    //獲取code碼,以獲取openid  
    $code = $_GET['code'];  
    $jsApi->setCode($code);  
    $openid = $jsApi->getOpenId();  
    $state = $_GET['state'];  
    $state = str_replace("\\", "", $state);  //去掉\\要不解析不了
    $param = json_decode($state, true);  //解析
    $data["bill_no"] = $param['bill_no'];  //訂單號
    $data["total_fee"] = $param['total_fee']; //金額
    $data["title"] = $param['title'];      //標題
    $data["return_url"] = $param['return_url'];      //返回地址
}  
$data["openid"] = $openid;

 


免責聲明!

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



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