TP5 封装通用的微信服务类
1、安装依赖包
我们这里用的是 EasyWeChat
EasyWeCha官网 https://www.easywechat.com/
安装地址 https://github.com/easywechat/docs
相关文档 https://www.easywechat.com/docs/4.1/payment/index
- composer安装
$ composer require overtrue/wechat:~4.0 -vvv
1、封装服务类
<?phpnamespace app\common\service;
use EasyWeChat\Factory;
use EasyWeChat\MiniProgram\Application;
use think\Hook;/*** 微信服务* @package app\common\service*/
class WeChatService
{//微信公众号配置private $officeConfig = ['app_id' => 'wx727ac3b3f4439a25','secret' => '23471aaeb7d0ab3679da9f9a7d58bb25',// 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名'response_type' => 'array',//...];//微信支付private $payConfig = [// 必要配置'app_id' => 'xxxx','mch_id' => 'your-mch-id','key' => 'key-for-signature', // API 密钥// 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)'cert_path' => 'path/to/your/cert.pem', // XXX: 绝对路径!!!!'key_path' => 'path/to/your/key', // XXX: 绝对路径!!!!'notify_url' => '默认的订单回调地址', // 你也可以在下单时单独设置来想覆盖它];//微信小程序配置private $miniConfig = ['app_id' => 'wx3cf0f39249eb0exx','secret' => 'f1c242f4f28f735d4687abb469072axx',// 下面为可选项// 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名'response_type' => 'array','log' => ['level' => 'debug','file' => PUBLIC_PATH . '/logs/wechat.log',],];//开放平台配置private $openConfig = ['app_id' => '开放平台第三方平台 APPID','secret' => '开放平台第三方平台 Secret','token' => '开放平台第三方平台 Token','aes_key' => '开放平台第三方平台 AES Key'];private $token = ''; //获取小程序的ACCESS_TOKENprivate $isContract = false; //是否开启支付中签约/*** @ApiTitle (实例化)* @param int $type* @return bool|Application|\EasyWeChat\OfficialAccount\Application|\EasyWeChat\OpenPlatform\Application|\EasyWeChat\Payment\Application* @throws \EasyWeChat\Kernel\Exceptions\HttpException* @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException* @throws \EasyWeChat\Kernel\Exceptions\RuntimeException* @throws \Psr\SimpleCache\InvalidArgumentException*/public function connect($type = 0){//实例化对象if ($type == 0) $app = Factory::miniProgram($this->miniConfig); //微信小程序if ($type == 1) $app = Factory::officialAccount($this->officeConfig); //微信公众号if ($type == 2) $app = Factory::payment($this->payConfig); //微信支付if ($type == 3) $app = Factory::openPlatform($this->payConfig); //微信开放平台//获取token$accessToken = $app->access_token;$this->token = $accessToken->getToken()['access_token']; // token 数组 token['access_token'] 字符串return $app ?? false;}/*** @ApiTitle (生成小程序二维码)* @return bool|int* @throws \EasyWeChat\Kernel\Exceptions\HttpException* @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException* @throws \EasyWeChat\Kernel\Exceptions\RuntimeException* @throws \Psr\SimpleCache\InvalidArgumentException*/public function createCode(){$app = $this->connect(0);$response = $app->app_code->getUnlimit('scene-value', ['page' => 'path/to/page','width' => 600,]);if ($response instanceof \EasyWeChat\Kernel\Http\StreamResponse) {$dir = 'qrCode/' . date('Ymd', time()) . '/';if (!file_exists($dir)) mkdir($dir, 0777, true);$url = PUBLIC_PATH . $dir . 'app_mini_code.png';$response->save($url);//保存到OSS$urlOss = Hook::listen("upload_oss", $url, null, true);//删除本地图片和文件夹if (file_exists($url)) {unlink($url);rmdir($dir);}}return $urlOss ?? false;}}
其中微信小程序、公众号、微信支付和开放平台等配置都在这里面写,如果需要企业微信等配置自行根据自己的业务修改里面的代码即可。
3、调用服务类
- 我们只要 new 一个服务类就可以使用里面的方法了
public function createWeChatCode()
{$code = (new WeChatService)->createCode();$this->success('生成小程序码成功', $code);
}
- 调用 EasyWeChat 包的方法,只需要 connect 一下就可以了,其中需要传参
$app = (new WeChatService())->connect(1);
感谢你的观看,如果有什么问题欢迎在留言区留言。
TP5 封装通用的微信服务类相关推荐
- Flutter - 一个fultter练习项目(仿写微信UI、实现一些常用效果、封装通用组件和工具类)
demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新,请前往github查看最新代码 pwd:123456 代码不定期更新 注:Flut ...
- 微信服务号开发-整合微信支付
最近的项目在对接微信支付,所以抽出一些时间,将方法总结一下: 欢迎加群交流:724225958 官方开发文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi. ...
- 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫...
前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,这样很容易被服务器封IP,因此需要设置IP代理,但又不想花钱买,网上有免费IP代理,但大多都数都是不可 ...
- 微信小程序申请医疗-就医服务类目解决办法
微信小程序申请医疗-就医服务类目申请解决办法 选择方式为提供合同方式 由于我们公司不是医院这种类型的公司,所以没有卫生部的批文,只能选择这一种方式. 准备审核需要的资料 承诺函 合同首尾页拍照,然后通 ...
- php程序员需要什么资质,微信小程序服务类目及资质要求
小程序最近动作越来越多,用户流量入口多样化,小程序的资质要求其实比公众号更为严格,以下是你不可不知的.不要投入了资源.组建了小程序技术和运营团队以后,却发现关键资质还没有获得. 一个微信小程序最多关联 ...
- 微信小程序服务类目大全及资质要求
小程序发布资质要求: 最新的还是要看微信官方 微信小程序个人开放服务类目表 服务类目 类目分类一 类目分类二 引导描述 出行与交通 代驾 / / 生活服务 家政.丽人.摄影/扩印.婚庆服务.环保回收/ ...
- 封装一个通用的数据库操作类
最近写一个项目,我开发的方式首先设计数据库,然后用网上免费的代码生成软件CodePlus V2.0生成mode对象,同时封装操作方法,在与数据库操作方面我封装了一个数据操作类,很方便,贡献出来. Co ...
- 微信小程序服务类目大坑:特殊行业服务类目所需资质材料
作为一个技术开发人员,遇到特殊行业服务类目所需资质材料,只能叫苦连天了,妈的,这个不是技术可以解决的问题,如果技术可以解决的问题都不是问题. 百牛信息技术bainiu.ltd整理发布于博客园 特殊行业 ...
- TP5 封装多业务的发送短信功能(包括国际短信)
1.准备工作 1.1.准备依赖包 这个网站提供的都是PHP包,挺有用的 https://packagist.org/ 另外还可以在GitHub上面下载 https://github.com/ 1.短信 ...
最新文章
- 关于位姿变换的一点体会
- 华为SAN存储在linux下的,多路径 - 华为SAN存储在SUSE系统下的主机连通性指南 - 华为...
- 阿里云服务器购买及宝塔管理和如何部署springboot项目
- 三角形一点到三边距离最小_高中数学:利用正弦定理、余弦定理求解三角形基础题...
- Spark 1.1.1 Programing Guide
- 辽宁412想学计算机科学技术,辽宁理工学院计算机科学与技术专业2016年在辽宁理科高考录取最低分数线...
- java书籍台湾翻译_《现代专业Javasctript 技术》一书中英文目录,翻译记录下来方便学习用...
- string list 查找_手撕java集合源码——List篇
- mysql数据库索引回表_简述 MySQL 数据库的覆盖索引与回表
- 全军出击 iOS和Android,绝地求生全军出击安卓和ios能一起玩吗_绝地求生全军出击安卓ios数据互通吗_玩游戏网...
- 知乎推荐育儿书籍汇总
- 赵某于2011年3月23夜被捕获
- 方法重写(override)遵循的原则
- 网线有网,路由器连接之后没网,解决办法
- python def 识别print_Python零基础快速入门(一):print()函数与变量
- 网能云平台,掌聚网能助力机房运维的利器
- 操作系统原理——内存的分段、分页和平坦模型:区别与发展
- 播放录音(系统) AVAudioSessionPortOverrideSpeaker 和 AVAudioSessionCategoryOptionDefaultToSpeaker区别
- goahead的asp和jst
- 操作系统(第三章)——思维导图总结