<blockquote>因為GetOpenid() 方法里有個Header跳轉(zhuǎn)的操作,所以在GetOpenid()方法之前生成的訂單信息會丟失,所以在這里要做一下處理:</blockquote>
$openId = $tools->GetOpenid($json);
//print_r($_GET);
$json_back = '';
$wx_back_arr = [];
foreach ($_GET as $k => $v) {
if($v == null){
$json_back .= $k ;
}else{
$wx_back_arr[$k] = $v ;
}
}
$json_arr = json_decode($json_back,true);
print_r($json_arr);
echo '<br>';
print_r($wx_back_arr);
// echo $openId;
exit;

在打印366行的$order時,會報這樣的錯誤:
Array
(
[return_code] => FAIL
[return_msg] => invalid total_fee / 簽名錯誤
)

<blockquote>原因:充值金額0.01,在傳給GetOpenid() 方法后,再傳回控制器時,會變成0_01,所以在這里你,充值金額以分為單位(微信官方也說了,total_fee 單位為分,只能為整數(shù))</blockquote>
所以在剛收到時就給其變?yōu)榉?,并轉(zhuǎn)換成int型,因為有時候,float(7) 后邊莫名出現(xiàn)7.000000000001 這樣的情況:

<blockquote>不太確定在Header的url傳參會不會影響URL注冊問題,估計應(yīng)該不會,因為在Header后,微信服務(wù)器會在URL加入code和state,另一個辦法是可以不用get傳參,把訂單數(shù)據(jù)存到cookie里</blockquote>
在微信公眾號支付里:

由于392行函數(shù)的調(diào)用,會導(dǎo)致重新請求該頁面,此時,350里收不到get參數(shù),從而導(dǎo)致352行的寫法會報錯,換用353行的寫法就行了。

392行里的coin參數(shù)是作為標記用的,用來在同一項目的不同地方調(diào)用該方法。

重定向時,get到的參數(shù)的保存問題:



訂單金額的問題:如果金額為0會報下面的錯誤:


<blockquote>FatalThrowableError
in WxPay.Api.php line 326:Cannot throw objects that do not implement Throwable</blockquote>