thinkphp6.0 集成Alipay 手机和电脑端支付的方法
第一步
下载 Alipay 的PHP SDK :https://docs.open.alipay.com/54/103419/
第二步
解压下载都到的压缩包:
解压后得到的文件内容如图
第三步、上传得到的目录中的 aop 文件夹到 thinkphp 6.0 的 extend 目录,如下图:
第四步、修改 AopClient.php 文件,加入命名空间 aop 具体修改如下图
在第二行位置,也就是最开始的位置,加入代码:
namespace aop;
第五步、修改 PC 支付文件 AlipayTradePagePayRequest.php 同样是加入命名空间 namespace aoprequest ,具体如下:
在第二行位置,也就是最开始的位置,加入代码:
namespace aop\request;
第六步、使用PC支付接口,生成支付链接
PS:接口方法这不是统一定义、而是在购买控制器中直接定义的,如要统一可以创建公共控制器或其他方法统一。
1.在 确认订单的控制器 ,我这里是 Buy 中引入支付方法。
use aop\AopClient; use aop\request\AlipayTradePagePayRequest;
2.创建私有方法 $alipay_config ,替换下面红色的内容部分,为你的信息,具体信息在你的支付宝开发者平台获取,地址:https://openhome.alipay.com/platform/appManage.htm#/apps
private $alipay_config = array( 'app_id' => '你的app_id', 'notify_url'=>"https://xxx.com/xxx/ 这是你的异步通知地址", 'merchant_private_key' => '你的私钥', 'gatewayUrl' => "https://openapi.alipay.com/gateway.do", 'public_key' => "你的公钥", );
3.配置、引入 aop
$aop = new AopClient(); $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do"; $aop->appId = $this->alipay_config['appid']; $aop->method = 'alipayTradePagePay'; $aop->charset = 'utf-8'; $aop->signType = 'RSA2'; $aop->alipayrsaPublicKey = $this->alipay_config['public_key']; $aop->rsaPrivateKey = $this->alipay_config['private_key'];
4.生成 biz_content 内容,具体内容可根据自己需求增删,具体文档参考:https://docs.open.alipay.com/api_1/alipay.trade.page.pay/
参数解释:
out_trade_no :订单号,阿里要求是唯一的。
product_code :销售产品码,与支付宝签约的产品码名称。注:目前仅支持 FAST_INSTANT_TRADE_PAY
total_amount :支付金额
subject :订单名称
timeout_express : 支付过期时间,订单创建后多久过期,这里 设置 30m 意思是,订单创建后 30 分钟后过期,过期了这个就不能支付了,这里只是alipay这里不能支付,不要搞晕了。
$biz_content = json_encode([ 'out_trade_no'=> rand(11111111,99999999), 'product_code'=> 'FAST_INSTANT_TRADE_PAY', 'total_amount'=> 99.9, 'subject'=> 'BI8EJM Alipay 测试', 'timeout_express'=>'30m', ]);
5. 引入 PC 支付 并显示 支付链接
$payRequest= new AlipayTradePagePayRequest(); $payRequest->setReturnUrl(url('index/index')); $payRequest->setNotifyUrl($this->alipay_config['notify_url']); $payRequest->setBizContent($biz_content); $response = $aop->sdkExecute($payRequest);<br> echo '<a href="'.'https://openapi.alipay.com/gateway.do?'.$response.'">
至此,支付链接生成就完毕了。
第七步、测试打开支付链接
点击:立即支付 成功跳转到支付页面
第八步、异曲同工。
这里仅仅展示了 PC 的支付,说好的手机支付呢?手机支付一样,你只需要在手机支付接口文件中,指定命名空间,然后引入手机支付方法即可,希望你能顺利完成,本文首发在我的cnblogs,献丑了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
进击的Java - 云原生进化
进击的Java - 云原生进化 在企业软件领域,Java依然是绝对王者,但它让开发者既爱又恨。一方面因为其丰富的生态和完善的工具支持,可以极大提升了应用开发效率;但在运行时效率方面,Java也背负着”内存吞噬者“,“CPU撕裂者“的恶名,持续受到NodeJS, Python,Golang等新老语言的挑战。 在技术社区,我们经常看到有人在唱衰Java技术,认为其不再符合云原生计算发展的趋势。我们先抛开这些观点,首先思考一下云原生对应用运行时的不同需求。 体积更小 - 对于微服务分布式架构而言,更小的体积意味着更少的下载带宽,更快的分发下载速度。 启动速度更快 - 对于传统单体应用,启动速度与运行效率相比不是一个关键的指标。原因是,这些应用重启和发布频率相对较低。然而对于需要快速迭代、水平扩展的微服务应用而言,更快的的启动速度就意味着更高的交
- 下一篇
你不会还在用这8个错误的SQL写法吧?
1、LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。 SELECT * FROM operation WHERE type = 'SQLStats' AND name = 'SlowLog' ORDER BY create_time LIMIT 1000, 10; 好吧,可能90%以上的 DBA 解决该问题就到此为止。但当 LIMIT 子句变成 “LIMIT 1000000,10” 时,程序员仍然会抱怨:我只取10条记录为什么还是慢?要知道数据库也并不知道第1000000条记录从什么地方开始,即使有索引也需要从头计算一次。出现这种性能问题,多数情形下是程序员偷懒了。 在前端数据浏览翻页,或者大数据分批导出等场景下,是可以将上一页的最大值当成参数作为查询条件的。SQL 重新设计如下: SELECT * FROM operation WHERE type = 'SQLStats' AND nam...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Mario游戏-低调大师作品