react 微信公众号支付

前几天做微信支付的时候遇到了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}
  }
}

你可能感兴趣的:(react 微信公众号支付)