付款平台的REST API交易

时间:2015-10-12 10:05:16

标签: api rest paypal transactions payment-gateway

以下是一种旨在为组织开发支付平台的架构(显示为第三方)。每个实体都有一组REST API。暂时让我说我正在开发像Paypal这样的东西。

enter image description here

我已经用垂直线(红色,蓝色)清楚地标出了边界。涉及三方。支付门户,银行和第三方。

  1. 客户可以通过登录付款门户来启动交易。支付门户将调用银行的API。请求流程如图所示。
  2. 每个请求和响应都将通过ESB并将被记录。如果交易成功,ESB将更新第三方数据库并同时通知支付门户。
  3. 支付门户网站将启动对ESB的另一个API调用,以确保第三方数据库正确更新(图中未显示)。
  4. 最后一个支付门户网站将向银行发送确认信息已完成整个周期(图中未显示)。这是另一个API调用。
  5. 问题是如果双方之间存在网络问题并且无法完成截断周期。应如何解决?

    假设支付门户网站发起请求后,支付门户网站和第三方之间的网络将丢失。即使交易在银行结束时,支付门户也无法获得响应。一旦网络银行在线,应如何处理?

    我已在下面阅读。

    Transactions in REST?

1 个答案:

答案 0 :(得分:1)

首先,您应该忘记同步处理事务。

在第一个方案中,您初始化交易和交易数据 - 及其状态 - 返回200 OK代码。在开始状态可以是例如开始。然后,您重复发送GET请求以获取所有交易数据,并在其状态更改为例如时显示相应的信息。 成品。在这种情况下,如果客户端和服务器之间的连接中断,则不会发生任何不良情况 - 所有数据都保留在服务器端,而客户端则表现为观察者。总而言之,200 OK代码与事务状态一起使用。

在第二种情况下,HTTP状态代码指示交易是否完成。如果启动/提交了事务,则响应包含事务数据,并将其标记为202 Accepted。没有内部状态字段。然后,您应该重复查询端点,直到返回200 OK204 No Content(如果答案正确)或4XX5XX),以防出现任何故障。

这两种方法只有在指示事务已完成的事实时才有所不同:通过资源内部字段或HTTP状态代码。