You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让现有支付逻辑与PayPal互操作?适配Sofort范式方案

适配Sofort范式的PayPal一次性支付互操作方案

完全可以基于PayPal REST API构建和你现有Sofort流程高度一致的一次性支付数据流,以下是对应范式的落地方案:

1. 创建PayPal支付请求(对应Sofort的请求环节)

这一步完全匹配你向Sofort发起请求的逻辑,核心参数映射如下:

  • API身份验证:用PayPal开发者平台生成的客户端ID和秘钥,通过OAuth2获取访问令牌(或直接用基础认证)替换Sofort的API-token,请求时在请求头携带身份凭证
  • 关联本地用户UID:在PayPal订单请求的purchase_units[0].custom字段填入本地用户UID,PayPal会在后续所有相关通知中完整返回该字段,实现和Sofortuser_variable完全一致的关联功能
  • Webhook配置:在PayPal开发者平台配置你的Webhook端点,订阅PAYMENT.CAPTURE.COMPLETED、PAYMENT.CAPTURE.PENDING、PAYMENT.CAPTURE.DECLINED这三类事件,对应Sofort的completed、pending、rejected状态通知

创建订单的API请求示例:

POST https://api-m.paypal.com/v2/checkout/orders
Authorization: Bearer {你的PayPal访问令牌}
Content-Type: application/json

{
  "intent": "CAPTURE",
  "purchase_units": [
    {
      "amount": {
        "currency_code": "EUR",
        "value": "10.00"
      },
      "custom": "本地用户UID" // 填入你的用户本地UID
    }
  ]
}

2. 获取支付流程URL并跳转前端(对应Sofort的返回URL环节)

PayPal API响应会返回一个包含支付跳转链接的links数组,其中rel为approve的href就是前端需要打开的完整支付流程URL,你只需将这个URL传给前端,在Webview中打开即可。

响应片段示例:

{
  "id": "O-XXXXXXXXX",
  "status": "CREATED",
  "links": [
    {
      "href": "https://www.paypal.com/checkoutnow?token=O-XXXXXXXXX",
      "rel": "approve",
      "method": "GET"
    }
  ]
}

3. Webhook通知处理与入账(对应Sofort的Webhook环节)

当用户完成支付后,PayPal会向你配置的Webhook端点发送事件通知,处理逻辑和Sofort完全对齐:

  1. 首先验证Webhook通知的合法性(使用PayPal官方提供的签名验证工具,防止伪造请求)
  2. 从通知的resource.purchase_units[0].custom字段提取本地用户UID
  3. 校验通知中的金额(resource.amount.value)和货币类型是否与预期一致
  4. 校验通过后,为本地用户账户完成入账操作

核心通知片段示例:

{
  "event_type": "PAYMENT.CAPTURE.COMPLETED",
  "resource": {
    "id": "XXXXXXXX",
    "status": "COMPLETED",
    "amount": {
      "currency_code": "EUR",
      "value": "10.00"
    },
    "purchase_units": [
      {
        "custom": "本地用户UID",
        "amount": {
          "currency_code": "EUR",
          "value": "10.00"
        }
      }
    ]
  }
}

额外注意事项

  • 本次需求为一次性支付,因此订单请求的intent必须设为CAPTURE,无需配置订阅相关参数
  • 除了COMPLETED事件,你可以根据业务需要处理PENDING(支付待确认)和DECLINED(支付被拒绝)事件,对应Sofort的状态逻辑
  • 务必确保custom字段仅填入本地用户UID,避免包含敏感信息,该字段会被PayPal原样返回

内容的提问来源于stack exchange,提问作者staletidings

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:10:50