我们应该在哪里进行api调用?

时间:2016-08-30 12:22:57

标签: ruby-on-rails ruby model-view-controller architecture payment-gateway

我正在开发Rails应用程序,我必须在其中集成一些支付网关。 现在,这些网关的功能之一是3Dsecure支付。 这些付款的流程是这样的。

  1. 用户在表单中输入其帐单邮寄地址详细信息等。
  2. 服务器向Payment Gateway(PG)服务器发送安全支付请求
  3. PG返回一个特殊链接,用户需要重定向。
  4. 用户转到该链接,输入卡信息和/或输入安全银行代码。
  5. PG的服务器通过一些凭据将用户发送回我们的服务器上提供的返回URL。
  6. 我们的服务器通过执行其他API呼叫来验证付款是否成功
  7. 成功后我们在数据库中保存了一行。
  8. 现在我对如何在rails中实现这种行为感到很困惑。

    • 如果我在模型中进行api调用,则无法从该处重定向用户。
    • 如果我在控制器中进行api调用,我无法向表单发送错误,任何api调用都会抛出错误。
    • 我只需要在回调中保存付款详细信息,但如何在回调函数中访问提交的表单数据。
    • 我应该在哪里实现我的回调函数。

1 个答案:

答案 0 :(得分:1)

编写一个PORO包装类并将其推入lib文件夹。这样你就可以在任何需要的地方重复使用它。

另一个选择是创建一个处理数据的非AR“模型”,然后让控制器进行重定向