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 相关文章推荐
php连接mysql数据库代码
Mar 10 PHP
关于页面优化和伪静态
Oct 11 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
PHP初学者最感迷茫的问题小结
Mar 27 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
php stream_get_meta_data返回值
Sep 29 PHP
php绘图之加载外部图片的方法
Jan 24 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
laravel实现于语言包的完美切换方法
Sep 29 PHP
基于PHP实现用户在线状态检测
Nov 10 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和ACCESS写聊天室(三)
2006/10/09 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
新浪的图片新闻效果
2007/01/13 Javascript
JavaScript 实现??打印?理
2007/04/28 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
详解javascript遍历方式
2015/11/11 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
详解vue 组件
2020/06/11 Javascript
js实现点击烟花特效
2020/10/14 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
python基础教程之Hello World!
2014/08/29 Python
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python多继承原理与用法示例
2018/08/23 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
优秀体育委员自荐书
2014/01/31 职场文书
小小的船教学反思
2014/02/21 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
教师自我剖析材料
2014/09/29 职场文书
协议书范文
2015/01/27 职场文书
安徽导游词
2015/02/12 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
如何利用python创作字符画
2022/06/25 Python
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android