Skip to main content
本文介绍一笔支付从发起到完成的完整流程。

流程总览

商户服务端               PayMatrix               消费者
    |                        |                        |
    |-- 1.创建支付订单 ----->|                        |
    |<-- 返回 pay_url -------|                        |
    |                        |                        |
    |-- 2.重定向消费者 ------------------------------>|
    |                        |<-- 3.打开收银台 --------|
    |                        |<-- 4.选择支付方式 ------|
    |                        |<-- 5.提交支付信息 ------|
    |                        |                        |
    |                        |-- 6.调用渠道处理支付 -->|
    |                        |<-- 7.渠道返回结果 ------|
    |                        |                        |
    |<-- 8.Webhook 通知 -----|                        |
    |<-- 9.主动查询(可选)--|                        |

各阶段说明

1. 商户创建支付订单

商户服务端调用 POST /api/merchant/payment/create 创建支付订单。 请求参数包含:
  • 商户交易号(唯一标识)
  • 订单金额与币种
  • 商品信息
  • 客户信息
  • 支付成功/取消后的跳转地址
平台返回:
  • order_id:平台订单号
  • pay_url:收银台地址,引导用户支付

2. 商户重定向消费者

商户将消费者浏览器重定向到 pay_url(或在自己的页面中嵌入 iframe)。

3. 收银台加载

消费者打开收银台页面后:
  1. 收银台根据订单信息加载可用的支付方式
  2. 展示支付金额、商品摘要等信息
  3. 消费者选择合适的支付方式

4. 支付方式

支持的支付方式包括:
类型说明
银行卡Visa, Mastercard, AMEX 等
电子钱包Alipay, WeChat Pay 等
银行转账银行直连支付

5. 消费者提交支付

消费者填写支付信息(如卡号、有效期、CVV)后提交。 收银台根据渠道类型处理:
  • Stripe Elements:由 Stripe.js SDK 安全采集卡信息
  • Antom SDK:加载 Antom 支付组件
  • 重定向:跳转到第三方支付页面

6. 渠道处理 & 异步通知

支付渠道(Stripe、Antom 等)处理支付后,通过异步回调通知 PayMatrix:
  • POST /api/webhook/{channelId}

7. 商户 Webhook 通知

平台确认支付结果后,向商户配置的 Webhook 地址推送事件:
  • order.payment.succeeded — 支付成功
  • order.payment.failed — 支付失败
  • order.payment.processing — 处理中

8. 商户主动查询(可选)

商户也可以调用 GET /api/merchant/order/payment/query/{transactionId} 主动查询支付状态。

支付状态流转

INIT(初始化)

PAYING(支付中)

  ├── PAY_SUCCESS(支付成功)
  │     ↓
  │     ├── PARTIAL_REFUND(部分退款)
  │     │     ↓
  │     │     └── REFUNDED(全部退款)
  │     └── IN_DISPUTE(争议中)
  ├── PAY_FAIL(支付失败)
  └── CLOSE(超时关闭)

超时处理

  • 支付订单有有效期,超过有效期未支付将自动关闭
  • 建议商户在 pay_url 页面提示用户支付有效期

幂等性

  • 同一 merchant_transaction_id 不可重复创建支付
  • 如网络超时未收到响应,建议以相同参数重试(平台保证幂等)