前几天做微信支付的时候遇到了2个问题。
1.微信支付调用JSAPI缺少参数:appid
2.当前页面的URL未注册
关于第一个问题,在“微信开发者”工具上调试之后发现是因为签名不对,这个在浏览器里好像是检查不出来的。修改签名之后一切就正确了。
2.当前页面的URL未注册
这个问题主要是在iphone上出现的。
在微信商家平台上,支付url只能填写5个。并且要具体到最后一个目录。
假设我的支付页面是
wxpay/order/pay/123
那么支付页面就要写到
wxpay/order/pay/
最后一个才是可以更改的。
举一个例子
A 代表 商品详情页 wxpay/order/A/xx
B 代表 商品购买页 wxpay/order/B/xx
C 代表 订单生成页(也就是付钱页) wxpay/order/C/xx
在iphone上,它只记录了你的第一个页面,也就是A,但是你的实际支付页面是C,所以在此就需要一个强制刷新。
如果有出现这个问题,可以先强制刷新试一下,如果不可行,那么就不用看下面的方法了。
强制刷新的办法是
location.reload([true]);
如果直接放这么一句话,就会无限刷新,所以此时要在外边加一层判断,
componentDidMount() {
let {reloadState} = this.props.state;
if (reloadState) {
dispatch(changeReloadState());
//IOS 不能识别支付目录,需要强制刷新一次`
location.reload([true]);
}
}
在全局中声明一个变量,true。等初始化的时候,刷新页面,并且修改为false
export let changeReloadState = () =>{
return {
type:ActionType.ORDER_PAY_CHANGE_RELAOD_STATE,
payload:{reloadState:false}
}
}