今天,我正在考虑如下简化方案:
我有自己的支付系统,当用户来省钱时,我使用表单在我自己的数据库中保存交易数据。在保存我自己的记录之前,我需要调用银行支付系统,该系统具有像
这样的Web服务API public boolean pay(userInfo userInfo, float money)
。
根据返回的结果,我确定是否保存自己的数据。
我的问题是,在拨打银行支付API之后,我自己的网络已关闭,并且没有结果。如何确定是否需要保存自己的表单记录。也许银行支付系统已处理此交易?如何使两部分数据同步?
我们无法更改银行支付API,因为银行规格已修复。 Webservice API是SOAP或Restful
答案 0 :(得分:0)
您的实施可能是这样的:
始终将交易数据保存到您的数据库并将其标记为"未处理"。
使用单独的" worker"进程,从数据库中获取所有未处理的事务,并调用银行支付系统的pay
方法。
根据pay
方法结果,选择更改/不更改交易状态。
工作人员可以通过预定的进程(每个XX秒/分钟/等)或一些不断查询未处理的事务的服务(可能在循环之间有一些延迟)。
因此,如果"没有结果"从银行支付系统,交易状态不会改变,"支付"方法将在下一次工人运行时重试。