支付(异步通知notify_url 与 同步通知return_url的区别)

同步通知和异步通知发送的数据没有本质的区别;
同步通知有2个做用;
第一是从支付宝的页面上返回本身的网站继续后续操做;
第二是携带支付状态的get参数;让本身的网站用于验证;

同步通知后;还须要异步通知主要是为了防止出现意外状况;
由于涉及到金钱;这是一个对安全和稳定要求比较严格的场景;
若是同步通知的过程当中;用户不当心关闭了浏览器;或者浏览器卡死了;
异步也能收到通知;记录支付状态;

即使是用户端没问题;万一本身的服务器网络异常了一下呢?

若是本身的服务器没有正确返回接受到通知的状态;
支付宝的服务器会在一段时间内持续的往本身的服务器发送异步通知;
一直到成功;

顺便去确认了下;这个一段时间是:
25 小时之内完成 8 次通知(通知的间隔频率通常是:4m,10m,10m,1h,2h,6h,15h)


若是用户支付后,当即关闭了浏览器窗口,那么回调通知就会失败,可是用户的确是支付了,因此须要异步通知。


保险用的,除了关闭浏览器这种常见的意外状况,异步通知的接口也会有时候不可访问,支付宝会周期性的反复请求异步接口,刚开始是1分钟后重试,而后8分钟以后重试,而后30分钟后重试,而后1小时,而后5小时,这种。若是2天内都没法成功,就真正放弃。这个原理,具体的屡次调用的规则请看官方文档。

------------------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------

支付宝异步通知notify_url 与 同步通知return_url的区别

一、文件列表:php

alipay_config.php    (基本参数配置页面,填写商家的支付宝安全校验码,合做id,支付宝账号等内容)
index.php            (提供给商家的接入页面,包含了物流信息,商品信息等内容)
return_url.php       (跳转页面,买家支付成功后跳转的页面,仅当买家支付成功后跳转一次。)

notify_url.php       (异步通知,下单成功后,支付宝服务器通知商户服务,并把这笔订单的状态通知给商户,商户根据返回的这笔订单的状态,修改网站订单的状态,好比等待买家付款状态,买家已经付款等待卖家发货.....)html

alipay_service.php    支付核心类文件(建议不要修改)
alipay_notify.php     返回核心类文件(建议不要修改)
浏览器


二、文件内容说明: 
alipay_config.php 文件 
-- show_url     = ""                     '商户网站的网址。
-- seller_email    = ""                     '请填写签约支付宝帐号,
-- partner    = ""             '填写签约支付宝帐号对应的partnerID,
-- key        = ""    '填写签约帐号对应的安全校验码
如何获取支付宝账号,安全校验码和partner 
'登录 www.alipay.com 后, 点商家服务,能够看到支付宝安全校验码和合做id,导航栏的下面 
notify_url                   交易过程当中服务器通知的页面 要用 http://格式的完整路径,例如     http://www.alipay.com/alipay/notify_url.php 注意文件位置请填写正确
return_url                   付完款后跳转的页面 要用 http://格式的完整路径, 例如          http://www.alipay.com/alipay/return_url.php 注意文件位置请填写正确。

index.php 文件
按照alipay_config.php文件进行配置,而后修改商品名称,商品描述,外部商家订单号等
logistics_fee             物流配送费用
logistics_payment         物流配送费用付款方式:SELLER_PAY(卖家支付)、BUYER_PAY(买家支付)、                                 BUYER_PAY_AFTER_RECEIVE(货到付款)
logistics_type            物流配送方式:POST(平邮)、EMS(EMS)、EXPRESS(其余快递)

三、return_url 与 notify_url 的区别
买家付款成功后,若是接口中指定有return_url ,买家付完款后会跳到 return_url所在的页面,这个页面能够展现给客户看,这个页面只有付款成功才会跳转.
安全

notify_url:服务器后台通知,这个页面是程序后台运行的(买家和卖家都看不到),买家付完款后,支付宝会调用notify_url这个页面所在的页面并把相应的参数传递到这个页面,这个页面根据支付宝传递过来的参数修改网站订单的状态,更新完订单后须要在页面上打印出一个success给支付宝,若是反馈给支付宝的不是success,支付宝会继续调用这个页面. 
流程:买家付完款(trade_status=WAIT_SELLER_SEND_GOODS)--->支付宝通知notify_url---& gt;若是反馈给支付宝的是success(表示成功,这个状态下再也不反馈,若是不是继续通知,通常第一次发送和第二次发送的时间间隔是3分钟)
剩下的过程,卖家发货,买家确认收货,交易成功都是这个流程
服务器


常见问题:
1.根据代码实例和开发文档熟悉接口,将代码实例的相关参数信息填写完整(能够虚拟参数),在本地测试(不上传到服务器)支付宝接口。若是没有任何问题再将接口根据实际业务作到网站或者网站后台。
2.测试时您们须要两个支付宝帐户,其中一个必须实名认证而且保证有必定的金额,以便测试时使用。另一个账户能够做为收款方(卖家)(针对于支付接口)
3.若是作支付宝订单信息和您们后台数据同步请集成时作数据返回处理,本地测试可使用同步测试,若是在服务器上测试,能够经过异步来作也能够(支付宝有两种数据返回处理:同步返回和异步返回)。
同步返回(return_url)和异步返回(notify_url)的区别【return_url和notify_url参数必须是两个返回处理文件的绝对路径】?

答:同步返回处理(return_url):是一种可视化的返回,ie页面跳转通知,只要支付成功,支付宝经过get方式跳转到这个地址,而且带有参数给这个页面。客户获取信息受到买家操做的影响。若是买家支付完成后客户服务器响应比较慢,买家在显示支付宝提示的“即时到帐支付成功“时关闭页面,那么客户网站是获取不到信息,咱们这边称为” 掉单“。并且这个返回处理是一次性调取,即支付成功后才调取同步返回处理。

异步返回处理(notify_url):它的数据交互是经过服务器间进行数据交互,必须将其放置在服务器上(公网)测试,服务器post消息到异步返回处理页面,须要客户技术在异步返回处理页面处理相关的数据处理,而后每一步操做都要返回给支付宝success(不能包含其余的HTML脚本语言,不能够作页面跳转。)这个返回处理若是集成OK,那么基本不会出现掉单,由于支付宝会在24小时以内分6~10次将订单信息返回个给客户网站,直到支付宝捕获success。

备注:同步返回处理则会受到买家操做的影响:
假如买家在操做的时候,支付宝完毕进入支付宝提示成功页面,这个时候因为服务器相应比较慢,那么买家有可能会关闭这个页面,这个时候您们就会接受不到支付宝返回的信息,还有有些网银支付后也不会调取支付宝的同步返
回处理页面,这样您在同步作数据处理一样接受不到数据。
备注:
请注意:如今您们集成的时候先按照提供给您们的测试帐户的ID来作,至于正式帐户的ID您们能够找等合同正式生效后再查询(获取方法:登录签约的 
支付宝帐户-?点击“商家服务”,就能够看到)

--处理支付宝返回通知失败几种状况:

一、SIGN与MYSIGN不等,responseTxt为invalid命令参数不对,该错误 是因为合做伙伴ID(parnterID)与安全校验码(key)未填,或填错致使
二、SIGN与MYSIGN相等,responseTxt为false,是因为服务器、端口等因素致使,这时请检查
a.防火墙是否屏蔽支付宝的IP(支付宝锁使用的IP地址是:121.0.26.11,范围:121.026.0~255)
b.端口80或者443端口开放没有或者被其余服务占用
c.以上若是都没有问题,可能会是网络验证超时致使(支付宝验证时间是1分钟,SIGN与MYSIGN不等会致使超时),须要等待网络稳定再肯定问题
三、SIGN与MYSIGN不等,responseTxt为true,此时只有两种状况会出现:
其一:传递参数时格式不符合(例如:带自定义参数)致使签名不一致
其二:编码格式出现问题,这时候请检查服务器编码和网站编码是否一致,能够写编码过滤解决也能够在返回页面强制编码转换
相关文章
相关标签/搜索