当前位置: 首页 > news >正文

thinkphp8.0+aliapy(支付宝)pc网站支付

环境:宝塔-centOS8.5,php8.3

第一步:安装alipay v3版本的安装依赖包;

composer require alipaysdk/openapi:@dev

第二步:根据官方文档,把支付相关的类引用进来;

<?php
declare (strict_types = 1);namespace app\pc\controller;use think\Request;
use think\facade\Log;use \Alipay\OpenAPISDK\ApiException;
use Alipay\OpenAPISDK\Util\AlipayConfigUtil;
use Alipay\OpenAPISDK\Util\GenericExecuteApi;
use Alipay\OpenAPISDK\Util\Model\AlipayConfig;
use Alipay\OpenAPISDK\Util\Model\CustomizedParams;
use Alipay\OpenAPISDK\Util\Model\OpenApiGenericRequest;
use GuzzleHttp\Client;class Alipay
{public function index(){// 初始化SDK$alipayConfigUtil = new AlipayConfigUtil($this->getAlipayConfig());$apiInstance = new GenericExecuteApi($alipayConfigUtil,new Client());// 构造请求参数以调用接口$bizParams = array();$bizContent = array();// 设置订单标题$bizContent['subject'] = "Iphone6 16G";// 设置产品码$bizContent['product_code'] = "FAST_INSTANT_TRADE_PAY";// 设置订单附加信息$bizContent['body'] = "Iphone6 16G";// 设置商户订单号$bizContent['out_trade_no'] = "20150320010101001";// 设置订单总金额$bizContent['total_amount'] = "0.01";$bizParams['biz_content'] = $bizContent;try {// 如果是第三方代调用模式,请设置app_auth_token(应用授权令牌)$pageRedirectionData = $apiInstance->pageExecute('alipay.trade.page.pay', 'POST', $bizParams);// 如果需要返回GET请求,请使用// $pageRedirectionData = $apiInstance->pageExecute('alipay.trade.page.pay', 'GET', $bizParams);return view('/alipay', ['data'=>$pageRedirectionData]);} catch (ApiException $e) {echo '调用失败: ', $e->getMessage(), PHP_EOL;echo 'body: ', $e->getResponseBody(), PHP_EOL;echo 'header: ', $e->getResponseHeaders(), PHP_EOL;}}function getAlipayConfig(){$alipayConfig = new AlipayConfig();$alipayConfig->setServerUrl('https://openapi.alipay.com');$alipayConfig->setAppId('应用ID');$alipayConfig->setPrivateKey('应用密钥');$alipayConfig->setAlipayPublicKey('支付宝应用公钥');return $alipayConfig;}/*** 支付宝异步通知** @return \think\Response*/public function notify(){// 获取支付宝异步通知的信息,该信息是POST请求方式$res = request()->post();// $res是数组,需要转换为JSON;$data = json($res);// 通过tp的Log工具,存储信息,供排错和修改商户支付业务逻辑使用;Log::info($data);// 一定要返回success,否则支付宝服务器每间隔一段时间会发起异步回调通知;return 'success';}
}

第三步:视图页面代码

<!DOCTYPE html>
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>alipay page</title></head><body>{$data|raw}  <!--一定不要转义,原生输出;--></body>
</html>

http://www.lryc.cn/news/428217.html

相关文章:

  • 高速信号的眼图、加重、均衡
  • 2024年PMP考前冲刺必背的学习笔记,整理好给你!
  • 增加服务器带宽可以提高资源加载速度吗?
  • 汽车EDI: NAVISTAR EDI对接
  • 【Word多级标题完整设置】设置各级标题样式将多级列表链接到各级标题样式中
  • 不同分辨率下vue页面的高度自适应
  • “野生钢铁侠 “ 稚晖君一连亮出5 款智元人形机器人,地表最强!
  • JSON Web Token (JWT): 理解与应用
  • LeetCode面试题Day12|LC209 长度最小的子数组、LC30 串联所有单词的子串
  • 【开端】JAVA泛型类的使用
  • mp3转换器免费有哪些?6个音频转换器助你一键转换各种音频
  • 力扣爆刷第174天之TOP200五连刷136=140(最小k数、字典序、跳跃游戏)
  • 蚁群算法原理与实战(Python、MATLAB、C++)
  • HTML静态网页成品作业(HTML+CSS)——非遗阜阳剪纸介绍设计制作(1个页面)
  • 如何做萤石开放平台的物联网卡定向?
  • ptrade排坑日记——定时任务执行后,文件权限会变化。
  • TILs 评分:TCGA 肿瘤浸润淋巴细胞病理切片深度学习评分!图片下载与可视化
  • 【运维】如何在浏览器中查看和管理 Cookie 信息?
  • Selenium实战:深度解析Python中嵌套Frame与iFrame的定位与切换技巧,解决Selenium定位不到的问题
  • 机器学习笔记六-朴素贝叶斯
  • 解决Vue3+Ts打包项目时会生成很多的map文件
  • MeterSphere接口测试脚本断言
  • 探索顶级PDF水印API:PDFBlocks(2024年更新)
  • c语言开源库之uthash用法
  • OurTV v3.1.1 — 完全免费,播放流畅的电视直播软件
  • 精武杯的部分复现
  • verdaccio搭建npm私服
  • oracle的dataguard physical standby转 snapshot standby操作文档
  • 学懂C++(四十):网络编程——深入详解 HTTP、HTTPS 及基于 Windows 系统的 C++ 实现
  • Element-06.案例