调用 API 时如何处理网络中断

How to handle network down when calling a API

今天,我在想一个简化的场景如下:

我有自己的支付系统,当用户来存钱时,我使用一个表格将交易数据保存在我自己的数据库中。在保存我自己的记录之前,我需要调用银行支付系统,它有一个像

这样的网络服务 API

public boolean pay(userInfo userInfo, float money)

根据返回的结果,我决定是否保存自己的数据。

我的问题是如果打电话给银行付款后API,我自己的网络就断了,没有结果。如何判断是否需要保存自己的Form记录。也许银行支付系统已经处理了这笔交易?如何让两部分数据同步?

我们无法更改银行付款方式 API,因为银行规格是固定的。网络服务 API 是 SOAP 或 Restful

你的实现可能是这样的:

  • 始终将交易数据保存到您的数据库并将其标记为 "unprocessed"。

  • 使用单独的 "worker" 进程,从您的数据库中获取所有未处理的交易,并调用银行支付系统的 pay 方法。

  • 根据pay方法结果,选择change/not更改交易状态

Worker 可能通过一个预定的进程(每个 XX sec/minutes/etc)或一些不断查询未处理事务的服务(可能在循环之间有一些延迟)。

因此,如果来自银行支付系统的 "no result",交易状态将不会更改,并且 "pay" 方法将在下一个工作人员 运行.

上重试