主题
创建支付
POST /v1/open/payments
json
{
"out_trade_no": "SHOP-A-20260901-0001",
"amount": 1000,
"subject": "订单标题",
"notify_url": "https://shop-a.example/notify",
"return_url": "https://shop-a.example/done",
"expire_at": "2026-09-01T18:00:00+08:00"
}请求参数
| 字段 | 类型 | 必填 | 约束 |
|---|---|---|---|
out_trade_no | string | 是 | 1~64 字符 [A-Za-z0-9._-];应用内唯一(幂等键) |
amount | int64 | 是 | 金额(分),>0,≤1 亿分(=100 万元,可配) |
subject | string | 是 | 1~128 字符,收银台展示 |
notify_url | string | 否 | https;覆盖应用默认;两者皆无 → 400 PARAM_INVALID |
return_url | string | 否 | https;支付终态跳回 |
expire_at | string | 否 | RFC3339;缺省 +2h;钳制 [+5min, +24h] |
响应字段
| 字段 | 说明 |
|---|---|
payment_no | 平台支付单号(终态、回调、查单均用) |
out_trade_no | 对接方商户单号(原样返回) |
amount | 金额(分) |
status | pending/paid/closed/refunded |
cashier_url | 收银台地址;两种支付发起模式均可用 |
expire_at | 过期时间 RFC3339 |
响应 data:
json
{
"payment_no": "PAY1788...",
"out_trade_no": "SHOP-A-20260901-0001",
"amount": 1000,
"status": "pending",
"cashier_url": "https://pay.h5.vipjhzf.cn/#/pages-sub/open-cashier/index?pay_token=<pay_token>",
"expire_at": "2026-09-01T19:00:00+08:00"
}幂等语义(重要)
同 (app_id, out_trade_no) 重复请求且 amount 一致 → 返回原单(幂等);不一致 → 409 OUT_TRADE_NO_CONFLICT。并发请求由平台唯一索引兜底,两路都会得到同一单。
相关
- 创建时即做金额预检:不在收款账户单笔限额内返回
AMOUNT_OUT_OF_RANGE(见错误码)。 - 拿到
cashier_url后如何发起支付:支付发起(收银台与直出)。