支付流程
了解 Pelago 支付从创建到结算的完整生命周期。
支付状态
状态说明
| 状态 | 描述 | Webhook 事件 |
|---|---|---|
created | 支付请求已初始化 | - |
pending | 等待客户操作 | - |
processing | 交易进行中 | - |
completed | 支付成功 | payment.completed |
failed | 支付失败 | payment.failed |
expired | 支付超时 | payment.expired |
settled | 资金已转至商户 | payment.settled |
refunded | 支付已退款 | payment.refunded |
详细流程
第一阶段:创建支付
请求:
{
"amount": 100.00,
"currency": "USD",
"cryptocurrency": "USDC",
"network": "stellar",
"merchantWallet": "GXXXXX...",
"redirectUrl": "https://store.com/success",
"webhookUrl": "https://store.com/webhook",
"expiresIn": 1800
}
响应:
{
"id": "pay_abc123",
"status": "created",
"amount": 100.00,
"currency": "USD",
"cryptoAmount": "100.000000",
"cryptocurrency": "USDC",
"network": "stellar",
"url": "https://pay.pelago.tech/pay_abc123",
"qrCode": "data:image/png;base64,...",
"expiresAt": "2025-02-08T22:30:00Z"
}
第二阶段:客户支付
第三阶段:确认与 Webhook
Webhook 负载:
{
"id": "evt_xyz789",
"type": "payment.completed",
"created": "2025-02-08T22:15:30Z",
"data": {
"paymentId": "pay_abc123",
"status": "completed",
"amount": 100.00,
"currency": "USD",
"cryptoAmount": "100.000000",
"cryptocurrency": "USDC",
"network": "stellar",
"transactionHash": "abc123...def456",
"merchantWallet": "GXXXXX...",
"customerWallet": "GCUST...",
"metadata": {
"orderId": "order_12345"
}
}
}
第四阶段:结算
边缘场景处理
网络拥堵
当区块链拥堵时:
- 支付在
processing状态停留更久 - Pelago 持续监控确认
- 客户看到"确认中"状态
- 仅在确认后发送 Webhook
支付不足
当客户支付金额低于要求:
- 支付标记为
partial - 通过 Webhook 通知商户
- 可选择接受部分支付或要求补足
超额支付
当客户支付金额超过要求:
- 支付标记为
overpaid - 超出部分自动退还
- 或充入客户余额
超时处理
最佳实践
- 幂等性:在 metadata 中使用唯一
orderId - Webhook 验证:始终验证签名
- 状态轮询:作为漏发 Webhook 的备选方案
- 过期处理:及时告知客户超时信息