因小伙伴需求,特此编写ThinkPHP 3.2集成新版扫码支付demo
新版扫码支付下载地址见此:
ThinkPHP 3.2下载地址见此:
http://www.thinkphp.cn/down/610.html
相关demo我已经集成,若需要使用的话,请至该地址进行下载
https://github.com/paopao7/ThinkPHP-with-ScanPay.git
接下来是集成及配置过程,具体操作走起将下载来的支付宝demo直接搁到ThinkPHP的三方框架下,具体结构如下图所示
接下来配置支付宝的私钥、公钥等
配置文件所在位置如下:
ThinkPHP\Library\Org\AliPay\f2fpay\config\config.php
具体需要配置的地方如下图所示
注意:sign_type默认情况为RSA2,请根据需要将其修改为RSA
公钥长度为216,私钥长度为816,请注意公私钥长度
接下来编写支付页面,我比较懒,因此直接拷贝ThinkPHP\Library\Org\AliPay\f2fpay下面的qrpay_test.php文件
因为路径被修改了,所以需要修改文件包含处的路劲,具体修改如下
为方便拷贝,特此罗列出来
require_once ‘./ThinkPHP/Library/Org/AliPay/f2fpay/model/builder/AlipayTradePrecreateContentBuilder.php’;
require_once ‘./ThinkPHP/Library/Org/AliPay/f2fpay/service/AlipayTradeService.php’;
修改配置完成后,若提示C函数重复的问题的话,可参考我另一篇文章
http://www.itinfor.cn/archives/821
若直接使用扫码支付的demo进行测试的话,则会出现“商户门店编号无效“的问题
具体解决方案,可参考该网站
https://openclub.alipay.com/read.php?tid=656&fid=5
继续执行,执行成功会出来如下界面
因为支付宝走的是google的方法,因此对应的二维码无法显示
解决方式是获取结果中的qr_code数据,然后将其显示为二维码即可
扫码支付至此结束,接下来是支付宝回调时的验签处理。
对于扫码支付的验签可以参考官方文档:
因为扫码支付demo自身是不带有回调验签的,因此我们需要借助于其他的demo来实现我们的验签功能
首先我们去下载即时到账的demo,下载地址如下所示:
下载完成后在alipaydirect\RSA签名版本\create_direct_pay_by_user-PHP-UTF-8\lib下找到alipay_notify.class.php,该文件即为验签使用
由上图可知,该代码只是支付宝官方提供的一个参考,我们可以根据自己的需要进行修改完善,当前前提是遵循它对验签的条件
我们将其所在的文件夹lib拷贝到我们的项目中,具体结果如下图所示:
下图为我们项目根据实际需求编写的校验方法
在以上代码中,首先我们会去调用另外一个方法:
$verify_result=$this->verify(); 该方法具体实现如下:
其中的 $this->_alipay_config 为私钥、公钥等配置,可根据实际情况进行获取 其中的 $verify_result = $alipayNotify->verifyNotify();则是去调用 alipay_notify.class.php 文件中的方法,具体如何实现可自行查阅 至此验签结束,包含验签文件的demo我已更新至git上,欢迎下载使用
如果还有什么不明白的地方,欢迎加我QQ进行咨询,请注明技术咨询
本人QQ:980569038
TP集成支付宝群:594955172
也可以扫码本人微信:
若该文章对您有一定帮助,欢迎打赏
(点击图片可放大)
本人原创,转载请注明出处
http://www.itinfor.cn/archives/1169