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中GET变量的使用
Oct 09 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
php强制更新图片缓存的方法
Feb 11 PHP
php实现购物车功能(上)
Jul 23 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
php设计模式之策略模式应用案例详解
Jun 17 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 PHP
Laravel框架源码解析之反射的使用详解
May 14 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 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
php获取微信openid方法总结
2019/10/10 PHP
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
Python基于pillow判断图片完整性的方法
2016/09/18 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
中间件的定义
2016/08/09 面试题
写演讲稿要注意的六件事
2014/01/14 职场文书
机电专业大学生职业规划书范文
2014/02/25 职场文书
社区先进事迹材料
2014/05/19 职场文书
个人批评与自我批评
2014/10/15 职场文书
企业催款函范本
2015/06/24 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
canvas 中如何实现物体的框选
2022/08/05 Javascript