支付宝即时到账交易接口

通知返回数据处理

页面跳转同步通知页面特性

  1. 买家在支付成功后会看到一个支付宝提示交易成功的页面,该页面会停留几秒,然后会自动跳转回商户指定的同步通知页面(参数return_url)。
  2. 该页面中获得参数的方式,需要使用GET方式获取,如request.QueryString("out_trade_no")、$_GET['out_trade_no']。
  3. 该方式仅仅在买家付款完成以后进行自动跳转,因此只会进行一次。
  4. 该方式不是支付宝主动去调用商户页面,而是支付宝的程序利用页面自动跳转的函数,使用户的当前页面自动跳转。
  5. 该方式可在本机而不是只能在服务器上进行调试。 即时到账交易接口 支付宝(中国)网络技术有限公司 版权所有| 版本:4.8 第 36 页
  6. 返回URL只有一分钟的有效期,超过一分钟该链接地址会失效,验证则会失败。
  7. 设置页面跳转同步通知页面(return_url)的路径时,不要在页面文件的后面再加上自定义参数。例如: 错误的写法:http://www.alipay.com/alipay/return_url.php?xx=11 正确的写法:http://www.alipay.com/alipay/return_url.php 8. 由于支付宝会对页面跳转同步通知页面(return_url)的域名进行合法有效性校验,因此设置页面跳转同步通知页面(return_url)的路径时,不要设置成本机域名,也不能带有特殊字符(如“!”),如: 􀁺 错误的写法: http://localhost/alipay/return_url.php http://localhost:80/alipay/return_url.php http://商户自定义地址/alipay/return!url.do 􀁺 正确的写 法: 能够正常访问的域名地址:http://商户自定义地址/alipay/return_url.php 能够正常访问的IP地址:http://121.1.1.255/alipay/return_url.php

服务器异步通知页面特性

  1. 必须保证服务器异步通知页面(notify_url)上无任何字符,如空格、HTML标签、开发系统自带抛出的异常提示信息等;
  2. 支付宝是用POST方式发送通知信息,因此该页面中获取参数的方式,如: request.Form("out_trade_no")、$_POST['out_trade_no'];
  3. 支付宝主动发起通知,该方式才会被启用;
  4. 只有在支付宝的交易管理中存在该笔交易,且发生了交易状态的改变,支付宝才会通过该方式发起服务器通知(即时到账中交易状态为“等待买家付款”的状态默认是不会发送通知的);
  5. 服务器间的交互,不像页面跳转同步通知可以在页面上显示出来,这种交互方式是不可见的;
  6. 第一次交易状态改变(即时到账中此时交易状态是交易完成)时,不仅页面跳转同步通知页面会启用,而且服务器异步通知页面也会收到支付宝发来的处理结果通知;
  7. 程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。 一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:2m,10m,10m,1h,2h,6h,15h);
  8. 程序执行完成后,该页面不能执行页面跳转。如果执行页面跳转,支付宝会收不到success字符,会被支付宝服务器判定为该页面程序运行出现异常,而重发处理结果通知; 即时到账交易接口 支付宝(中国)网络技术有限公司 版权所有| 版本:4.8 第 37 页
  9. cookies、session等在此页面会失效,即无法获取这些数据;
  10. 该方式的调试与运行必须在服务器上,即互联网上能访问;
  11. 该方式的作用主要防止订单丢失,即页面跳转同步通知没有处理订单更新,它则去处理;
  12. 当商户收到服务器异步通知并打印出success时,服务器异步通知参数notify_id才会失效。也就是说在支付宝发送同一条异步通知时(包含商户并未成功打印出success导致支付宝重发数次通知),服务器异步通知参数notify_id是不变的。

通知触发条件

触发条件名 触发条件描述 触发条件默认值
TRADE_FINISHED 交易完成 true(触发通知)
TRADE_SUCCESS 支付成功 true(触发通知)
WAIT_BUYER_PAY 交易创建 false(不触发通知)
TRADE_CLOSED 交易关闭 false(不触发通知)

���说明: 商户可以向支付宝申请配置,是否触发各交易状态下的异步通知。

商户业务处理注意事项

当支付宝处理完成后,支付宝会把处理结果以当前页面跳转同步通知和支付宝服务器主动通知商户网站两种形式,反馈给商户网站。商户可以从页面跳转同步通知页面或者从服务器异步通知页面中获得这些信息,并且在验证通过的判断中增加商户的业务逻辑处理程序。

当商户有传递参数notify_url(服务器异步通知页面路径)或return_url(页面跳转同步通知页面路径)时,商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。如果商户未正确处理业务通知,存在潜在的风险,商户自行承担因此而产生的所有损失。

  1. 交易状态TRADE_SUCCESS的通知触发条件是商户签约的产品支持退款功能的前提下,买家付款成功;
  2. 交易状态TRADE_FINISHED的通知触发条件是商户签约的产品不支持退款功能的前提下,买家付款成功;或者,商户签约的产品支持退款功能的前提下,交易已经成功并且已经超过可退款期限;
  3. 交易成功之后,商户(高级即时到账或机票平台商)可调用批量退款接口,系统会发送退款通知给商户,具体内容请参见批量退款接口文档;
  4. 当商户使用站内退款时,系统会发送包含refund_status和gmt_refund字段的通知给商户。

��� 说明:

更多业务处理注意事项请参见《即时到账交易接口(create_direct_pay_by_user)接入与使用规则》文档。