● 合单支付的支付结果将只通知给合单支付发起方(即combine_appid一方)。
支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。
对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略(如30分钟共8次)定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。 (通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒)
注意:同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。
推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。
特别提醒:商户系统对于支付结果通知的内容一定要做签名验证,并校验返回的订单金额是否与商户侧的订单金额一致,防止数据泄漏导致出现“假通知”,造成资金损失。
支付通知接收地址是通过【合单下单api】中提交的请求参数notify_url设置,请确保通知url为外网直接可访问的url,不能携带参数。示例:notify_url:“https://pay.weixin.qq.com/wxpay/pay.action”
否
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
返回状态码 | 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 |
随机字符串 | nonce_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 |
设备号 | device_info | 否 | String(32) | 000077 | 设备号,自定义参数 |
合单用户标识 | combine_openid | 否 | String(128) | oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | trade_type=JSAPI时,此参数必填,此项为使用combine_appid获取的对应用户openid。Openid是用户在商户appid下的唯一标识(appid不同,则openid也不同) |
合单商户订单号 | combine_out_trade_no | 是 | String(32) | 1217752501201407033233368018 | 合单支付总单号,商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号 |
交易类型 | trade_type | 是 | String(16) | MWEB | 扫码支付:NATIVE 公众号支付:JSAPI APP支付:APP H5支付:MWEB |
付款银行 | bank_type | 是 | String(16) | CMC | 银行类型,采用字符串类型的银行标识,银行类型见附表 |
签名 | sign | 是 | String(128) | C380BEC2BFD727A4B6845133519F3AD6 | 通过签名计算后得到的签名值,详见签名生成算法 |
签名类型 | sign_type | 是 | String(64) | HMAC-SHA256 | 暂只支持HMAC-SHA256的签名方式 |
业务结果 | result_code | 是 | String(16) | SUCCESS | SUCCESS/FAIL |
业务结果描述 | result_msg | 是 | String(32) | OK | 对于业务执行的详细描述 |
错误代码 | err_code | 否 | String(32) | SYSTEMERROR | 详细参见错误列表 |
错误代码描述 | err_code_des | 否 | String(128) | 系统错误 | 错误返回的信息描述 |
+子单信息 | sub_order_list | 是 | String(10240) | { "order_num": 3, "order_list": [ {"appid": "wxdace645e0bc2c424", "mch_id" : "1900009001", "": "", "": "" } ] } | 请参照示例,使用JSON格式上传子单信息。 order_num 子单笔数,Int,必填 order_list:[] 子单详情列表,字段详细说明见下拉列表(点击行前“+”打开下拉列表) |
通知参数示例:
<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[TN55wO9Pba5yENl8]]></nonce_str>
<sign><![CDATA[BDF0099C15FF7BC6B1585FBB110AB635]]></sign>
<sign_type><![CDATA[HMAC-SHA256]]></sign_type>
<result_code><![CDATA[SUCCESS]]></result_code>
<trade_type><![CDATA[JSAPI]]></trade_type>
<combine_openid><![CDATA[oUpF8uN95-Ptaags6E_roPHg7AG0]]></combine_openid>
<bank_type><![CDATA[CMC]]></bank_type>
<combine_out_trade_no><![CDATA[1415757673]]></combine_out_trade_no>
<sub_order_list><![CDATA[{"order_num": 3,"order_list": [{"appid":"wx2421b1c4370ec43b","mch_id":"1230000109","openid":"oUpF8uMuAJO_M2pxb1Q9zNjWeS6o","total_fee":100,"cash_fee":100,"transaction_id":"4217752501201407033233368018","out_trade_no":"12177525012","attach":"test001","time_end":"20171030133525"},{"appid":"wx2421b1c4370ec43b","mch_id":"1230000109","openid":"oUpF8uMuAJO_M2pxb1Q9zNjWeS6o","sub_appid":"wx2421b1c437055ce","sub_mch_id":"1230000108","sub_openid":"oUp3rfMuAJO_123xb1Q9zNjWedco","trade_type":"JSAPI","total_fee":100,"cash_fee":100,"transaction_id":"4217752501201407033233368018","out_trade_no":"12177525012","attach":"test001","time_end":"20171030133525"},{"appid":"wx2421b1c4370ec43b","mch_id":"1230000109","openid":"oUpF8uMuAJO_M2pxb1Q9zNjWeS6o","trade_type":"JSAPI","total_fee":100,"fee_type":"USD","cash_fee":100,"cash_fee_type":"CNY","transaction_id":"4217752501201407033233368018","out_trade_no":"12177525012","attach":"test001","time_end":"20171030133525","rate_value":"65000000"}]}]]></sub_order_list>
</xml>