api - 支付平台的 REST API 交易

标签 api rest paypal transactions payment-gateway

以下是旨在为组织(显示为第 3 方)开发支付平台的架构。每个实体都有一组 REST API。暂时假设我正在开发类似 Paypal 的东西。

enter image description here

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

  1. 客户可以通过登录支付门户发起交易。支付门户将调用银行的 API。请求流程如图所示。
  2. 每个请求和响应都将通过 ESB 并记录下来。如果交易成功,ESB 将更新第三方数据库并同时通知支付门户。
  3. 支付门户将向 ESB 发起另一个 API 调用,以确保正确更新第 3 方数据库(图中未显示)。
  4. 最后,支付门户将向银行发送确认,确认交易已完成整个周期(图中未显示)。这是另一个 API 调用。

问题是如果双方之间存在网络问题并且无法完成截断周期怎么办。应该如何解决?

假设一旦支付门户发起请求,支付门户与第 3 方之间的网络就会丢失。即使在银行端交易成功,支付门户也无法得到响应。一旦网络银行在线,应该如何处理?

我已阅读以下内容。

Transactions in REST?

最佳答案

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

在第一个场景中,您初始化交易和交易数据 - 及其状态 - 返回 200 OK 代码。开始状态可能是例如开始。然后您重复发送 GET 请求以获取所有交易数据并在其状态更改为例如完成。在这种情况下,如果客户端和服务器之间的连接断开,则不会发生什么坏事——所有数据都保存在服务器端,客户端充当观察者。综上所述,200 OK 代码与交易状态一起使用。

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

这两种方法的不同之处仅在于指示事务是否已完成:通过资源内部字段或 HTTP 状态代码。

关于api - 支付平台的 REST API 交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33078426/

相关文章:

php - Paypal - 您用于进入 PayPal 系统的链接包含格式不正确的项目金额

c# - 如何与 BED 沟通?

php - 使用全新的 Google API 服务器 key 的响应显示为 'The provided API key is expired'

api - 简单的 Acumatica 合约 soap api 调用出错

java - 泽西客户端 : too many Conent-Type header values

java - Jersey 测试框架文档不起作用

android - Wordpress - 如何使用 REST API 更新用户密码

api - Azure DevOps 构建定义和管道之间有什么区别和关系?

ios - TRANSACTION_REFUSED - 交易被拒绝。在 Paypal ios sdk

paypal - PayPal MEC 库是否已弃用或停产?