海外支付渠道对接

​ 在新公司中,遇到了一个之前没遇到过的业务,那就是对接海外的支付。之前一直以为管理对接有什么技术高山需要登顶,接触之后发现好像也没啥,都是对接接口。按照各种支付平台文档要求去对接就好。

​ 前后对接过几个平台的支付:Alipay、PayPal、Payssion、Stripe 。最后发现套路好像都差不多。目前应用到的支付有两种模式:单次支付、订阅支付。

单次支付

​ 各个平台的单次支付都差不多,大体流程如下:

​ 1、商户系统 调用支付平台 API,生成支付订单。

​ 2、支付平台 返回支付链接 / 支付页面。

​ 3、用户 在支付页面完成支付。

​ 4、支付平台 同步/异步通知支付结果。

​ 5、商户系统 根据通知更新订单状态。

​ 支付平台异步通知支付结果的接口有的需要在平台去注册,有的需要在请求生成支付订单的时候作为参数传进去。

平台 发起支付 支付页面 支付完成回调 特点
Alipay 商户调用支付宝下单接口 跳转支付宝收银台 支付宝回调 + 商户查询 国内主流,强制回调机制
PayPal 商户调用 create payment API 跳转 PayPal 网页/APP PayPal 回调 + IPN 跨境常用,用户体验好
Payssion 商户调用 Payssion API 跳转到对应本地支付方式 Payssion 回调 + 查询 聚合多国本地支付
Stripe 商户调用 PaymentIntent API Stripe Checkout 页面 Webhook 通知 开发者友好,API 统一
sequenceDiagram
    participant U as 用户
    participant M as 商户系统
    participant A as 支付平台

    rect rgb(230,230,250)
    U->>M: 调用商户支付
    M->>A: 调用统一收单下单接口 (各平台不同)
    A-->>M: 返回支付链接
    M->>U: 添加回调页面返回用户
    U->>A: 打开支付链接完成支付
    A->>M: 打开回调页面
    A-->>M: 异步回调通知支付结果
    M->>A: 可选:查询订单确认
    end

订阅支付

​ 几个平台的订阅支付,就有所不同了,主要分三种:

1、以alipay为代表,在订单和授权都完成的情况下,每期扣款都需要商户主动调取相应接口。

2、以PayPal / Stripe为代表,在订单和授权都完成的情况下,支付平台会每期自动扣款。

3、以Payssion为代表,每次都需要重新生成订单,重走流程,需要用户手动确认。

sequenceDiagram
    participant User as 用户
    participant App as 商户系统
    participant Pay as 支付平台
    
    Note over User,Pay: 订阅签约流程

    User->>App: 选择订阅
    App->>Pay: 创建签约 / 订阅计划
    Pay-->>App: 返回授权页面链接
    App->>User: 跳转到授权页面
    User->>Pay: 确认授权(免密代扣)
    Pay-->>App: 返回协议号/订阅ID
    Pay-->>User: 回跳到 return_url

    Note over App,Pay: 后续周期扣款

    alt 支付宝
        App->>Pay: 主动调用 alipay.trade.create (带 agreement_no)
        Pay-->>App: 返回扣款结果 + notify
    else PayPal / Stripe
        Pay-->>User: 到期日自动扣款
        Pay-->>App: Webhook 通知结果
    else Payssion
        App->>Pay: 每期重新生成支付订单
        User->>Pay: 手动完成支付
    end