Skip to content

统一下单 ​

POST /api/pay/unifiedOrder

需要 公共签名参数。支持 JSON / 表单。

请求字段 ​

字段类型必填说明
mchOrderNostring是商户订单号,最多 64 字符,商户范围内唯一
wayCodestring是支付方式,最多 20 字符,见支付方式文章
amountinteger / string是整数分,1~999999999999;字符串不得带前导零
currencystring是当前仅支持 cny,最多 3 字符
subjectstring是商品标题,最多 64 字符
bodystring是商品描述,最多 256 字符
notifyUrlstring否HTTP(S) 异步通知地址,最多 128 字符
returnUrlstring否HTTP(S) 同步跳转地址,最多 128 字符
clientIpstring否客户端 IP,部分渠道场景需要
expiredTimeinteger否有效时长,单位秒;默认 300,建议传正整数
channelExtrastring否渠道扩展 JSON 文本,参与签名
payDataTypestring否Globetap 二维码类型 codeUrl / codeImgUrl,默认 codeImgUrl;开放 API 支付宝会转换为 Scheme,其他渠道不保证支持此请求字段
extParamstring否商户附加文本,查询和支付通知原样返回
authCodestring条件条码支付授权码,也可放入 channelExtra
buyerUserIdstring条件支付宝 JSAPI 用户标识,也可放入 channelExtra
openidstring条件微信 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 ​

字段类型说明
payOrderIdstring平台支付订单号
mchOrderNostring商户订单号
orderStateinteger支付订单状态;注意字段名与查询的 state 不同
payDataTypestring / null支付调起类型
payData渠道返回值 / null二维码内容、URL 或 SDK 参数
errCodestring / null渠道错误码
errMsgstring / 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 推断返回类型。

接口行为以当前 payment 实现为准。示例商户号与密钥均为虚构。