【发布时间】:2011-06-28 11:40:57
【问题描述】:
我正在将 Barclays ePDQ CPI 支付集成到我们的应用程序中。
到目前为止我的编码方式是:
1.用户输入详细信息 2.模型保存到会话(不是数据库) 3. 用户跳转到支付页面。 4. 用户输入付款详情。 5. eDPQ 服务器执行回发,由控制器接收。这应该保存订单详细信息并保存用户模型。 6. CPI 将用户重定向到结果页面。
我不想在发送到付款页面之前保存用户详细信息的原因是,如果用户输入了错误的详细信息,可以在浏览器上按回,然后重新提交表单。
但是 - 我现在意识到,由于 eDPQ 服务器直接回调帖子,因此不会有会话。可以将 order_id 发送到作为参考发回的支付页面。所以现在我想在将用户发送到付款页面之前返回并保存用户,所以我在 order_id 中发送了一个参考。然后可以通过 post_back 方法获取它,该方法将找到用户并完成注册过程。
但是,如果他们点击返回并尝试重新提交,则会出现错误,因为用户已经存在。
解决此问题的一种方法是确保永远不会缓存用户的“新”页面。因此,当他们单击返回时,实际上会显示一个“编辑”页面,该页面看起来像一个“新”页面。 但是,这看起来会增加一些编码复杂性。
我希望有人遇到过类似的事情,并且可以在这里提供一些建议。
感谢阅读!
【问题讨论】:
标签: ruby-on-rails web-services ruby-on-rails-3 payment-gateway payment