微信支付:微信环境下JSSDK支付处理、移动H5页面微信支付常见问题处理

微信环境下支付

在微信环境下,调用微信支付,按照jssdk文档里的写法,直接调用支付方法就行。

wx.chooseWXPay({
  timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
  nonceStr: '', // 支付签名随机串,不长于 32 位
  package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
  signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
  paySign: '', // 支付签名
  success: function (res) {
    // 支付成功后的回调函数
  }
});

需要注意的地方:

  • 调用chooseWXPay方法时,需要确保 wx.ready 状态下
  • 在这种支付下,微信支付后台会配置相应的路径,前端hash模式的路由,需要进行处理。
    用户访问的页面为:
    http://test.com/index.html#/pay/12312312
    在这样的页面路径下,发起支付,会报错。需要处理成:
    http://test.com/index.html?#/pay/12312312
    带上? 让微信支付忽略#及后面的内容

移动端网页H5支付

微信h5支付更简单一些。
正常操作下,前端从后台接口能直接拿到MWEB_URL, 使用location.href=MWEB_URL 就可以直接跳转支付。

在微信支付文档里列出来的常见问题中,出在前端的,主要是referer值问题。正常情况下,用a标签或location.href方式,都会带上referer值,只有当从https链接是往http链接跳转时,才不会带上。
** 缺用户真实IP导致 支付时出现商家参数格式错误**。
就是后端生成链接时,没有带上用户访问页面的真实ip导致的。官方文档获取ip指引

前端是无法获取用户真实ip的,真实ip需要后端拿。
解决这个问题:

  • 方法一、后端自己取用户访问链接时的真实ip,然后生成支付链接
  • 方法二、后端单独出一个获取ip的接口,前端先调接口拿到ip,再在调生成支付链接接口时,把这个ip作为参数传往后台。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章