php支付宝在线交易时怎么实现的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php支付宝在线交易时怎么实现的?相关的知识,希望对你有一定的参考价值。
我现在的项目是基于thinkphp的要用到支付宝交易 一般普通的网站是怎么实现支付宝交易的,有谁有这个插件、源码或案例都可以,能否发给来给我看下? 小弟感激不尽! 解决了加100分 我的qq:384214001
参考技术A 利用支付宝api,具体支付宝api有教程的。你百度搜下! 参考技术B 去直接下载下载申请支付宝接口代码和模板,配置信息,用模拟登陆之类的,能保证安全嘛本回答被提问者采纳 参考技术C 要申请支付宝的接口!thinkphp官网上有教程的!追问最好是不用申请商户的 有模拟登陆之类的吗?
追答没有,有接口不用,要去弄模拟登陆,为什么?
追问最近一个项目可能支付宝接口申请不下来
参考技术D 这个真的是太专业了!,,, 第5个回答 2014-01-12 当我们慢慢长大,也慢慢的明白了:这个世界,已不再单纯了。支付宝接口 notify_url.php和return_url.php这两个页面应该怎么写
汗,怎么会不能读取session呢?给你粘贴段淘宝技术的解释:返回页面(return_url文件)工作原理
即:商户系统请求/支付宝响应交互模式
1、 构造请求数据
商户通过提供的接口代码示例,通过代码示例的规则,程序构造与运算得到sign加密结果以及构造后的请求给支付宝的数据集合。get方式下是url地址链接,post方式下是支付宝网关地址及参数集合。
2、 发送请求数据
把构造完成的数据集合,通过页面链接跳转或表单提交的方式传递给支付宝。
3、 请求的交易
支付宝得到这些集合后,会先做安全校验等验证,一系列验证通过后便会处理完成这次发送过来的数据请求。
4、 返回相应数据
支付宝对处理完成的交易,程序上自动进行重新构造成url地址链接,以自动跳转的方式跳回商家在请求时设定好的页面路径地址(参数return_url,商家没设定,则不会跳回)。
5、 对相应的数据进行处理
商家的返回页面(参数return_url指定页面文件)得到支付宝返回的数据,把这些数据结合自身网站情况,进行数据处理(如:订单更新)。
返回页面(notify_url文件)工作原理
即:支付宝主动通知交互模式(支付宝反馈数据)
前提:若要支付宝能主动通知,需商户在请求时设定好通知的页面路径(参数notify_url),且该页面文件完全空白,无任何字符。
1、 发起通知
一旦交易状态发生变更(如:买家已付款,等待卖家发货),支付宝便会根据自动进行数据处理,并主动调用商户在请求时设定好通知的页面路径(参数notify_url)
2、 对通知数据进行处理
商户网站收到支付宝发送过来的通知数据,把这些数据结合自身网站情况,进行数据处理,如:处理返回页(参数return_url)漏掉的订单,做订单更新,即补单措施。
3、 在页面上输出success
商户网站处理完成所有的数据处理以后,即程序运行最后,返回写页面“success”这7个字符(页面上只允许输出success),以表示自己已经成功处理完成自己的业务。
4、 完成处理该次通知,不再发送通知
支付宝得到商户反馈回来的“success”7个字符信息,进行核对与验证,结束此次通知流程。
注意:
如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下 25 小时以内完成8 次通知(通知的间隔频率一般是:2m,10m,10m,1h,2h,6h,15h)。 参考技术A if
($_GET['trade_status']
==
'TRADE_FINISHED'
||
$_GET['trade_status']
==
'TRADE_SUCCESS')
实际上只用关心这里面的内容就够了
这两个页面都有这句话
notify_url.php是异步的
先写return_url.php
在得到交易成功的状态后
也就是得到这样$_GET['trade_status']
==
'TRADE_FINISHED'
||
$_GET['trade_status']
==
'TRADE_SUCCESS'的信息后
就可以写自己的业务逻辑了
一般来说在支付之前都有订单信息入库
在这个时候
获取到订单号可以从数据库里查询订单信息
然后把这个订单状态设置为已付款表名这个订单做过处理了
然后给用户显示一个支付成功并且已经发货的信息就行了
之后你就可以发货啊什么的然后在修改订单状态为已发货就行
在notify_url.php里跟这个类似
有时候这个状态信息不会立即改变
也就是说没有在return_url里返回一个支付成功的状态
这时候就要在notify_url页面做处理,这个页面是异步的,就是交易状态改变之后支付宝会往这个页面发送数据
同样在在$_GET['trade_status']
==
'TRADE_FINISHED'
||
$_GET['trade_status']
==
'TRADE_SUCCESS'这个判断之后
获取到订单号
然后检查这个订单是否做过处理
如果做过处理了就return
如果没有做过处理就把订单状态改为已付款
然后发货····
以上是关于php支付宝在线交易时怎么实现的?的主要内容,如果未能解决你的问题,请参考以下文章