使用合单支付接口,用户只输入一次密码,即可完成多个订单的支付。目前最多一次可支持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 |
返回信息 | 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 | 入参错误 | 某些入参没有按照约定传入,或者两次传入的不一致 | 修改有问题的参数再尝试 |