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 iconv函数的使用详解
Jun 09 PHP
php class中public,private,protected的区别以及实例分析
Jun 18 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
Nov 22 PHP
php判断文件上传类型及过滤不安全数据的方法
Dec 17 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
Jan 07 PHP
iOS+PHP注册登录系统 PHP部分(上)
Dec 26 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
Laravel框架查询构造器简单示例
May 08 PHP
Laravel5.4框架中视图共享数据的方法详解
Sep 05 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
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
php提交post数组参数实例分析
2015/12/17 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
Python中正则表达式的用法实例汇总
2014/08/18 Python
Django实现跨域的2种方法
2019/07/31 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
广州品高软件.net笔面试题目
2012/04/18 面试题
教师校本培训方案
2014/02/26 职场文书
信息技术课后反思
2014/04/27 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
怎样写离婚协议书
2015/01/26 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript