以下是一种旨在为组织开发支付平台的架构(显示为第三方)。每个实体都有一组REST API。暂时让我说我正在开发像Paypal这样的东西。
我已经用垂直线(红色,蓝色)清楚地标出了边界。涉及三方。支付门户,银行和第三方。
问题是如果双方之间存在网络问题并且无法完成截断周期。应如何解决?
假设支付门户网站发起请求后,支付门户网站和第三方之间的网络将丢失。即使交易在银行结束时,支付门户也无法获得响应。一旦网络银行在线,应如何处理?
我已在下面阅读。
答案 0 :(得分:1)
首先,您应该忘记同步处理事务。
在第一个方案中,您初始化交易和交易数据 - 及其状态 - 返回200 OK
代码。在开始状态可以是例如开始。然后,您重复发送GET
请求以获取所有交易数据,并在其状态更改为例如时显示相应的信息。 成品。在这种情况下,如果客户端和服务器之间的连接中断,则不会发生任何不良情况 - 所有数据都保留在服务器端,而客户端则表现为观察者。总而言之,200 OK
代码与事务状态一起使用。
在第二种情况下,HTTP状态代码指示交易是否完成。如果启动/提交了事务,则响应包含事务数据,并将其标记为202 Accepted
。没有内部状态字段。然后,您应该重复查询端点,直到返回200 OK
或204 No Content
(如果答案正确)或4XX
(5XX
),以防出现任何故障。
这两种方法只有在指示事务已完成的事实时才有所不同:通过资源内部字段或HTTP状态代码。