Rails 请教下微信支付在 pc 端扫二维码支付后怎么通知页面前端怎么跳转或者重定向

xiaoxiao · 2017年02月27日 · 最后由 ruby_xi 回复于 2017年03月07日 · 8781 次阅读

最近使用 rails 正在做微信支付,参考https://ruby-china.org/topics/26138等文章, 使用了 WxPay 这个 gem。 具体的网站业务流程是点击支付按钮,生成支付二维码窗口(使用 QRCode 生成)。用户在 pc 上扫码这个二维码窗口付款后,rails 后台会收到微信支付成功的通知。现在的问题是怎么通知到页面前端,出现支付成功或者失败的提示。

ps:我看有些网站是不断的给后端发送请求成功与否的,不知道还有没有其他可行的方案,请各位开发过相关案例的大神不吝赐教。

ps:在微信端有个 js 的回调,PC 端是如何处理好呢。

$(".to_pay").click(function(){
  wx.chooseWXPay({
    "timestamp": "<%= @pay_p[:timeStamp] %>",
    "nonceStr": "<%= @pay_p[:nonceStr] %>",
    "package": "<%= @pay_p[:package] %>",
    "signType": "<%= @pay_p[:signType] %>",
    "paySign": "<%= @pay_sign %>", // 支付签名
    success: function (res) {
      window.location.href = "/orders/" + order_id + "/pay_success";
    }
  });
});

二维码做不了 只能自己查询订单状态 印象里微信是这个流程 因为二维码拿到的就是一串微信的支付地址 没有其他属性

其他网站(例如 12306)是弹窗出来,上面有支付成功和支付失败的按钮,点击做对应处理

ricoa 回复

乘客支付成功后端是会收到微信服务器的通知的,主要是怎么通知前端页面是否成功,是定时轮询还是其他什么,请教下业界的通用做法。

hging 回复

你说的查询订单状况是不是我理解的前端页面定时轮询

这个应该和 微信扫码登录网页实现原理 差不多,用的是 Ajax 长轮询

ActionCable

轮询 or websocket

谢谢各位的建议

目前实现的是 轮询。

xiaoxiao 关闭了讨论。 03月08日 20:55
需要 登录 后方可回复, 如果你还没有账号请 注册新账号