支付宝支付即时到账接口在ThinkPHP商城中的应用
支付宝支付是PHP高级课程中ThinkPHP商城项目课的内容之一,在此视频中将会讲解如何将支付宝作为第三方库集成到ThinkPHP框架中,并且将支付宝的配置参数写入自定义配置中从而达到在整个项目中灵活调用支付的目的。涉及到的知识点有使用vendor函数加载第三方扩展库,对vendor函数做了详细的介绍。使用C函数来读取自定义配置。结合ThinkPHP的特性和支付宝第三方支付的调用方式做了支付宝集成到ThinkPHP框架的完整流程。
1. 支付宝支付–即时到账
1.1. 获取即时到账sdk
获取即时到账sdk地址为:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.Ix6HLx&treeId=62&articleId=103566&docType=1
这是一个非常强大的SDK,包含了完整的demo,也就是说我们下载后只要简单的配置就可以测试完整的付款流程!!
1.2. SDK目录结构讲解
目录包括lib和img,当然为什么我的demo脚Alipay呢!是因为我下载后自己修改了名称。好了我们先来看看sdk中都有哪些东西。上图让大家看得更明白
1.3. 开始使用demo
1.3.1. 使用前的配置(alipay.config.php)
当然我们只需要配置这四个位置,partner是在你的支付宝商家后台可以查看得到,key也是在支付宝商家后台查看,看下边会有一副高清大图带大家看看在哪儿查找,这些本来是保密的东西哦。
注意notify_url和return_url的配置:听过我讲解的微信支付的同学应该已经明白这个是干什么用的了。对的就是告诉我们支付结果的地址。那这个地址的配置肯定是有讲究的。首先,他的格式为http://商户网址。这个商户网址必须是经过备案的,而且在地址中不能带有get方式的参数,必须保证外网可以正常访问。如果不对了是不能跳转的哦。往下看是不是有一个地址
1.3.2. 教你两步完成支付
第一步拼接参数,这个参数的格式是怎么样的呢:
注意了,除了out_trade_no,subject,total_fee,body其他的参数都是从配置文件中读取的。那么这四个特立独行的参数是什么意思呢?其实分别是订单编号,商品名称,订单金额,订单描述。
第二步建立请求
要注意了支付是调用阿里的东西支付的,那肯定要建立关系的,你来我往的一起完成支付,那就必须建立请求。建立请求是实例化AlipaySubmit,实例化之前当然要引入了。那就需要require_once lib/alipay_submit.class.php这个文件。
然后调用对象的buildRequestForm来建立请求当然是建立一个html请求了。那么这个方法的输出也是一段html字符串了,为了解析我们简单粗暴的使用了php的echo来处理。这一步执行时的结果就是下图的样子。
再熟悉不过了有木有。
1.4. 在ThinkPHP中集成支付宝支付
1.4.1. 有何不同?
当然是大有文章,其实也没有什么不同。既然在TP中集成那么我们还是要入乡随俗,复合TP开发规范。那就是第三方扩展放在Libraray中的Vendor目录下。那当然是把我们刚刚的demo拖过去就行了,简单粗暴的拖过去,别手软。然后,为了管理方便那个alipay.config.php我们是否可以阉割掉呢?当然是,但是又不能没有配置数据,怎么办呢?那就写在自定义配置中。还记得C()函数吗?当你需要配置中的数据时你肯定会想到他。
1.4.2. 把配置写在Common/config.php中
是不是看着都感觉身心愉悦了?这样我们就可以在项目中用C()函数非常方便的读取到支付宝配置参数。
1.4.3. 引入alipay_submit.class.php
如果你在引入vendor中的扩展时你想不到vendor()这个函数时那么你就有必要来魏老师的课堂再学习下ThinkPHP的项目开发了,魏老师一定会念叨到你想吐,还记得大话西游中的only you吗?
vendor(‘Alipay.lib.alipay_submit’,’’,’.class.php’);
vendor的三个参数我再说一次喽,第一个参数就是类库的路径,第二个参数本来可以定义类库的根目录的默认是Vendor那就不用修改了,第三个参数是类库的后缀,因为默认是.php而我们的文件时alipay_submit.class.php那么我们就自己设定下。
1.4.4. 获取配置参数:
1.4.5. 构造要请求的参数数组
看着注释中的无需改动就感觉很感动有木有,阿里的工程师真的好贴心。其他参数都是从配置中拿到的。只有四个参数要自己传。他们的意义我已经唠叨过了。当然还有很多参数,根据自己的需求自己去查阅一下。
1.4.6. 建立请求,距离成功只有半步之遥
这样你的请求就建立了,那么,如果看到扫码页面说明你成功了,如果报错了,请别砸电脑,掰键盘。静下心来分析分析。
1.4.7. 关于通知
为了接收支付结果消息,支付宝是允许我们自己设置两个地址作为通知地址的,分别是异步通知地址和同步通知地址。异步通知地址是不需用页面参与的,将结果推送到后台,而且不能有除约定之外的其他输出。
1.4.8. 异步消息通知地址
异步消息通知地址配置的参数名为notify_url,这个地址必须符合外网可以访问的条件。在支付时支付宝系统会带着POST的参数来访问该地址。该地址接受的参数可以再支付宝即时到账文档中查看。我们在接收到数据后要对数据进行判断并更新我们自己系统中的订单状态。
当然你可能会想这样安全吗?万一别人知道我们的异步通知地址后模拟post怎么办。其实支付宝为我们考虑到了这一点。所以我们需要对接受到的请求进行验证。验证的方法如下。
private $_notifyObj;
public function _initialize(){vendor('Alipay.lib.alipay_notify', '', '.class.php');$this->_notifyObj = new \AlipayNotify(C('ALIPAY_CONFIG'));}
需要引入notify这个类,我们还是用vendor来引入。这样我们就实例化了AlipayNotify这个类。
对于异步通知的验证是调用AlipayNotify中的verifyNotify()方法
$verifyResult = $this->_notifyObj->verifyNotify();
该方法的返回结果如果验证通过为true如果失败为false。如果为false说明不是支付宝系统发送来的请求。
如果为true我们就可以继续处理支付的其他操作了。
1.4.9. 同步消息通知地址
通知消息同步意思是当支付完成后支付宝系统会给我们跳转到我们设置在return_url中的地址,并且会在url中带有参数,这样我们就可以接收传来的参数并且对参数判断后给用户输出一个漂亮的界面。在该过程中我们还是需要对请求进行判断,判断是否是支付宝系统发来的请求,指示在此处调用的是AlipayNotify中的verifyReturn()方法,该方法的返回结果也是true或者false。
$verifyResult = $this->_notifyObj->verifyReturn ();
支付宝支付即时到账接口在ThinkPHP商城中的应用相关推荐
- 支付宝手机网页支付即时到账接口
mycncart的前后台均为移动设备方便访问,支付宝方面单独针对移动设备访问网站设立了支付接口,普通的支付宝即时到账接口无法在手机网页上正常支付 本支付插件是支付宝手机网页即时到账接口. 本插件需要解 ...
- 支付宝:即时到账接口对接
支付宝接口DEMO文档下载 https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.qAEbso&treeId=62 ...
- 支付宝支付--即时到账 开发总结
在支付宝支付的开发过程中,通过自己的理解和尝试做出一点流程总结记录: 一.前往 https://doc.open.alipay.com/doc2/alipayDocIndex.htm 支付宝开放平台 ...
- 微信支付-扫码支付方式在ThinkPHP商城中的使用(第二部分)
本部分内容的视频内容在:http://edu.csdn.net/course/detail/5381 四.利用SDK按照微信规则生成二维码 生成支付的数据 需要调用WxPayApi.php中的bizp ...
- java 支付宝 第三方即时到账支付 接口
alipay 的几个内核功能文件: AlipayFunction.Java package com.test.util.alipay;import java.io.FileWriter; import ...
- 聚合支付PC端-支付宝(即时到账交易接口)
聚合支付 第三章 支付宝(即时到账交易接口) 文章目录 聚合支付 前言 一.开发前准备 二.java实现 1.pom中引入相关jar包 2.支付相关工具类 3.支付相关参数 4.支付实现 5.查询实现 ...
- PHP支付宝免签约即时到账接口扫码支付实例
PHP支付宝免签约即时到账接口扫码支付实例,比较简单实用,下面有教程 安装教程: 1.把\pay_files\4422875341317181.png换成你自己的二维码. 2.把pay.htm文件里 ...
- 支付宝即时到账接口开发 - DEMO讲解
支付宝即时到账接口开发 - DEMO讲解 环境要求 PHP5.0以上,且需要开启curl.openssl. 文档地址: https://doc.open.alipay.com/doc2/detail? ...
- Payment:支付宝即时到账接口接入教程
记住,如果觉得文档写得不清楚,一定要告诉我.励志写好文档为大家服务! Payment 3.0 支付宝的配置设置文档请 点击这里 项目GitHub地址:https://github.com/helei1 ...
- 建付支付即时到账源码免签支付支持支付宝微信拉卡拉等
介绍: 建付支付系统即时到账源码_免签支付支持支付宝微信拉卡拉等等_带简单安装教程 源码说明:本站源码全部经过测试,配有前台及后台管理界面演示图,去除后门,绿色安全,希望对大家学习研究能有所帮助! 源 ...
最新文章
- Webpack4 高手之路 第一天
- div内实现文字左右循环滚动
- java中的ThreadLocal
- oracle localhost连接
- 完全二叉树的结点个数
- 『 效率工具 』Spring Boot版的轻量级代码生成器,减少70%以上的开发任务
- 为什么只有360公开支持华为系统,其他公司都不敢表态?
- 开源、免费、企业级的SiteServer CMS .NET CORE 7.0 预览版发布
- centos6.8升级python3.5.2
- stm32驱动_STM32直流电机启动(一)驱动电路的介绍
- 大白菜UEFI版制作u盘启动盘使用教程
- linux下iSCSI的配置
- ASP.NET教程4
- Android Framework - 学习启动篇
- 电子商务公司创业计划书
- SVD专题1 算子的奇异值分解——矩阵形式的推导
- 小程序之父子组件传值详解
- CAD一键统计所有线段长度
- 2021年熔化焊接与热切割考试题库与解析
- 肠道微生物组的个体化诊·疗进程
热门文章
- 数字信号处理——DFT
- 创业计划书学习笔记二——创业计划书的目录结构与执行概览部分的写作方法
- 挑战杯创业计划书_基于云计算的下料优化软件_1. 执行总结
- 不允许有匹配 [xX][mM][lL] 的处理指令目标
- 微型计算机原理及应用课程复习与考研指导,微机原理及应用课程复习.doc
- 中国无线耳机行业市场供需与战略研究报告
- matlab可以仿真液压系统,基于Matlab计算机仿真在液压系统中的应用
- WEB安全基础 - - -漏洞扫描器
- android pad刷机,安卓平板刷机,谨防平板变砖头!
- CommandName 限制