统一下单
业务系统调用此接口创建支付订单,获取支付参数后,再自行构造支付场景让用户进行支付。 被扫及协议支付方式调用此接口后,不再需走支付流程。
接口说明
请求参数
腾讯云商付平台商户编号(管理控制台→商户管理→商户ID)
订单金额,单位:分
支付场景:
SWIPE:被扫;
MINI_PROGRAM:小程序;
PUBLIC:公众号;
PC:网页支付;
APP:app支付;
H5:h5支付;
AGREEMENT:快捷支付;
AUTHORIZE:免密支付;
NATIVE_QR:订单码;
支付渠道;实际支付渠道,根据具体接入的通道传值:如:
ALIPAY: 支付宝;
WXPAY:微信支付;
UNIONPAY:银联支付;
WALLETPAY:储值支付
外部订单号,即业务系统侧订单;
只能是数字、大小写字母、下划线;且在同一个主体下唯一。
订单标题
订单过期时间,格式:2023-03-05 11:54:20。
不传则默认30分钟,若在过期时间之前未完成支付,订单将会流转为失败,不可再进行支付。
支付成功后的回调地址
用户支付成功后,前端跳转URL
支付渠道扩展字段,第三方通道的扩展信息,根据具体对接的渠道情况传值;
该字段为 json 序列化之后的字符串,参考右侧请求示例;
如:微信、支付宝下单时需要将用户的openid或userid,及应用id传入,结构如下
分账信息列表
用户信息,储值支付必填
门店信息
外部设备ID
商品列表
分润接收方列表(当分账模板选择按订单、按角色分账时传)
设备信息
优惠标记,代金券或立减优惠的参数
附加信息,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段
付款备注
挂账信息。支付通道耦合银行账户体系时必填,否则不用。
支付钱包信息。储值余额支付时传入
是否异步下单扣款,true:异步下单扣款,false:同步下单扣款,当前限定于被扫场景使用
{
"ChannelSubMerchantId": "CM6756531983210274560",
"TotalAmount": 1000,
"PayChannel": "WXPAY",
"PayType": "MINI_PROGRAM",
"OrderSubject": "杂粮煎饼",
"OutOrderId": "demo202211200001",
"NotifyUrl": "https://business.com/pay/notify",
"ExternalPaymentData": "{\"WxAppId\":\"wx43f1t4567721a03e\",\"WxOpenId\":\"oXLUp5OHJof5768CoFFDuuaRn8kc\"}",
"Currency": "CNY",
"Attachment": "原路返回string",
"SceneInfo": {
"DeviceType": "04",
"PayerClientIp": "14.15.16.17",
"DeviceId": "00000001",
"Longitude": "+121.48352",
"latitude": "+23.561345"
},
"Remark": "备注",
"FundAllocateList": [
{
"ChannelSubMerchantId": "CM-B",
"AllocateAmount": 200,
"AllocatePeriod": "D0"
},
{
"ChannelSubMerchantId": "CM-C",
"AllocateAmount": 100,
"Freeze": true,
"AllocatePeriod": "D0"
}
]
}
ExternalPaymentData 结构
变量 | 类型 | 是否必填 | 描述 |
---|---|---|---|
AuthCode | string | 否 | 支付凭证:用户付款码。被扫场景下必填 |
WxAppId | string | 否 | 微信开放平台的应用 AppId.(如:公众号、小程序、APP、H5、PC 等应用的 AppId ) |
WxOpenId | string | 否 | 微信用户在当前 WxAppId 下的 Openid,公众号及小程序场景下微信支付必填 |
WxServiceInfo | WxServiceInfo | 否 | 微信订单服务信息,免密支付场景下微信支付必填 |
WxRiskInfo | WxRiskInfo | 否 | 微信订单风险金信息,免密支付场景下微信支付必填 |
WxPostPayments | array | 否 | 微信支付分免密订单后付费项目明细 |
NeedUserConfirm | bool | 否 | 微信支付分免密订单模式,默认为true,需用户确认订单 |
AliAppId | string | 否 | 支付宝开放平台的应用 AppId.(如:生活号、小程序、APP、H5、PC 等应用的 AppId ) |
AliUserId | string | 否 | 支付宝用户在当前 AliAppId 下的 Userid,生活号及小程序场景下支付宝支付必填 |
AliAgreementParams | AliAgreementParams | 否 | 支付宝免密代扣支付协议参数 |
CmbYwtArgNo | string | 否 | 招行一网通支付免登录协议号,首次上送完成支付与对应用户签约,再次上送用户可免登录 |
WxServiceInfo 结构
变量 | 类型 | 是否必填 | 描述 |
---|---|---|---|
ServiceId | string | 是 | 微信开放平台审核通过的支付分服务ID,该服务ID有本接口对应产品的权限 |
ServiceStartTime | string | 否 | 服务开始时间,格式:2023-03-05 11:54:20。创建微信支付分订单时传入,若不传入则以支付分订单确认时间OnAccpet为准 |
ServiceEndTime | string | 否 | 预计服务结束时间 ,格式:2023-03-05 11:54:20。微信支付分订单完结时必传 |
WxRiskInfo 结构
变量 | 类型 | 是否必填 | 描述 |
---|---|---|---|
FundType | string | 是 | 风险金类型。押金:DEPOSIT,预付款:ADVANCE,保证金:CASH_DEPOSIT,预估订单费用:ESTIMATE_ORDER_COST |
FundAmount | integer | 是 | 风险金额,单位分 |
WxPostPayment 结构
变量 | 类型 | 是否必填 | 描述 |
---|---|---|---|
Name | string | 是 | 后付费项目名称 |
Amount | int | 是 | 金额 |
Description | string | 否 | 描述 |
Count | int | 否 | 数量 |
AliAgreementParams 结构
变量 | 类型 | 是否必填 | 描述 |
---|---|---|---|
PaySignFlag | bool | 否 | 支付宝统一下单支付并签约时传入true,用户支付的同时完成代扣协议签署 |
OutAuthorizationId | string | 是 | 外部协议号 |
ThirdAuthorizationId | string | 是 | 第三方协议号 |
SignScene | string | 否 | 支付宝签约场景,支付并签约时必传 |
AsyncType | string | 否 | 支付宝异步代扣类型,不传则为同步代扣。NORMAL_ASYNC: 普通异步模式,NEAR_REAL_TIME_ASYNC:准实时异步模式 |
RetryType | string | 否 | 扣款重试类型,普通异步模式传入。NONE_AND_CLOSETRADE:不重试且关闭订单,NONE:不重试且等待,RETRY:重试直到超时关单(默认) |
返回参数
{
"Response": {
"RequestId": "A8E7B797ADD44C3AA57E87AD7420A725",
"Result": {
"OutOrderId": "OUT2022111900000004",
"ChannelOrderId": "679735736991281152",
"ThirdPayOrderId": "230420127444480387",
"TotalAmount": "1000",
"OrderStatus": "PAYING",
"PayInfoType": "JSAPI",
"PayInfo": "{\"appId\":\"wxad53ca7fbb5gg5f2\",\"timeStamp\":\"1681867396\",\"nonceStr\":\"94981e22ac0b4663949a442f31739b53\",\"package\":\"prepay_id=wx190923168532565900979a7da2170000000\",\"signType\":\"RSA\",\"paySign\":\"rhOR5lnhv6w2asdMiqRHU/aEZjhk1J4fGT2/Z5vxqtNcaLyHYmqDiIZZqxlSgSibWb/Z1a8SJdzLH9u0nnBKa0u0wtVaXgB6WKUahYtwQZC2ZadaYj6AkAeKLRIUHObVgAClbiiaiUjiaC9JUhj11m7JkClwpRvJkXQi4QzTdjA+kYv+32cgUido8SWIt6WZZXyH1qJTG1rYJC8IeUMgktH8oOoGzlxpaJbgB41j+pBd10b4R4DExlJ+KWP7N8iPj5YrbIzGJ2MsZ8L2U0jKLjpfKF/3d4hsc4or7EKIXdffgsreedaW6JzZ77gyb5ounChaea6CEP1UpUUAvgrkJwgw==\"}"
},
"ErrCode": "SUCCESS",
"ErrMessage": "成功"
}
}
ErrCode 码表
错误代码 | 描述 | 解决方案 |
---|---|---|
SUCCESS | 请求成功 | 当 OrderStatus 为 PAYING 表示订单下单成功,参考支付面板拉起指引来使用 PayInfo 字段完成支付; 当 OrderStatus 为 SUCCESS 表示订单支付成功; 当 OrderStatus 为 PAY_FAIL 表示下单失败,失败原因见 FailReason 字段; |
FailedOperation.SystemError | 系统未知异常 | 系统未知异常,请稍后重试 |
ORDER.INVALID_PARAMETER | 参数有误 | 请根据返回描述修正请求参数 |
ORDER.OPERATE_IS_PROCESSING | 订单存在并发操作 | 当前支付订单同时存在别的请求操作(如下单、退款、关单等),请稍后重试 |
ORDER.ORDER_RECORD_ALREADY_EXIST | 订单已存在 | 订单已存在,并且状态为终态,请调用查单接口确认订单状态 |
NO_MERCHANT_SECRET | 商户秘钥有误 | 商户秘钥配置有误,请联系腾讯云商付工作人员确认 |
ChannelOperationError | 下游银行通道业务错误 | 下游通道返回的业务错误,详细原因请参考接口返回的 ErrMessage,请稍后重试 |