如何让现有支付逻辑与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完全对齐:
- 首先验证Webhook通知的合法性(使用PayPal官方提供的签名验证工具,防止伪造请求)
- 从通知的
resource.purchase_units[0].custom字段提取本地用户UID - 校验通知中的金额(
resource.amount.value)和货币类型是否与预期一致 - 校验通过后,为本地用户账户完成入账操作
核心通知片段示例:
{ "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
相关产品推荐
相关产品推荐

