<blockquote>因为GetOpenid() 方法里有个Header跳转的操作,所以在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 单位为分,只能为整数)</blockquote>
所以在刚收到时就给其变为分,并转换成int型,因为有时候,float(7) 后边莫名出现7.000000000001 这样的情况:
<blockquote>不太确定在Header的url传参会不会影响URL注册问题,估计应该不会,因为在Header后,微信服务器会在URL加入code和state,另一个办法是可以不用get传参,把订单数据存到cookie里</blockquote>
在微信公众号支付里:
由于392行函数的调用,会导致重新请求该页面,此时,350里收不到get参数,从而导致352行的写法会报错,换用353行的写法就行了。
392行里的coin参数是作为标记用的,用来在同一项目的不同地方调用该方法。
重定向时,get到的参数的保存问题:
订单金额的问题:如果金额为0会报下面的错误:
<blockquote>FatalThrowableError
in WxPay.Api.php line 326:Cannot throw objects that do not implement Throwable</blockquote>