主题
统一下单
POST /api/pay/unifiedOrder
需要 公共签名参数。支持 JSON / 表单。
请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mchOrderNo | string | 是 | 商户订单号,最多 64 字符,商户范围内唯一 |
| wayCode | string | 是 | 支付方式,最多 20 字符,见支付方式文章 |
| amount | integer / string | 是 | 整数分,1~999999999999;字符串不得带前导零 |
| currency | string | 是 | 当前仅支持 cny,最多 3 字符 |
| subject | string | 是 | 商品标题,最多 64 字符 |
| body | string | 是 | 商品描述,最多 256 字符 |
| notifyUrl | string | 否 | HTTP(S) 异步通知地址,最多 128 字符 |
| returnUrl | string | 否 | HTTP(S) 同步跳转地址,最多 128 字符 |
| clientIp | string | 否 | 客户端 IP,部分渠道场景需要 |
| expiredTime | integer | 否 | 有效时长,单位秒;默认 300,建议传正整数 |
| channelExtra | string | 否 | 渠道扩展 JSON 文本,参与签名 |
| payDataType | string | 否 | Globetap 二维码类型 codeUrl / codeImgUrl,默认 codeImgUrl;开放 API 支付宝会转换为 Scheme,其他渠道不保证支持此请求字段 |
| extParam | string | 否 | 商户附加文本,查询和支付通知原样返回 |
| authCode | string | 条件 | 条码支付授权码,也可放入 channelExtra |
| buyerUserId | string | 条件 | 支付宝 JSAPI 用户标识,也可放入 channelExtra |
| openid | string | 条件 | 微信 JSAPI / 小程序用户标识,也可放入 channelExtra |
已移除的请求参数
不得传 divisionMode、receivers、useSysAutoDivisionReceivers,即使值为空也会拒绝。结算分账由商户应用对应支付渠道配置决定,创建订单不能新增或指定分账接收方。
金额不接受浮点数、布尔值、科学计数法、含其他字符的字符串;例如 1.99、true、"100abc" 都会被拒绝。
请求示例
完整业务示例见 快速开始。以下命令中的 request.json 应为已计算签名的实际请求:
sh
curl https://pay.example.com/api/pay/unifiedOrder \
-H 'Content-Type: application/json' \
--data-binary @request.json响应 data
| 字段 | 类型 | 说明 |
|---|---|---|
| payOrderId | string | 平台支付订单号 |
| mchOrderNo | string | 商户订单号 |
| orderState | integer | 支付订单状态;注意字段名与查询的 state 不同 |
| payDataType | string / null | 支付调起类型 |
| payData | 渠道返回值 / null | 二维码内容、URL 或 SDK 参数 |
| errCode | string / null | 渠道错误码 |
| errMsg | string / null | 渠道错误描述 |
json
{
"code": 0,
"data": {
"payOrderId": "P_DEMO", "mchOrderNo": "ORDER_DEMO", "orderState": 1,
"payDataType": "codeUrl", "payData": "https://pay.example.com/demo-qr",
"errCode": null, "errMsg": null
},
"sign": "对data计算的签名"
}重复提交与异常
普通直接支付重复商户单号会报订单已存在。收银台订单同应用且金额、币种、标题、描述、通知地址、返回地址、附加参数一致时返回原链接;不一致则拒绝。请求超时、断连或提示“上游支付结果未知”时,必须按原单号查询;不能直接认定未扣款。QR_CASHIER 首次创建保持状态 0,实际渠道支付在收银台选择后发起。
收银台订单
wayCode=QR_CASHIER 时,开放 API 返回 payDataType=payurl、payData=收银台订单链接、orderState=0;用户确认后才发起渠道支付。商户端测试入口返回 codeUrl 供展示该链接二维码。详见 收银台完整流程。
Globetap 的 ALI_QR 直接开放接口可能返回支付宝 Scheme payurl;收银台保留二维码并另附唤起链接。必须按实际 payDataType 处理,不能仅据 wayCode 推断返回类型。