如何以原子方式执行多项ActiveMerchant付款?

时间:2016-02-24 17:38:56

标签: ruby-on-rails activemerchant

我必须创建一个包含两笔付款的订阅流程:

  • 第一个是资金。允许的付款类型是定期邮件和ActiveMerchant检查(ACH)通过Authorize.Net。
  • 第二个是资金的费用。允许的付款类型与通过Authorize.Net的资金+信用卡相同。

只需一次付款就无法做到这一点(特别是如果客户想用信用卡支付费用),所以我必须坚持:

  • ActiveMerchant 1.55.0(Ruby 2.2.0,Rails 4.2.0)。
  • 两种不同的付款方式。
  • 确认过程将对后端进行一次点击,这将打到数据库并执行两次付款。

为了原子地捕捉错误,我可以:

  • 验证模型。
  • 验证付款(某种方式是某种瞬态模型)。
  • 执行付款1(资金)。
  • 执行付款2(费用)。
  • 存储所有内容。

这些是外部系统,可能因各种原因而失败,例如:

  • 系统已进入维护状态。
  • 可疑操作。
  • 卡号无效。
  • 路由号码无效。
  • ...

所以我达到了常规数据库交易没有帮助的地步(因为这是外部系统中的两个操作),并且可能是资金支付有效,但费用支付不是

如果第二次付款失败,有没有办法回滚第一笔付款,那么这两笔付款是成功还是没有付款?

0 个答案:

没有答案