记一次微信JSAPI支付URL出现两个订单号的问题,支付页面有?问号
如果发起jsapi支付页面的url类似
/pay.php?order_no=12345678
这种格式的话,那么在发起jsapi支付的时候,做完网页登录授权也就是获取openid后,页面跳转回来,此时你会发现url变成了
/pay.php?order_no=12345678order_no=12345678
多了个
order_no=12345678
导致页面上获取订单号失败,从而支付不能成功拉起。
出现这个问题的原因就是api接口在拼接当前页面(也就是获取openid后返回的页面)完整url时出现了问题
问题解决
api包里搜索文件"WxPay.JsApiPay.php",找到后打开搜索"GetOpenid"函数,将
$baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']);
改成
if(strpos($_SERVER['REQUEST_URI'],'?') === false){ $baseUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']; }else{ $baseUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; }
保存即可。
最新版本的接口不知道是否还有这个问题,如果遇到同样问题的朋友可以参考下!