ThinkPHP 3.2集成新版扫码支付

因小伙伴需求,特此编写ThinkPHP 3.2集成新版扫码支付demo

新版扫码支付下载地址见此:

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.S1eCL1&treeId=194&articleId=105201&docType=1

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数据,然后将其显示为二维码即可

扫码支付至此结束,接下来是支付宝回调时的验签处理。

对于扫码支付的验签可以参考官方文档:

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.H8PflV&treeId=194&articleId=103296&docType=1#s4

因为扫码支付demo自身是不带有回调验签的,因此我们需要借助于其他的demo来实现我们的验签功能

首先我们去下载即时到账的demo,下载地址如下所示:

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Hf0l8H&treeId=54&articleId=104511&docType=1

下载完成后在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

 

Tagged ,

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注