网关预下单
接口说明
用于「网关支付」场景:商户后端不预先指定支付方式,而是先通过本接口创建网关订单并获得 H5 落地页 URL 与 小程序映射 URL,按用户设备引导用户进入平台收银台或聚合扫码页,由用户在前端选择支付方式后再发起真实支付。
适用于:
- 统一收银台(cashier):平台提供的多支付方式选择页面
- 聚合扫码(aggregate):一码多付,自动识别用户钱包
请求地址
POST /unipay/gateway/pre-pay
- 认证:RSA 签名(
@PaymentVerify) - 响应:
DaxResult<GatewayPrePayResult>
请求参数
基础参数同 统一支付 - 基础参数,业务参数:
| 参数 | 类型 | 必填 | 最大长度 | 描述 |
|---|---|---|---|---|
| bizOrderNo | string | 是 | 100 | 商户订单号 |
| title | string | 是 | 100 | 订单标题 |
| description | string | 否 | 50 | 订单描述 |
| amount | long | 是 | — | 订单金额(分,最小 1,最大 9999999999) |
| gatewayPayType | string | 是 | 32 | 网关类型:cashier(统一收银台)/ aggregate(聚合扫码) |
| notifyUrl | string | 否 | 256 | 异步通知地址 |
| returnUrl | string | 否 | 256 | 同步跳转地址 |
| attach | string | 否 | 512 | 商户附加参数,回调原样返回 |
| extraParam | string | 否 | 2048 | 通道扩展参数(JSON) |
| expiredTime | string | 否 | — | 过期时间(yyyy-MM-dd HH:mm:ss,GMT+8) |
| storeNo | string | 否 | 64 | 门店号 |
| goodsDetail | object[] | 否 | — | 商品明细列表 |
请求示例
json
{
"mchNo": "M200000001",
"appId": "APP001",
"reqId": "REQ20241201010",
"reqTime": "2024-12-01 12:00:00",
"sign": "Base64签名值",
"bizOrderNo": "ORDER20241201001",
"title": "测试商品",
"amount": 100,
"gatewayPayType": "cashier",
"notifyUrl": "https://your-domain.com/notify",
"returnUrl": "https://your-domain.com/return"
}响应参数
DaxResult<GatewayPrePayResult>,data 字段结构:
| 参数 | 类型 | 描述 |
|---|---|---|
| orderNo | string | 平台网关单号(后续查询/同步用此号) |
| bizOrderNo | string | 商户业务单号 |
| status | string | 业务状态(GatewayOrderStatusEnum,初始为 wait_pay) |
| h5Url | string | H5 落地页 URL(cashier 为 /cashier/{orderNo},aggregate 为 /aggregate/{orderNo}) |
| miniUrl | string | 小程序映射 URL(cashier 为 /cm/{orderNo},aggregate 为 /am/{orderNo};通过微信等平台普通链接二维码规则拉起小程序) |
| expiredTime | string | 过期时间(UTC) |
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"orderNo": "G2024120112345700001",
"bizOrderNo": "ORDER20241201001",
"status": "wait_pay",
"h5Url": "https://your-domain.com/cashier/G2024120112345700001",
"miniUrl": "https://your-domain.com/cm/G2024120112345700001",
"expiredTime": "2024-12-01T04:30:00Z"
},
"sign": "Base64签名值",
"resTime": "2024-12-01T04:00:00Z",
"reqId": "REQ20241201010"
}后续流程
- 商户后端拿到
h5Url与miniUrl后按设备返回给前端:浏览器使用h5Url,小程序普通链接二维码使用miniUrl。 cashier使用/cm/{orderNo}映射到统一收银台小程序;aggregate使用/am/{orderNo}映射到聚合支付小程序。- 用户在网关页完成支付后,平台通过
notifyUrl异步通知商户(事件pay.success)。 - 商户也可通过 网关订单查询 主动查询订单状态。
微信普通链接二维码配置
在微信公众平台/小程序后台配置普通链接二维码规则:
/cm/*→pages-weixin/gateway-cashier/index(统一收银台小程序)/am/*→pages-weixin/aggregate-pay/index(聚合支付小程序)
小程序从普通链接二维码进入时,微信会把完整 URL 放在 options.q 中;页面分别从 /cm/{orderNo} 或 /am/{orderNo} 提取平台网关单号。