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 封装通用的微信服务类相关推荐

  1. Flutter - 一个fultter练习项目(仿写微信UI、实现一些常用效果、封装通用组件和工具类)

    demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新,请前往github查看最新代码 pwd:123456 代码不定期更新 注:Flut ...

  2. 微信服务号开发-整合微信支付

    最近的项目在对接微信支付,所以抽出一些时间,将方法总结一下: 欢迎加群交流:724225958 官方开发文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi. ...

  3. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫...

    前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,这样很容易被服务器封IP,因此需要设置IP代理,但又不想花钱买,网上有免费IP代理,但大多都数都是不可 ...

  4. 微信小程序申请医疗-就医服务类目解决办法

    微信小程序申请医疗-就医服务类目申请解决办法 选择方式为提供合同方式 由于我们公司不是医院这种类型的公司,所以没有卫生部的批文,只能选择这一种方式. 准备审核需要的资料 承诺函 合同首尾页拍照,然后通 ...

  5. php程序员需要什么资质,微信小程序服务类目及资质要求

    小程序最近动作越来越多,用户流量入口多样化,小程序的资质要求其实比公众号更为严格,以下是你不可不知的.不要投入了资源.组建了小程序技术和运营团队以后,却发现关键资质还没有获得. 一个微信小程序最多关联 ...

  6. 微信小程序服务类目大全及资质要求

    小程序发布资质要求: 最新的还是要看微信官方 微信小程序个人开放服务类目表 服务类目 类目分类一 类目分类二 引导描述 出行与交通 代驾 / / 生活服务 家政.丽人.摄影/扩印.婚庆服务.环保回收/ ...

  7. 封装一个通用的数据库操作类

    最近写一个项目,我开发的方式首先设计数据库,然后用网上免费的代码生成软件CodePlus V2.0生成mode对象,同时封装操作方法,在与数据库操作方面我封装了一个数据操作类,很方便,贡献出来. Co ...

  8. 微信小程序服务类目大坑:特殊行业服务类目所需资质材料

    作为一个技术开发人员,遇到特殊行业服务类目所需资质材料,只能叫苦连天了,妈的,这个不是技术可以解决的问题,如果技术可以解决的问题都不是问题. 百牛信息技术bainiu.ltd整理发布于博客园 特殊行业 ...

  9. TP5 封装多业务的发送短信功能(包括国际短信)

    1.准备工作 1.1.准备依赖包 这个网站提供的都是PHP包,挺有用的 https://packagist.org/ 另外还可以在GitHub上面下载 https://github.com/ 1.短信 ...

最新文章

  1. 关于位姿变换的一点体会
  2. 华为SAN存储在linux下的,多路径 - 华为SAN存储在SUSE系统下的主机连通性指南 - 华为...
  3. 阿里云服务器购买及宝塔管理和如何部署springboot项目
  4. 三角形一点到三边距离最小_高中数学:利用正弦定理、余弦定理求解三角形基础题...
  5. Spark 1.1.1 Programing Guide
  6. 辽宁412想学计算机科学技术,辽宁理工学院计算机科学与技术专业2016年在辽宁理科高考录取最低分数线...
  7. java书籍台湾翻译_《现代专业Javasctript 技术》一书中英文目录,翻译记录下来方便学习用...
  8. string list 查找_手撕java集合源码——List篇
  9. mysql数据库索引回表_简述 MySQL 数据库的覆盖索引与回表
  10. 全军出击 iOS和Android,绝地求生全军出击安卓和ios能一起玩吗_绝地求生全军出击安卓ios数据互通吗_玩游戏网...
  11. 知乎推荐育儿书籍汇总
  12. 赵某于2011年3月23夜被捕获
  13. 方法重写(override)遵循的原则
  14. 网线有网,路由器连接之后没网,解决办法
  15. python def 识别print_Python零基础快速入门(一):print()函数与变量
  16. 网能云平台,掌聚网能助力机房运维的利器
  17. 操作系统原理——内存的分段、分页和平坦模型:区别与发展
  18. 播放录音(系统) AVAudioSessionPortOverrideSpeaker 和 AVAudioSessionCategoryOptionDefaultToSpeaker区别
  19. goahead的asp和jst
  20. 操作系统(第三章)——思维导图总结

热门文章

  1. 利用js-xlsx.js插件实现Excel文件导入并解析Excel数据成json数据格式
  2. JavaSE—集合框架
  3. sed 格式化输出df -h
  4. javaScript一些函数--Math()
  5. 【poj解题】1308
  6. 2012_01_26
  7. LeetCode 59 _ Sprial Matrix II 旋转矩阵2
  8. WINDOWS下安装MYSQL—图文详解
  9. Android studio 使用NDK工具实现JNI编程
  10. Windows 窗体设计器中的设计时错误