支付 API

创建和管理加密货币支付订单的完整 API 文档

7 分钟阅读
更新于 2025/8/13
API支付REST

支付 API 是 Payve 平台的核心功能,提供创建支付订单、查询支付状态、取消订单等完整的支付生命周期管理功能。

概述

认证方式
Bearer Token (JWT)
请求格式
application/json
响应格式
application/json

创建支付订单

创建一个新的加密货币支付订单。系统会自动生成收款地址并计算实际应付金额。

POST/payments

请求头

Authorization: Bearer <your-jwt-token>
Content-Type: application/json
Idempotency-Key: <unique-key> (可选)

请求参数

参数类型必填说明
amountstring支付金额,支持小数点后 8 位,需满足最小金额要求
currencystring币种代码(BTC, ETH, USDT, USDC, BNB, SOL, TRX, POL)
networkstring指定区块链网络(BITCOIN, ETHEREUM, TRON, BSC, POLYGON, SOLANA)
merchantOrderIdstring商户自定义订单号,用于对账,必须唯一
productNamestring产品名称,用于支付页面显示
callbackUrlstring支付成功后的回调 URL
metadataobject自定义元数据,最多 10 个键值对

最小金额限制

不同币种和网络有强制的最小金额限制。低于最小金额的交易请求将被拒绝并返回 AMOUNT_TOO_SMALL 错误:

原生代币最小金额

币种最小金额
BTC0.0001 BTC
ETH0.005 ETH
BNB0.01 BNB
SOL0.01 SOL
TRX2 TRX
POL10 POL

稳定币最小金额

币种网络最小金额
USDTEthereum10 USDT
USDTTRON5 USDT
USDTBNB Chain2 USDT
USDTPolygon2 USDT
USDTSolana1 USDT
USDCEthereum10 USDC
USDCBNB Chain2 USDC
USDCPolygon2 USDC
USDCSolana1 USDC

请求示例

响应参数

参数类型说明
orderIdstringPayve 订单 ID
merchantOrderIdstring商户订单号
statusstring订单状态(PENDING, PAID, EXPIRED, FAILED)
amountstring应付金额
currencystring币种
networkstring区块链网络
addressstring收款地址
qrCodestring支付二维码图片 URL
paymentUrlstring支付页面 URL
expiresAtstring过期时间(ISO 8601)
createdAtstring创建时间(ISO 8601)
feeobject手续费信息

响应示例

查询支付订单

获取支付订单的详细信息和当前状态。

GET/payments/{orderId}

路径参数

参数类型说明
orderIdstringPayve 订单 ID 或商户订单号

响应示例

查询支付订单列表

获取商户的支付订单列表,支持分页和筛选。

GET/payments

查询参数

参数类型说明
statusstring订单状态筛选
currencystring币种筛选
networkstring网络筛选
startDatestring开始日期(ISO 8601)
endDatestring结束日期(ISO 8601)
pageinteger页码,从 1 开始
limitinteger每页数量,最大 100
sortstring排序字段(createdAt, amount)
orderstring排序方向(asc, desc)

请求示例

GET /payments?status=PAID&currency=USDT&page=1&limit=20&sort=createdAt&order=desc

响应示例

取消支付订单

取消一个待支付的订单。只有状态为 PENDING 的订单可以取消。

POST/payments/{orderId}/cancel

请求示例

{
  "reason": "用户取消订单"
}

响应示例

{
  "orderId": "pay_xGh8Kl9mNpQr",
  "status": "CANCELLED",
  "cancelledAt": "2024-01-15T10:35:00Z",
  "reason": "用户取消订单"
}

支付状态说明

状态说明
PENDING待支付 - 订单已创建,等待用户支付
DETECTING检测中 - 检测到链上交易,等待确认
CONFIRMING确认中 - 交易已广播,等待区块确认
PAID已支付 - 支付成功,达到所需确认数
EXPIRED已过期 - 订单超时未支付
CANCELLED已取消 - 订单被商户取消
FAILED失败 - 支付失败(如金额不足)
REFUNDING退款中 - 正在处理退款
REFUNDED已退款 - 退款完成

支付流程图

graph TD
    A[创建订单] --> B{用户支付}
    B -->|支付| C[检测交易]
    B -->|超时| D[订单过期]
    C --> E[等待确认]
    E -->|确认完成| F[支付成功]
    E -->|确认失败| G[支付失败]
    F --> H[发送Webhook]
    H --> I[商户处理]

幂等性

支付 API 支持幂等请求,通过在请求头中提供 Idempotency-Key 来避免重复创建订单:

POST /payments
Idempotency-Key: unique-request-id-123

在 24 小时内,使用相同的幂等键重复请求将返回第一次请求的结果。

错误处理

参见 错误处理文档 了解所有可能的错误码和处理建议。

最佳实践

1. 设置合理的过期时间

根据业务场景设置订单过期时间:

  • 实物商品:30-60 分钟
  • 虚拟商品:15-30 分钟
  • 大额交易:60-120 分钟

2. 实现支付状态轮询

虽然我们提供 Webhook 通知,但建议同时实现轮询作为备份:

3. 保存关键信息

创建订单后,务必保存以下信息:

  • 订单 ID
  • 收款地址
  • 应付金额
  • 过期时间

4. 处理支付异常

正确处理各种支付异常情况:

  • 用户支付金额不足
  • 用户支付金额过多
  • 重复支付
  • 网络异常

示例代码

Node.js 示例

Python 示例

相关文档