我有一个网站,用户为其他用户提供的服务付费,并在周末向用户支付他们服务销售的价值减去我们的佣金。
目前,当我们要向用户付款时,我们会进行人工付款,登录贝宝并在付款后手动更新我们的数据库。我们遇到的问题是我们的交易每周超过一千,因此手动完成非常麻烦。
我们想出了一个小系统,通过使用来自 paypal 的 Adaptive Payments API,我们可以执行支付并一键更新我们的数据库。
我的问题如下 - 我们害怕发生一些情况:
我们向用户付款,我们的 SQL 数据库出现故障,因此我们不更新我们的销售记录。因此,系统会在 cron 执行时再次向用户付款。
我们可以做相反的事情,先更新我们的 SQL 数据库,如果通过,我们执行 paypal 付款。这样做的问题是,如果 PayPal 方面出现问题,我们最终根本不会向用户付款,因为我们的数据库已更新,就好像我们已经向他们付款一样。
我们的解决方案:
我们更新我们的数据库并跟踪所有更改的记录 -> 继续调用 PayPal API -> 如果 PayPal 调用失败,我们将更改恢复为更新的记录;如果调用成功,我们保持原样。
我们执行 PayPal 付款,并更新数据库。我们将来自 API 的 ACK 消息存储在数据库中,当我们检查我们的记录以支付用户时,我们会验证 ACK 字段是否成功。
我们的解决方案让我们非常疲倦,也许我们陷入了某种思维定势。我们担心的是 SQL 将失败或 PayPal api 调用将无法通过。是否有人对我们的支付系统有任何建议或完全不同的实施?