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

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

即便是用户端没问题;万一自己的服务器网络异常了一下呢?

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

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

如果用户支付后,立即关闭了浏览器窗口,那么回调通知就会失败,但是用户的确是支付了,所以需要异步通知。


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

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

1、文件列表:

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

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

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

2、文件内容说明: 
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(其他快递)

3、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您们可以找等合同正式生效后再查询(获取方法:登陆签约的 
支付宝账户-?点击“商家服务”,就可以看到)

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

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

支付(异步通知notify_url 与 同步通知return_url的区别)的更多相关文章

  1. 支付宝接口(扫码支付的原理)使用文档说明 支付宝异步通知(notify_url)与return_url

    支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类. A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 B页面跳转通 ...

  2. 支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url.

    支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类. A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 B页面跳转通 ...

  3. 支付宝异步通知(notify_url)与return_url.

    支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类. A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 B页面跳转通 ...

  4. day114:MoFang:基于支付宝沙箱测试环境完成创建充值订单接口&服务端处理支付结果的同步通知和异步通知

    目录 1.基于支付宝提供的沙箱测试环境开发支付接口 1.后端提供创建充值订单接口 2.前端调用AlipayPlus发起支付 3.注意:自定义APPLoader完成接下来的开发 4.下载支付宝沙箱钱包A ...

  5. 微信,支付宝,支付异步通知验签,notify_url

    在支付接口开发中 ,当用户支付完成之后,阿里或者微信会向我们服务器发送一个支付结果的通知,里边带有一系列参数:其中特殊的是签名类型,和签名(他们根据这些参数做出来的签名). 我们的得到这些参数之后要去 ...

  6. 支付宝通知页面notify_url、返回页面return_url

     返回页面(return_url文件)工作原理 即:商户系统请求/支付宝响应交互模式 1. 构造请求数据 商户通过提供的接口代码示例,通过代码示例的规则,程序构造与运算得到sign加密结果以及构造后的 ...

  7. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)

    源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...

  8. MySQL主从复制(异步复制与半同步复制)

    1.MySQl主从复制 原理:将主服务器的binlog日志复制到从服务器上执行一遍,达到主从数据的一致状态. 过程:从库开启一个I/O线程,向主库请求Binlog日志.主节点开启一个binlog du ...

  9. spring aop 环绕通知around和其他通知的区别

    前言: spring 的环绕通知和前置通知,后置通知有着很大的区别,主要有两个重要的区别: 1) 目标方法的调用由环绕通知决定,即你可以决定是否调用目标方法,而前置和后置通知   是不能决定的,他们只 ...

随机推荐

  1. angular 创建服务

    一:新建服务模块和服务文件 ng g module services --spec=false ng g service services/quote --spec=false 二:在quote.se ...

  2. angular 响应式表单(登录实例)

    一.表单验证 1. 只有一个验证规则: this.myGroup = this.fb.group({ email:['hurong.cen@qq.com',Validators.required], ...

  3. JS学习笔记 - fgm练习 - 鼠标移入/移出div样式改变

    思路: div的默认样式正常设置. 鼠标移入时,发生改变的样式有3个,即 边框颜色,div背景色,字体颜色. 把这三个css改变设置在一个类名下,再通过js给div动态 添加/去除这个类名,实现div ...

  4. java中的switch用String作为条件

    在开发java程序的过程中,我们遇到了条件推断首选就是switch,可是java中的switch功能不支持字符串作为条件.这时我们该怎么办呢? --使用枚举. 一.枚举简单了解    1.enum是一 ...

  5. TCP的可靠传输机制(简单好理解:分段与流,滑窗,连接,流量控制,重新发送,堵塞控制)

    TCP的几大模块:分段与流,滑窗,连接,流量控制,重新发送,堵塞控制. 1.checksum:在发送TCP报文的时候,里面的信息可能会因为环境的问题,发送变化,这时,接收信号的时候就需要通过check ...

  6. C#DateTime与Unix时间戳的转换

    /// <summary> /// Unix时间戳转为C#格式时间 /// </summary> /// <param name="timeStamp" ...

  7. thinkphp3.2二维码扩展

    //简易二维码 public function qrcode(){ Vendor('phpqrcode.phpqrcode'); //生成二维码图片 $object = new \QRcode(); ...

  8. 前端js实现打印excel表格

    产品原型: 图片.png 功能需求:点击导出考勤表格按钮,会自动下载成Excel格式 图片.png 图片.png jsp页面代码: <div class="tools"> ...

  9. c++ 成员函数指针

    C++中,成员指针是最为复杂的语法结构.但在事件驱动和多线程应用中被广泛用于调用回叫函数.在多线程应用中,每个线程都通过指向成员函数的指针来调用该函数.在这样的应用中,如果不用成员指针,编程是非常困难 ...

  10. thinkphp将excel导入到数据库中

    首先下载phpexcel插件 http://pan.baidu.com/s/1hq56dFm 我用的是thinkphp框架的3.1版本,下载好压缩包,框架中的extend中的vendor文件夹中新建一 ...