类型 |
规范点 |
原因 |
业务操作 |
接口支持重复调用,前提是交易基本信息(买家、卖家、交易金额、超时时间等)在多次调用中保持一致,且交易尚未完成支付。 |
防止重复付款以及交易信息被篡改 说明:
|
即时到账的优势:快捷,不存在卖家发货、买家确认收货的操作,直接将买家的资金转入卖家的支付宝账号。 |
即时到账交易主要用于虚拟物品和不存在卖家发货、买家确认收货的交易场景,比如手机话费交易、游戏币充值、网上订餐类网站等。 |
|
填写买家支付宝账号时,不能与卖家的支付宝账号相同。 |
避免报错,如错误码:BUYER_SELLER_EQUAL。 |
|
即时到账交易不允许卖家在交易创建后修改价格 |
会影响同一笔交易的支付 |
|
支付宝每一次退款成功,都会向商户的即时到账异步通知地址notify_url发送一条交易成功的通知,其中状态有refund_status、refund_success。 注意:
|
如果不处理或者处理错误会将商户自己的业务逻辑执行2次以上 |
|
如果商户的一笔交易在退款期限内,没有进行退款操作,则支付宝系统会默认将交易的状态改为“交易完成”(即不可退款模式),并主动发送一条交易状态为trade_finished的异步通知(可以联系支付宝关闭发送),商户需要根据通知,结合自身业务逻辑做交易不可退款的数据库状态变更。 |
处理错误会导致商户业务逻辑重复2次付款成功 |
|
本接口支持的众多支付通道中,储蓄卡支付和信用卡支付一旦进入网银系统页面,支付宝将无法控制订单的支付效率问题。 |
便于做支付渠道区分 |
|
如果想要买家不安装数字证书也能进行余额支付,商户需要申请开通非证书余额支付功能;否则,买家必须申请安装数字证书才能用支付宝余额支付。 说明: 该种情况只有在买家从来没有申请过数字证书的情况下才有效。 |
保护买家账户安全 |
|
业务应用注意事项 |
站内不能关闭交易,只能通过站外接口关闭交易。可通过自定义超时参数实现控制交易关闭时间。 |
交易订单自定义超时关闭功能 |
一般情况下,异步通知比同步通知慢3秒左右。但在网络环境、服务器处理速度等因素影响下,有时异步通知会比同步通知快一些,所以商户需要使用数据库数据锁防止订单重复更新。 |
即时到账异步通知与同步通知时间 |
|
支付宝支付手续费扣取模式分为两种:
|
实时扣费时,在扣费支付宝账号的账务明细中可马上查到扣费记录;但月结模式下,则不会查到。 |
|
如果商户请求时传递了extra_common_param参数,支付宝会在同步和异步通知中返回该参数。 |
支持商户自定义公用回传参数(extra_common_param) |
|
建议商户不要使用类似js的window.open、location.replace等没有访问记录的重定向函数跳转到支付网关,强烈建议使用form表单提交数据。 |
规范代码使用规则及减少弹出控件拦截支付(导致支付成功率下降) |
|
在集成接口的过程中,如果商户使用seller_email作为收款账户,则当需要修改该支付宝账号登录名时,商户必须在程序中做相应修改,否则在支付过程中会出现卖家账户不存在的错误。推荐使用seller_id做为商户收款账户。 |
seller_id值是支付宝分配给商户的唯一身份ID,不会改变,使用seller_id作为收款账户可以避免seller_email变更导致商户无法收款的问题。(可在集成时联系支付宝技术支持获取seller_id值。) |
|
卖家发起退款操作后,买家是通过什么渠道付款的,则款项原路退回。比如,买家用的是支付宝账号余额付款,则钱退回到支付宝账号;借记卡付款,则退回借记卡;信用卡付款,则退回信用卡。 说明:
|
买家通过何种渠道付款,则款项原路退回。 |
类型 |
规范点 |
原因 |
网络 |
确保网络顺畅 |
防止接口调用失败 |
业务操作规则 |
接口支持重复调用,但必须确保每个合作伙伴每个退款批次号(batch_no)的唯一性。 |
防止重复退款 |
同一批明细里(detail_data)不允许包含两条交易号相同的退款明细 |
防止重复退款 |
|
必须保证要退款的账号余额充足 |
避免退款不成功 |
|
要退款的交易号必须存在且已经是付款成功状态,即交易状态(TRADE_STATUS)是TRADE_SUCCESS的状态。 |
避免退款不成功 |
|
收款账号不是签约账号,即参数seller_email填写的支付宝账号对应的合作者身份ID不是参数partner对应的合作者身份ID,该seller_email填写的支付宝账号必须与平台或者退款接口使用商户签约支付圈接口。 |
否则退款时会报没有签约的错误,即“PARTNER_NOT_SIGN_PROTOCOL”。 |
|
如果请求支付宝以后IS_SUCCESS返回T,那么当该批次中有一个或多个交易退款失败,此时不影响整个批次中其他交易的退款。 |
|
|
如果接口中设置了notify_url,当请求支付宝以后IS_SUCCESS返回为F时,支付宝系统不会发送服务器异步通知。 |
对请求的校验未通过 |
|
余额支付功能关闭的情况下,接口退款不受影响。 |
保证商户顺利完成交易退款 |
|
该接口支持单笔和批量退款,批量退款最多一次支持1000笔,50笔是最高效的退款笔数。数据请求以表单POST方式发送到支付宝。 |
无法传递大量数据 |
|
一笔交易可以多次退款,只需要遵守多次退款的总金额不超过该笔交易付款金额的原则。 |
支持多次退款 |
|
一笔交易的退款次数上限为99次 |
超过该次数则支付宝系统不会处理该笔交易的退款,如果接口中设置了notify_url,那么支付宝系统也不会发送服务器异步通知。 |
|
需要对退款成功后的异步通知返回结果做所有返回参数的解析分类,判断交易状态即可。 |
防止未来业务变更,有更好的兼容性。 |
|
操作退款时需要安装数字证书或支付盾等其他安全产品。 |
有密退款时需要输入支付密码 |
|
单笔数据集规则 |
退款笔数总和要等于参数batch_num的值 |
数据一致,防止发生退款金额错误。 |
退款资金流向 |
客户银行卡挂失或者注销将无法退回到客户账户中。需要商户向客户收集新的银行卡号并且提供声明对新的银行卡号正确性负责,委托支付宝退款。 |
退回到卡的情况:信用卡、信用卡卡通、Q账号、支付宝中间账号(例如:0571-88158090@alipay.com)支付的订单;其他的实时到账退到支付宝余额账户。 |
接口异常 |
异步处理如果响应时间过长直接导致退款返回失败,或者退款通知超过24小时未发出,则可以人工进行重新提交请求。 |
可能是支付宝的消息积压导致异步调度任务失败 |