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 UTF8 文件的签名问题
Oct 30 PHP
PHP操作数组的一些函数整理介绍
Jul 17 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
Feb 02 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
php 三大特点:封装,继承,多态
Feb 19 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
Apr 25 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
Laravel 关联模型-关联新增和关联更新的方法
Oct 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
js树形控件脚本代码
2008/07/24 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python解决八皇后问题示例
2018/04/22 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
python数据化运营的重要意义
2019/11/25 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
火车来了教学反思
2014/02/11 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
心灵捕手观后感
2015/06/02 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
python Tkinter的简单入门教程
2021/04/11 Python
在pyCharm中下载第三方库的方法
2021/04/18 Python
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技
MySQL详细讲解变量variables的用法
2022/06/21 MySQL
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android