什么是合并支付?
通过支付宝的支付渠道,付款者可以同时支付多笔独立的订单,类似淘宝多笔订单的合并付款。一个支付请求包含多个即时到帐订单信息,一次支付后,形成多个支付宝订单,达到多个卖家各自收款的效果。
业务背景介绍
航空公司和平台都会与保险公司合作卖票卖保险。目前保监会有政策要求,保险费不能进商户的账号(目前的航空公司/平台与保险公司的合作模式就是一笔交易,先付给航空公司/平台后,再通过分润结算保险费给保险公司),需要直接收款至保险公司的账号。
合并发起方签约:
被合并方签约:
新快捷即时到账2.0V1/V2(V1站内退款不退手续费,V2站内退款退手续费)、高级手机网站支付2.0、高级手机APP支付2.0。
签约注意事项:
1、页面合并支付:仅需调用一个接口alipay.trade.page.merge.pay(收单合并支付页面接口)
2、wap或者app订单合并支付:需要先调用alipay.trade.merge.precreate(收单合并支付预创建接口),拿到预订单号(pre_order_no)后,再作为入参调用alipay.trade.wap.merge.pay(无线Wap合并支付接口)或者alipay.trade.app.merge.pay(无线app合并支付接口)。
3、根据业务场景自选接入接口(可选,非必须)
alipay.trade.refund 退款接口
alipay.trade.query 订单查询接口
alipay.trade.fastpay.refund.query 交易退款查询接口
1、合并支付2.0接口目前仅支持RSA签名,被合并子订单信息不需要签名,所以被合并方不需要配置密钥即可实现收单。与老版相比接口更简化释放了被合并方资源。如果仅合并支付,配置合并发起方appid对应的应用在openhome上的RSA(SHA1)密钥即可。
2、被合并的子订单可通过各自的appid调用退款接口发起退款。如果被合并方有退款需求,被合并方appid对应的应用也需要在openhome上配置RSA(SHA1)密钥才能调用对应的退款和查询接口。
3、密钥配置:https://openhome.alipay.com/platform/keyManage.htm
1、out_merge_no,当约定订单明细必须同时支付成功和同时支付失败则必须传入此参数,否则不需要填(填了也会被忽略),此参数必须在商户端唯一。
2、notify_url参数是否必传和子订单处理是否在同一个事务中有关,如果是同一个事务必传,否则会报ACQ.INVALID_PARAMETER错误。在同一个事务中异步通知只发送一次,包含所有子订单明细;不在同一事务中多笔子交易分开发送异步通知,每笔通知中只包含一条交易明细。
3、product_code取值:
pc:FAST_INSTANT_TRADE_PAY
wap: QUICK_WAP_WAY
app:QUICK_MSECURITY_PAY
4、当被合并子订单在同一事务中处理时timeout_express参数无效,默认超时时间15分钟;不在同一事务中时,代表请求合并的所有订单允许的最晚付款时间,逾期将关闭交易。
5、pre_order_no有效期2小时,超过2小时将失效。
6、可合并的最大笔数说明:同一事务下默认6笔;非同事务下,pc支持20笔,无线支持10笔。1.0默认20笔。
1、PC合并请求样例:(建议post请求)
https://openapi.alipay.com/gateway.do?biz_content={%22order_details%22:[{%22app_id%22:%222015122301032602%22,%22out_trade_no%22:%22B20160830000001%22,%22product_code%22:%22FAST_INSTANT_TRADE_PAY%22,%22seller_id%22:%222088101568351631%22,%22seller_logon_id%22:%22alipay-test06@alipay.com%22,%22subject%22:%22Iphone6%20%2016G%22,%22total_amount%22:%220.01%22},{%22app_id%22:%222013111400001969%22,%22out_trade_no%22:%22B20160830000002%22,%22product_code%22:%22FAST_INSTANT_TRADE_PAY%22,%22seller_id%22:%222088101568345155%22,%22seller_logon_id%22:%22alipay-test03@alipay.com%22,%22subject%22:%22Iphone6%2016G%20%E5%86%85%E5%AD%98%E5%8D%A1%22,%22total_amount%22:%220.01%22}],%22out_merge_no%22:%22OMN1472544233001%22}&sign=LF1po68DKOIRzlBVIqh8uMRMk4NDyWr+Sf/E8lkdTepP4T5iPK0b5iIG02Ybf7Bl6At66+Sob+diGAdFR92rsd2gii+jcYztLg43gXB1DgfD9rc/uGuiYOdgs9CVsm6Y+riohSaIzPEx87lfWvRQGtUNAKOa9nShz8U62EJWKGc=×tamp=2016-08-30%2017:56:31&sign_type=RSA&charset=UTF-8&app_id=2015122301032602&method=alipay.trade.page.merge.pay&version=1.0
2、合并预下单接口请求参数样例(建议post请求):
https://openapi.alipay.com/gateway.do?biz_content={%22order_details%22:[{%22app_id%22:%222015122301032602%22,%22out_trade_no%22:%22B112016090500001%22,%22product_code%22:%22QUICK_WAP_WAY%22,%22seller_id%22:%222088101568351631%22,%22seller_logon_id%22:%22alipay-test06@alipay.com%22,%22subject%22:%22Iphone6%2016G%22,%22total_amount%22:%220.01%22},{%22app_id%22:%222013111400001969%22,%22out_trade_no%22:%22B112016090500001%22,%22product_code%22:%22QUICK_WAP_WAY%22,%22seller_id%22:%222088101568345155%22,%22seller_logon_id%22:%22alipay-test03@alipay.com%22,%22subject%22:%22Iphone6%2016G%20%E5%86%85%E5%AD%98%E5%8D%A1%22,%22total_amount%22:%220.01%22}],%22out_merge_no%22:%22MERGE20160905123456789%22}&sign=LJw0PeAWfP62LrzE3+S/Qfb7yaM4EyXlBYlHFF+IbNu80riWj1KqdxMXcTgaCe0RbVJU1+49AMxx7lBnlDD5iEFW2ZQ3lnpbDbf2uQCQpVDKW5rLI72/Ux1pQDOF/jmIvOY90OI2mswebp2wDH8kaHdU0pNSBCdGoGon9NysZmU=×tamp=2016-09-05%2017:19:59&sign_type=RSA¬ify_url=https://m.alipay.com/notify.html&charset=UTF-8&app_id=2015122301032602&method=alipay.trade.merge.precreate&version=1.0
同步返回:
{ "alipay_trade_merge_precreate_response": { "code": "10000", "msg": "Success", "order_detail_results": [ { "app_id": "2015122301032602", "out_trade_no": "B112016090500001", "success": true }, { "app_id": "2013111400001969", "out_trade_no": "B112016090500001", "success": true } ], "out_merge_no": "MERGE20160905123456789", "pre_order_no": " VJI+MW3u3UUxI4TXNdVg9O1aKD08dwzVMaQMohUMjmydWBj7YqFAcu8AMHVsIVyVGtNosVaIi+gIIKZQTMPoPndiLh0PkUZQjSQV8rx6/Q41$gz " }, "sign": "M4rLasLF8E1GcLlxlPS+4L7NpUe7L03y5Q+wD48jdf/swImKgEEN4CmPRq7pQafGrctxsbUseam8+NBuUfIFvA1tSiH2PYQkcj/8oHxL8SX4DHOsNkxZ8Mqe/7UHh+9vzrWK4JrvwmBieRVEZpqKM4alLi+aXAD4F+pbEPVkDPQ=" }
3、 Wap合并,传入pre_order_no调用alipay.trade.wap.merge.pay请求样例。
https://openapi.alipay.com/gateway.do?biz_content={%22pre_order_no%22:%22VJI%2BMW3u3UUxI4TXNdVg9O1aKD08dwzVMaQMohUMjmydWBj7YqFAcu8AMHVsIVyVGtNosVaIi%2BgIIKZQTMPoPndiLh0PkUZQjSQV8rx6%2FQ41%24gz%22}&sign=RytORYWLNDp4xh1gzU52uMpyv3JQ7+aV6uqwhjOi3bvW9RFEI9BtXtkRDUQgpkaiJ8vi1JmKljG1cSEq4fwY3+fSVg44IL0zlUH4c+7jZE+sRzQrKNiJztG8XAfweK7MPXbA7GF9Koil9CUk/94NR6ipNv48MxPem0CGNny0nAQ=×tamp=2016-09-05%2017:33:05&sign_type=RSA¬ify_url=https://m.alipay.com/notify.html&charset=UTF-8&app_id=2015122301032602&method=alipay.trade.wap.merge.pay&version=1.0
会唤起wap收银台
支付成功跳转return_url页面,post返回信息:
{"alipay_trade_merge_precreate_response":{"code":"10000","msg":"Success","order_detail_results":[{"app_id":"2013111400001969","out_trade_no":"B112016090600002","success":true},{"app_id":"2015122301032602","out_trade_no":"B112016090600001","success":true}],"out_merge_no":"MERGE20160906123456789","pre_order_no":"VJI%2BMW3u3UUxI4TXNdVg9O1aKD08dwzVMsX94Q95%2B1XRrtZ86iGxu5ciTQOgUfniRTt5ITmOyjT3Sn5tzEUmTOBq1mbIfbRm7F8bvf4DYNnj%24gz"},"sign":"bFyxNEprNLw1PaHO000Qc5goztF38wlCDy3yGxgb77GTFASnwxmL0Iy1oOEuDSwbMZ18HKJj01jvK8G/YRAHgvcRi6/o9g4my80VUqT4Yq7/eGkt6mO2hDNznGnOpwxvuBWr+LMxM1v0PFeX6y01yd4P4vWOLK5rWilFgMxcBfU="}
4、 app端合并调用方法
1)ios调用:
方法名称:pay方法方法原型:
(void)payOrder:(NSString)orderStr fromScheme:(NSString)schemeStrcallback:(CompletionBlock)completionBlock;
方法功能:提供给商户快捷订单支付功能。
参数名称 |
参数描述 |
NSString* scheme |
商户程序注册的URL protocol,供支付完成后回调商户程序使用。 |
(CompletionBlock)completionBlock |
快捷支付开发包回调函数,返回免登、支付结果。本地未安装支付宝客户端,或未成功调用支付宝客户端进行支付的情况下(走H5收银台),会通过该completionBlock返回支付结果。相应的结果参考“同步通知参数说明”。 |
NSString* orderStr |
主要包含商户的订单信息,key="value"形式,以&连接。 |
2)android调用:
方法名称:payTask.pay
方法原型:
PayTask payTask = new PayTask(activity); payTask.pay(orderInfo,true);
方法参数: 实例化PayTask,传入参数activity 的实例。
参数名称 |
参数说明 |
String orderInfo |
主要包含商户的订单信息,key="value"形式,以&连接。 |
boolean isShowPayLoading |
用户在商户app内部点击付款,是否需要一个loading做为在钱包唤起之前的过渡,这个值设置为true,将会在调用pay接口的时候直接唤起一个loading,直到唤起H5支付页面或者唤起外部的钱包付款页面loading才消失。(建议将该值设置为true,优化点击付款到支付唤起支付页面的过渡过程。) |
orderStr同orderInfo的值,详见接口文档。
示例:
timestamp=2016-09-05 11:08:08&method=alipay.trade.app.merge.pay&app_id=1669&sign_type=RSA&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&biz_content= { "pre_order_no":"K1iSL1gn5cXW3Zwam%252B3IuidBcSKJRHb9frfBNDHfDr2MYXxYU6SvEENhBiz2UFELTTqUvCE%252B4YDOYmjK$00" }
1.Q:报错“MERGE_PAY_NOT_ALLOWED 合并支付失败”如何解决?
A:被合并的appid没有签约相应的销售方案,需要找BD签约。
2.Q:报错“INVALID_MERGE_PARTNER 订单中有商户不允许被合并支付,建议联系商户处理”如何解决?
A:发起合并的appid签约时没有把被合并的appid添加到可合并子订单限制集,需要找BD添加。