合单下单api

场景介绍

使用合单支付接口,用户只输入一次密码,即可完成多个订单的支付。目前最多一次可支持10笔订单进行合单支付。
用合单下单api在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再按扫码、JSAPI、APP、H5等不同场景生成交易串调起支付。

接口链接

URL地址:https://api.mch.weixin.qq.com/pay/combinedorder

是否需要证书

请求参数

名称

变量名

必填

类型

示例值

描述

合单appid

combine_appid

String(32)

wx8888888888888888

此项必须传合单支付发起方的appid。appid是商户在微信申请公众号或移动应用成功后分配的帐号ID,登录平台为mp.weixin.qq.com或open.weixin.qq.com

合单商户号

combine_mch_id

String(32)

1900000109

此项必须传合单支付发起方的商户号。商户号是商户在微信申请微信支付成功后分配的帐号ID,登录平台为pay.weixin.qq.com

设备号

device_info

String(32)

013467007045764

终端设备号(商户自定义,如门店编号)

随机字符串

nonce_str

String(32)

5K8264ILTKCH16CQ2502SI8ZNMTM67VS

随机字符串,不长于32位。推荐随机数生成算法

签名

sign

String(128)

C380BEC2BFD727A4B6845133519F3AD6

通过签名计算后得到的签名值,详见签名生成算法

签名类型

sign_type

String(64)

HMAC-SHA256

暂只支持HMAC-SHA256的签名方式

合单商户订单号

combine_out_trade_no

String(32)

1217752501201407033233368018

合单支付总单号,商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号

终端IP

spbill_create_ip

String(16)

8.8.8.8

当trade_type=MWEB(H5支付)时,必须填写用户端IP地址。其他支付方式也可填写服务端IP地址

交易起始时间

time_start

String(14)

20171225091010

订单生成时间,格式为yyyyMMddHHmmss,如2017年12月25日9点10分10秒表示为20091225091010

交易结束时间

time_expire

String(14)

20171225091510

订单失效时间,格式为yyyyMMddHHmmss,如2017年12月27日9点15分10秒表示为20091227091510。注意:最短失效时间间隔必须大于1分钟

通知地址

notify_url

String(256)

http://www.weixin.qq.com/wxpay/pay.php

异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数

交易类型

trade_type

String

JSAPI

根据支付场景不同请传对应值:

扫码支付:NATIVE

公众号支付:JSAPI

APP支付:APP

H5支付:MWEB

商品ID

product_id

String(32)

1234567890

trade_type=NATIVE时,此参数必传。此id为二维码中包含的商品ID,商户自行定义

合单用户标识

combine_openid

String(128)

120061098828009406

trade_type=JSAPI时,此参数必传,使用combine_appid获取的对应用户openid。Openid是用户在商户appid下的唯一标识

场景信息

scene_info

否(H5支付必传)

String(256)

//IOS移动应用

{"h5_info": {"type":"IOS","app_name": "王者荣耀","bundle_id": "com.tencent.wzryIOS"}}

//安卓移动应用

{"h5_info": {"type":"Android","app_name": "王者荣耀","package_name": "com.tencent.tmgp.sgame"}}

//WAP网站应用

{"h5_info": {"type":"Wap","wap_url": "https://pay.qq.com","wap_name": "腾讯充值"}}

该字段用于上报支付的场景信息,针对H5支付有以下三种场景,请根据对应场景上报,H5支付不建议在APP端使用,针对场景1,2请接入APP支付,不然可能会出现兼容性问题

1,IOS移动应用

"h5_info": h5支付固定传"h5_info" 

"type": 场景类型

"app_name": 应用名

"bundle_id":应用的bundle_id

2,安卓移动应用

"h5_info": h5支付固定传"h5_info" 

"type": 场景类型

"app_name": 应用名

"package_name": 包名

3,WAP网站应用

"h5_info": h5支付固定传"h5_info" 

"type": 场景类型

"wap_url": WAP网站URL地址

"wap_name": WAP 网站名

+子单信息

sub_order_list

String(10240)

{

 "order_num": 3,

 "order_list": [

  {"appid": "wxdace645e0bc2c424", 

   "mch_id" : "1900009001", 

   "body": "子订单1", 

   "out_trade_no": "OD201708030001", 

   "fee_type": "CNY", 

   "total_fee": 1234 ,

   "attach": "深圳分店"

  }

 ]

}

请参照示例,使用JSON格式上传子单信息。

order_num 子单笔数,Int,必填

order_list:[] 子单详情列表,字段详细说明见下拉列表(点击行前“+”打开下拉列表)

请求参数示例:

<xml>
<combine_appid>wxdace645e0bc2c424</combine_appid>

<combine_mch_id>1900009001</combine_mch_id>
<sub_order_list><![CDATA[{"order_num": 3,"order_list": [{"appid": "wxdace645e0bc2c424", "mch_id" : "1900009001", "body": "子订单1", "out_trade_no": "OD201708030001", "fee_type": "CNY", "total_fee": 1234,"attach": "深圳分店"},{"appid": "wxdace645e0bc2c424", "mch_id" : "1900009001", "body": "子订单2", "out_trade_no": "OD201708030002", "fee_type": "USD", "total_fee": 10,"attach": "商品说明","detail": "商品详细描述"},{"appid": "wxdace645e0bc2c424", "mch_id" : "1900009001","sub_appid":"wx888888888888","sub_mch_id": "88888888888","body": "子订单3", "out_trade_no": "OD201708030003", "fee_type": "CNY", "total_fee":88,"attach": "说明","detail": "商品详细描述."},]}]></sub_order_list>//请注意order_num、total_fee为数字型
<device_info>TEST01</device_info>
<nonce_str>4b4f6f692547affd2c8fadb39fed603a</nonce_str>
<combine_out_trade_no>19000090011489146530</combine_out_trade_no>
<spbill_create_ip>14.23.150.211</spbill_create_ip>
<time_start>20171225091010</time_start>
<time_expire>20171225091510</time_expire>

<notify_url>http://www.weixin.qq.com/wxpay/pay.php</notify_url>

<trade_type>JSAPI</trade_type>

<combine_openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</combine_openid>
<sign>144FF79B7391FE1BD0708470B7D8A2E3</sign>
<sign_type>HMAC-SHA256</sign_type>
</xml>

返回参数

名称

变量名

必填

类型

示例值

描述

返回状态码

return_code

String(16)

SUCCESS

SUCCESS/FAIL 
此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断

返回信息

return_msg

String(128)

签名失败

返回信息,如非空,为错误原因 
签名失败 
参数格式校验错误

 

当return_code为SUCCESS时,返回以下字段:

合单appid

combine_appid

String(32)

wx8888888888888888

合单支付发起方的appid相同。appid是商户在微信申请公众号或移动应用成功后分配的帐号ID,登录平台为mp.weixin.qq.com或open.weixin.qq.com

合单商户号

combine_mch_id

String(32)

1900000109

合单支付发起方的商户号。商户号是商户在微信申请微信支付成功后分配的帐号ID,登录平台为pay.weixin.qq.com

设备号

device_info

String(32)

013467007045764

终端设备号(商户自定义,如门店编号)

随机字符串

nonce_str

String(32)

5K8264ILTKCH16CQ2502SI8ZNMTM67VS

随机字符串,不长于32位。推荐随机数生成算法

签名

sign

String(128)

C380BEC2BFD727A4B6845133519F3AD6

通过签名计算后得到的签名值,详见签名生成算法

业务结果

result_code

String(16)

SUCCESS

SUCCESS/FAIL

错误代码

err_code

String(32)

SYSTEMERROR

详细参见错误列表

错误代码描述

err_code_des

String(128)

系统错误

错误返回的信息描述

 

当return_code 和result_code都为SUCCESS的时,返回以下字段:

交易类型

trade_type

String(16)

JSAPI

扫码支付:NATIVE

公众号支付:JSAPI

APP支付:APP

H5支付:MWEB

二维码链接

code_url

String(64)

weixin://wxpay/bizpayurl/up?pr=NwY5Mz9&groupid=00

trade_type=NATIVE时有返回,此url用于生成支付二维码,然后提供给用户进行扫码支付。

注意:code_url的值并非固定,使用时按照URL格式转成二维码即可

预支付交易会话标识

prepay_id

String(64)

CNY

微信生成的预支付会话标识,用于后续接口调用中使用,该值有效期为2小时

H5支付跳转链接

mweb_url

String(64)

https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241 

当trade_type=MWEB时必返回,mweb_url为拉起微信支付收银台的中间页面,可通过前端跳转至该url来唤起微信客户端,完成支付,mweb_url有效期为5分钟。

返回参数示例:

<xml>
 <return_code><![CDATA[SUCCESS]]></return_code>
 <return_msg><![CDATA[OK]]></return_msg>
 <combine_appid><![CDATA[wx2421b1c4370ec43b]]></combine_appid>
 <combine_mch_id><![CDATA[10000100]]></combine_mch_id>
 <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
 <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign>
 <result_code><![CDATA[SUCCESS]]></result_code>
 <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>
 <trade_type><![CDATA[MWEB]]></trade_type>
<mweb_url><![CDATA[https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241]]></mweb_url>
 </xml>

错误码

名称

描述

原因

解决方案

NOAUTH

商户无此接口权限

商户未开通此接口权限

请商户前往申请此接口权限

NOTENOUGH

余额不足

用户帐号余额不足

用户帐号余额不足,请用户充值或更换支付卡后再支付

ORDERPAID

商户订单已支付

商户订单已支付,无需重复操作

商户订单已支付,无需更多操作

ORDERCLOSED

订单已关闭

当前订单已关闭,无法支付

当前订单已关闭,请重新下单

SYSTEMERROR

系统错误

系统超时

系统异常,请用相同参数重新调用

APPID_NOT_EXIST

APPID不存在

参数中缺少APPID或者非法

请检查APPID是否正确

MCHID_NOT_EXIST

MCHID不存在

参数中缺少MCHID或者非法

请检查MCHID是否正确

APPID_MCHID_NOT_MATCH

appid和mch_id不匹配

appid和mch_id不匹配

请确认appid和mch_id是否匹配

LACK_PARAMS

缺少参数

缺少必要的请求参数

请检查参数是否齐全

OUT_TRADE_NO_USED

商户订单号重复

同一笔交易不能多次提交

请核实商户订单号是否重复提交

SIGNERROR

签名错误

参数签名结果不正确

请检查签名参数和方法是否都符合签名算法要求

XML_FORMAT_ERROR

XML格式错误

XML格式错误

请检查XML参数格式是否正确

REQUIRE_POST_METHOD

请使用post方法

未使用post传递参数 

请检查请求参数是否通过post方法提交

POST_DATA_EMPTY

post数据为空

post数据不能为空

请检查post数据是否为空

NOT_UTF8

编码格式错误

未使用指定编码格式

请使用UTF-8编码格式

SUBORDER_LIMIT_EXCEEDED

子单数量超过限制

子单数量超过系统限制最大值

减少一次支付的子单数量

USER_OPENID_NOT_MATCH

openid非法

下单的用户的openid不是发起方下的openid

 

POST_DATA_INVALID

post数据非法

可能包含有敏感词,或者带有XSS攻击之类的,或者请求参数不在接口列表中

修改后再尝试下单

COMBINE_PAY_NOAUTH

合单支付权限非法

没有为子单发起支付的权限

请申请合单支付权限

INVALID_PARAMS

入参错误

某些入参没有按照约定传入,或者两次传入的不一致

修改有问题的参数再尝试