<p align="center">
<strong>云小票机SDK-cloud-print</strong>
</p>
> 非官方云小票机SDK,支持飞鹅云,芯烨云,易联云,快递100,映美云,中午云,佳博云,优声云,365智能云打印等
>
[](https://packagist.org/packages/pkg6/cloud-print) [](https://packagist.org/packages/pkg6/cloud-print) [](https://packagist.org/packages/pkg6/cloud-print) [](https://packagist.org/packages/pkg6/cloud-print) [](https://packagist.org/packages/pkg6/cloud-print)
## 安装
~~~
composer require pkg6/cloud-print
~~~
## 自定义缓存
> 基于https://packagist.org/packages/psr/simple-cache#1.0
>
> ```
> public function setCache(CacheInterface $cache);
> ```
## 自定义日志
> 基于 https://packagist.org/packages/psr/log
>
> ```
> public function setRequestLogger(LoggerInterface $logger)
> //自定义日志格式(借助guzzlehttp/guzzle中的handler)进行实现
> public function setMessageFormatter(MessageFormatter $messageFormatter)
> ```
## 适配模式
> 需要定义的服务商实现客户端
>
> https://github.com/pkg6/cloud-print/blob/main/src/Contracts/ClientInterface.php
### 配置
> https://github.com/pkg6/cloud-print/blob/main/config/config.php
### 实例化
~~~
$cloudPrint = new CloudPrint($config)
//自定义驱动
$cloudPrint->client("zhongwuyun")->request($method, $action, $privateParams)
//默认驱动
$cloudPrint->request($method, $action, $privateParams)
~~~
## 统一打印协议
> 所有厂商客户端实现统一的 `print(PrintRequest $request)` 方法,通过 `PrintRequest` 参数类传递打印参数。
### PrintRequest 参数
| 参数 | 类型 | 说明 |
|------|------|------|
| `sn` | `string` | 打印机编号 |
| `content` | `string` | 打印内容 |
| `copies` | `int` | 打印份数,默认 1 |
| `orderId` | `string` | 订单号 |
| `type` | `string` | 打印类型(厂商差异) |
| `templateId` | `string` | 模板ID |
| `imageUrl` | `string` | 图片地址 |
| `htmlUrl` | `string` | HTML地址 |
| `extra` | `array` | 各厂商私有扩展字段 |
### 基本用法
~~~
use Pkg6\CloudPrint\Requests\PrintRequest;
$request = PrintRequest::create()
->sn('99999999')
->content('订单内容')
->copies(1)
->orderId('12345');
$client->print($request);
~~~
### 使用 type 参数
~~~
// 飞鹅云 - 标签打印
$request = PrintRequest::create()
->sn('99999999')
->content('标签内容')
->type('label');
// 映美云 - 多种打印模式
$request = PrintRequest::create()
->sn('99999999')
->htmlUrl('https://example.com/order.html')
->type('html_url'); // html_code / html_to_pic / template / express / esc 等
// 易联云 - 图片打印
$request = PrintRequest::create()
->sn('99999999')
->imageUrl('https://example.com/image.png')
->type('picture');
~~~
### 厂商 type 映射表
| 厂商 | type 值 | 说明 |
|------|---------|------|
| 飞鹅云 | `label` | 标签打印 |
| 芯烨云 | `label` | 标签打印 |
| 易联云 | `picture` / `express` | 图片打印 / 面单打印 |
| 映美云 | `html_url` / `html_code` / `html_to_pic` / `html_to_gray_pic` / `template` / `point_text` / `express` / `rich_html_code` / `esc` / `file` / `file_by_url` / `label` / `invoice` | 13种打印模式 |
| 其余厂商 | 默认 | 文本打印 |
## 门脸模式
> 可以直接到实现请求的客户端,内置很多方法可以供使用
### 基于[中午云](http://www.zhongwu.co/)的 PHP 接口组件
~~~
$printer = \Pkg6\CloudPrint\Factory::Zhongwuyun([
'appid' => '******',
'appsecret' => '******',
]);
~~~
### 基于 [优声云](https://www.ushengyun.com/) 的 PHP 接口组件
~~~
$printer = \Pkg6\CloudPrint\Factory::Ushengyun([
'appId' => '10001',
'appSecret' => '**********',
]);
~~~
### 基于[佳博云](https://dev.poscom.cn/)的 PHP 接口组件
~~~
$printer = \Pkg6\CloudPrint\Factory::Poscom([
'memberCode' => '',
'apiKey' => '',
]);
~~~
### 基于[快递100](https://api.kuaidi100.com/document/5f0ff6adbc8da837cbd8aef8)的 PHP 接口组件
~~~
$printer = \Pkg6\CloudPrint\Factory::Kuaidi100([
'key' => '',
'secret' => '',
]);
~~~
### 基于[易联云](https://www.yilianyun.net/)的 PHP 接口组件
~~~
$printer = \Pkg6\CloudPrint\Factory::Yilianyun([
'client_id' => '',
'client_secret' => '',
]);
~~~
### 基于[映美云](http://open.jolimark.com/)的 PHP 接口组件
~~~
$printer = \Pkg6\CloudPrint\Factory::Jolimark([
'app_id' => '',
'app_key' => '',
]);
~~~
### 基于 [芯烨云](https://www.xpyun.net/open/index.html) 的 PHP 接口组件
~~~
$printer = \Pkg6\CloudPrint\Factory::Xpyun([
'user' => '',
'userKey' => '',
]);
~~~
### 基于 [飞鹅云](http://help.feieyun.com/document.php) 的 PHP 接口组件
~~~
$printer = \Pkg6\CloudPrint\Factory::Feieyun([
'user' => '',
'ukey' => '',
]);
~~~
## 支持厂商
- [飞鹅云](http://help.feieyun.com/document.php)
- [芯烨云](https://www.xpyun.net/open/index.html)
- [易联云](https://www.yilianyun.net/)
- [快递100](https://api.kuaidi100.com/document/5f0ff6a32977d50a94e10235)
- [映美云](http://open.jolimark.com/)
- [佳博云](https://dev.poscom.cn/)
- [中午云](http://www.zhongwu.co/)
- [优声云](https://www.ushengyun.com/)
## 加入我们
如果你认可我们的开源项目,有兴趣为 cloud-print 的发展做贡献,竭诚欢迎加入我们一起开发完善。无论是 报告错误issues 或是 Pull Request 开发,那怕是修改一个错别字也是对我们莫大的帮助。
## 许可协议
[MIT](https://opensource.org/licenses/MIT)
推荐扩展
-
topthink/think-ai
1年前
-
topthink/think-api
2年前
-
topthink/think-dumper
Dumper extend for thinkphp
4个月前 -
topthink/think-validate
think validate
1年前 -
yzh52521/think-mailer
A powerful and beautiful php mailer for All of ThinkPHP and Other PHP Frameworks based Symfony mailer
3年前