标签:自己 timestamp 返回 失败 idg sig lis ack 字段
现在前端很多框架的前端路由都带#号,主要为了做到无刷新跳转页面。
在微信公众号做微信支付时,配置的支付路径比如是http://www.eee.com/#/order,在调微信支付的方法时错误信息是‘URL未注册’。
我的解决方案是,写一个专门做为微信支付的页面,ajax请求后台返回需要调取微信支付的数据(签名等信息),然后把这些信息暂存起来(可以用h5的缓存,记得支付完清掉,如果用node,可以用node的缓存,以自己的实际项目方便)。跳转到支付的页面
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body></body>
<script type="text/javascript">
document.addEventListener(‘WeixinJSBridgeReady‘, function onBridgeReady() {
  var request = {};
  if (sessionStorage && sessionStorage.wechatPayRequest) {
      request = JSON.parse(sessionStorage.wechatPayRequest);
  }
  WeixinJSBridge.invoke("getBrandWCPayRequest", {
    appId : request.appId,
    timeStamp : request.timeStamp,
    nonceStr : request.nonceStr,
    "package" : request.packageInfo,
    signType : request.signType,
    paySign : request.paySign
  }, function(res) {
    sessionStorage.wechatPayRequest = ‘‘
    if ("get_brand_wcpay_request:ok" == res.err_msg) {
      // 支付成功
    }else {
      // 支付失败
    }
  });
})
</script>
</html>
一个空的页面即可,此处package是关键字,所以需要后台返回一个新的字段代替package。
然后处理支付成功和支付失败的回调
再把这个页面在当前域名下配一个路径,比如当前项目域名是http://www.eeeee.com,就把页面域名指定为http://www.eeeee.com/pay/wechat
然后在微信公众号的后台把支付路径配置为http://www.eeeee.com/pay/
这个方法有个缺点,就是调取支付要跳转页面,用户体验不好,支付完成还要再跳转到相应的页面。
标签:自己 timestamp 返回 失败 idg sig lis ack 字段
原文地址:http://www.cnblogs.com/manman04/p/6129411.html