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

PHP 打印扩展开发:从易联云到小鹅通的多驱动集成实践

目前已有易联云WIFI打印机扩展

扩展入口文件

文件目录 crmeb\services\printer\Printer.php

namespace crmeb\services\printer;use crmeb\basic\BaseManager;
use think\facade\Config;
use think\Container;/*** Class Printer* @package crmeb\services\auth* @mixin \crmeb\services\printer\storage\YiLianYun*/
class Printer extends BaseManager
{//...
}

使用打印扩展

use crmeb\services\printer\Printer;$printer = new Printer(['clientId'=>'','apiKey'=>'','partner'=>' ','terminal'=>'',
]);$res = $printer->setPrinterContent(['name'=> '标题','orderInfo'=> [],//订单信息'product'=> [],//商品信息
])->startPrinter();var_dump($res);

举例增加:小鹅通打印扩展

创建文件:crmeb\services\printer\storage\XiaoETong.php

namespace crmeb\services\printer\storage;class XiaoETong extends BasePrinter
{//初始化protected function initialize(array $config){}//开始打印public function startPrinter(){}//设置打印内容public function setPrinterContent(array $config): self{return $this;}}

增加小鹅通获取AccessToken

namespace crmeb\services\printer;class AccessToken extends HttpService
{/*** 获取token* @return mixed|null|string* @throws \Exception*/public function getAccessToken(){if (isset($this->accessToken[$this->name])) {return $this->accessToken[$this->name];}$action = 'get' . Str::studly($this->name) . 'AccessToken';if (method_exists($this, $action)) {return $this->{$action}();} else {throw new \RuntimeException(__CLASS__ . '->' . $action . '(),Method not worn in');}}//增加小鹅通获取access_token类protected function getXiaoETongAccessToken(){/** @var CacheServices $cacheServices */$cacheServices = app()->make(CacheServices::class);$this->accessToken[$this->name] = $cacheServices->getDbCache('XET_access_token', function () {//写获取$access_token的逻辑//...$access_token = '';return $access_token;}, 86400);if (!$this->accessToken[$this->name])throw new AdminException(400718);return $this->accessToken[$this->name];}}

使用小鹅通打印机

use crmeb\services\printer\Printer;$printer = new Printer('xiao_e_tong',['clientId'=>'',//小鹅通打印配置'apiKey'=>'',//小鹅通打印配置'partner'=>' ',//小鹅通打印配置'terminal'=>'',//小鹅通打印配置
]);$res = $printer->setPrinterContent(['name'=> '标题','orderInfo'=> [],//订单信息'product'=> [],//商品信息
])->startPrinter();var_dump($res);

附件:https://gitee.com/ZhongBangKeJi/CRMEB

http://www.xdnf.cn/news/890299.html

相关文章:

  • 打造高效多模态RAG系统:原理与评测方法详解
  • Cad 反应器 cad c#二次开发
  • 【复杂指令遵循 Benchmark】论文分享:CodeIF-Bench
  • 软件开发中的“需求镀金”现象如何避免?
  • 大屏缩放视频比例适配记录
  • Canvas的使用
  • 计算机网络安全问答数据集(1788条) ,AI智能体知识库收集! AI大模型训练数据!
  • AI04A AI模块,16通道,TC / mV
  • Python中的self参数介绍
  • [GESP202412 五级] 奇妙数字 题解
  • 核心机制:延时应答,捎带应答,面向字节流
  • Shopify 主题开发:移动端菜单响应式设计要点
  • jdbc查询mysql数据库时,出现id顺序错误的情况
  • Android基础回顾】六:安卓显示机制Surface 、 SurfaceFlinger、Choreographer
  • 机器学习——XGBoost
  • 【Emgu CV教程】11.2、Canny边缘检测
  • 【计组】真题 2015 大题
  • ModuleNotFoundError No module named ‘torch_geometric‘未找到
  • windows VeraCrypt – 磁盘加密工具
  • Python实例题:Python计算二元二次方程组
  • Life:Internship finding
  • RMSE可以融合均值与标准差
  • 核货宝订货平台源码:构建高效智能订货系统,驱动企业数字化转型
  • Nature Methods | OmiCLIP:整合组织病理学与空间转录组学的AI模型
  • win32相关(远程线程和远程线程注入)
  • React 第五十四节 Router中useRevalidator的使用详解及案例分析
  • Next打包导出静态文件(纯前端),不要服务器端(node), 隐藏左下角调试模式
  • Conda 基本使用命令大全
  • 数据库优化实战分享技术文章大纲
  • Qt 开发中的父类与父对象的区别和父对象传递:如何选择 `QWidget` 或 `QObject`?