php进行支付宝开发中return_url和notify_url的区别分析


Posted in PHP onDecember 22, 2014

本文实例分析了php进行支付宝开发中return_url和notify_url的区别。分享给大家供大家参考。具体分析如下:

在支付宝处理业务中return_url,notify_url是返回些什么状态呢,我们要根据它来做一些处理就必须了解return_url,notify_url的区别,下面我就来给大家介绍介绍.

问题描述:

我在处理支付宝业务中出现过这样的问题,付费完成后,在支付宝跳转到商家指定页面时,订单状态已经更新,通过调试发现是支付宝先通知notify_url,完成了订单状态.

支付宝return_url和notify_url通知顺序问题:

顺序不一定的,请别以先后顺序来做判断,具体如何判断,是根据您当前数据库里的状态和刚从支付宝里获取到的状态做对比来判断是否有做过处理了.

关于支付宝return_url和notify_url的区别,同步通知页面特性(return_url特性):

(1) 买家在支付成功后会看到一个支付宝提示交易成功的页面,该页面会停留几秒,然后会自动跳转回商户指定的同步通知页面(参数return_url);

(2) 该页面中获得参数的方式,需要使用GET方式获取,如request.QueryString("out_trade_no")、$_GET['out_trade_no'];

(3) 该方式仅仅在买家付款完成以后进行自动跳转,因此只会进行一次;

(4) 该方式不是支付宝主动去调用商户页面,而是支付宝的程序利用页面自动跳转的函数,使用户的当前页面自动跳转;

(5) 基于(4)的原因,可在本机而不是只能在服务器上进行调试;

(6) 返回URL只有一分钟的有效期,超过一分钟该链接地址会失效,验证则会失败;

(7) 设置页面跳转同步通知页面(return_url)的路径时,不要在页面文件的后面再加上自定义参数。例如:

错误的写法:

<http://www.alipay.com/alipay/return_url.php?xx=11>

正确的写法:

<http://www.alipay.com/alipay/return_url.php>

服务器异步通知页面特性(notify_url特性):

(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字符,会被支付宝服务器判定为该页面程序运行出现异常,而重发处理结果通知;

(9) cookies、session等在此页面会失效,即无法获取这些数据;

(10) 该方式的调试与运行必须在服务器上,即互联网上能访问;

(11) 该方式的作用主要防止订单丢失,即页面跳转同步通知没有处理订单更新,它则去处理;

(12) 通知ID(参数notify_id)只有一分钟有效期,超过一分钟该次通知会验证失败。一旦验证成功下次再验证就会失效。

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
WML,Apache,和 PHP 的介绍
Oct 09 PHP
全文搜索和替换
Oct 09 PHP
给初学PHP的5个入手程序
Nov 23 PHP
PHP 组件化编程技巧
Jun 06 PHP
用php来改写404错误页让你的页面更友好
Jan 24 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 PHP
PHP实现的memcache环形队列类实例
Jul 28 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
PHP实现获取文件mime类型多种方法解析
May 28 PHP
WebQQ最新登陆协议的用法
Dec 22 #PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 #PHP
php有道翻译api调用方法实例
Dec 22 #PHP
php匹配字符中链接地址的方法
Dec 22 #PHP
php用户注册时常用的检验函数实例总结
Dec 22 #PHP
CentOS6.5 编译安装lnmp环境
Dec 21 #PHP
在SAE上搭建最新wordpress的方法
Dec 21 #PHP
You might like
php,不用COM,生成excel文件
2006/10/09 PHP
php中cookie的作用域
2008/03/27 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
python的pstuil模块使用方法总结
2019/07/26 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
Python缓存技术实现过程详解
2019/09/25 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
如何利用Python写个坦克大战
2020/11/18 Python
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
大学生交通专业求职信
2014/09/01 职场文书
廉政承诺书范文
2015/04/28 职场文书
环保证明
2015/06/23 职场文书
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL