feie-print-sdk 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- feie_print_sdk-1.0.0/LICENSE +21 -0
- feie_print_sdk-1.0.0/PKG-INFO +342 -0
- feie_print_sdk-1.0.0/README.md +306 -0
- feie_print_sdk-1.0.0/feie_print_sdk/__init__.py +69 -0
- feie_print_sdk-1.0.0/feie_print_sdk/api/__init__.py +7 -0
- feie_print_sdk-1.0.0/feie_print_sdk/api/print_api.py +66 -0
- feie_print_sdk-1.0.0/feie_print_sdk/api/status_api.py +64 -0
- feie_print_sdk-1.0.0/feie_print_sdk/auth/__init__.py +6 -0
- feie_print_sdk-1.0.0/feie_print_sdk/auth/signer.py +42 -0
- feie_print_sdk-1.0.0/feie_print_sdk/client.py +111 -0
- feie_print_sdk-1.0.0/feie_print_sdk/config/__init__.py +6 -0
- feie_print_sdk-1.0.0/feie_print_sdk/config/settings.py +57 -0
- feie_print_sdk-1.0.0/feie_print_sdk/exceptions/__init__.py +20 -0
- feie_print_sdk-1.0.0/feie_print_sdk/exceptions/errors.py +35 -0
- feie_print_sdk-1.0.0/feie_print_sdk/models/__init__.py +12 -0
- feie_print_sdk-1.0.0/feie_print_sdk/models/request.py +61 -0
- feie_print_sdk-1.0.0/feie_print_sdk/models/response.py +95 -0
- feie_print_sdk-1.0.0/feie_print_sdk/protocol/__init__.py +6 -0
- feie_print_sdk-1.0.0/feie_print_sdk/protocol/http_client.py +105 -0
- feie_print_sdk-1.0.0/feie_print_sdk.egg-info/PKG-INFO +342 -0
- feie_print_sdk-1.0.0/feie_print_sdk.egg-info/SOURCES.txt +25 -0
- feie_print_sdk-1.0.0/feie_print_sdk.egg-info/dependency_links.txt +1 -0
- feie_print_sdk-1.0.0/feie_print_sdk.egg-info/requires.txt +1 -0
- feie_print_sdk-1.0.0/feie_print_sdk.egg-info/top_level.txt +1 -0
- feie_print_sdk-1.0.0/setup.cfg +4 -0
- feie_print_sdk-1.0.0/setup.py +40 -0
- feie_print_sdk-1.0.0/test/test_manual.py +127 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) [2026] [Mr.Lee]
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: feie-print-sdk
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: 飞鹅云打印Python SDK
|
|
5
|
+
Home-page: https://https://gitee.com/HN_Lee/feie-print-sdk
|
|
6
|
+
Author: Mr.Li
|
|
7
|
+
Author-email: 543662945@qq.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Keywords: feieyun printer print esc-pos sdk
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Topic :: Printing
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Requires-Python: >=3.7
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: requests>=2.25.0
|
|
24
|
+
Dynamic: author
|
|
25
|
+
Dynamic: author-email
|
|
26
|
+
Dynamic: classifier
|
|
27
|
+
Dynamic: description
|
|
28
|
+
Dynamic: description-content-type
|
|
29
|
+
Dynamic: home-page
|
|
30
|
+
Dynamic: keywords
|
|
31
|
+
Dynamic: license
|
|
32
|
+
Dynamic: license-file
|
|
33
|
+
Dynamic: requires-dist
|
|
34
|
+
Dynamic: requires-python
|
|
35
|
+
Dynamic: summary
|
|
36
|
+
|
|
37
|
+
# Feie Print SDK
|
|
38
|
+
|
|
39
|
+
<h1 align="center">飞鹅云打印 Python SDK</h4>
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
飞鹅云打印 API 的 Python SDK 封装,支持打印、状态查询等功能。
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
## Requirement
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Python >= 3.7
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Installation
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pip install feie-print-sdk
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Quick Start
|
|
58
|
+
|
|
59
|
+
#### 第一步:引入模块
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
from feie_print_sdk import FeieClient
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
#### 第二步:实例化客户端
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
client = FeieClient(
|
|
69
|
+
user='yourname@mail.com', # 飞鹅云用户名(邮箱)
|
|
70
|
+
ukey='yourukey' # 飞鹅云UKEY
|
|
71
|
+
)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### 第三步:发送打印请求
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
# 打印
|
|
78
|
+
success, message = client.print(
|
|
79
|
+
sn='932521687', # 打印机序列号
|
|
80
|
+
content='<BOLD>测试打印</BOLD><BR>' # 打印内容(ESC/POS指令)
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
if success:
|
|
84
|
+
print(f'✅ 打印成功: {message}')
|
|
85
|
+
else:
|
|
86
|
+
print(f'❌ 打印失败: {message}')
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### 第四步:查询打印机状态(可选)
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
ok, status = client.query_status('932521687')
|
|
93
|
+
print(f'打印机状态: {status}')
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### 完整示例
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
from feie_print_sdk import FeieClient
|
|
100
|
+
|
|
101
|
+
# 初始化客户端
|
|
102
|
+
client = FeieClient(
|
|
103
|
+
user='your_feie_username@mail.com',
|
|
104
|
+
ukey='your_feie_ukey'
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
# 打印
|
|
108
|
+
success, msg = client.print(
|
|
109
|
+
sn='your_sn',
|
|
110
|
+
content='''
|
|
111
|
+
<C><L><BOLD>门店测试 - 拣货联</BOLD></L></C><BR>
|
|
112
|
+
订单号: <BOLD>20241001001</BOLD><BR>
|
|
113
|
+
商品: 测试商品 x 1<BR>
|
|
114
|
+
合计: 10.00 元<BR>
|
|
115
|
+
''',
|
|
116
|
+
times=1
|
|
117
|
+
)
|
|
118
|
+
print(f'打印结果: {success}, {msg}')
|
|
119
|
+
|
|
120
|
+
# 查询打印机状态
|
|
121
|
+
ok, status = client.query_status('932521687')
|
|
122
|
+
print(f'打印机状态: {ok}, {status}')
|
|
123
|
+
|
|
124
|
+
# 关闭客户端
|
|
125
|
+
client.close()
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Usage or Instructions
|
|
129
|
+
|
|
130
|
+
### 1. 核心类说明
|
|
131
|
+
|
|
132
|
+
| 模块 | 说明 |
|
|
133
|
+
|------|------|
|
|
134
|
+
| `FeieClient` | 主客户端,统一入口 |
|
|
135
|
+
| `FeieError` | SDK基础异常 |
|
|
136
|
+
| `AuthError` | 认证异常 |
|
|
137
|
+
| `NetworkError` | 网络异常 |
|
|
138
|
+
| `PrintError` | 打印异常 |
|
|
139
|
+
| `StatusError` | 状态查询异常 |
|
|
140
|
+
|
|
141
|
+
### 2. 初始化配置
|
|
142
|
+
|
|
143
|
+
```python
|
|
144
|
+
from feie_print_sdk import FeieClient
|
|
145
|
+
|
|
146
|
+
# 方式一:默认API地址
|
|
147
|
+
client = FeieClient(
|
|
148
|
+
user='your_feie_username@mail.com',
|
|
149
|
+
ukey='your_feie_ukey'
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
# 方式二:自定义API地址和超时时间
|
|
153
|
+
client = FeieClient(
|
|
154
|
+
user='your_feie_username@mail.com',
|
|
155
|
+
ukey='your_feie_ukey',
|
|
156
|
+
url='http://api.feieyun.cn/Api/Open/', # 可选
|
|
157
|
+
timeout=30 # 可选,默认30秒
|
|
158
|
+
)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### 3. 打印接口
|
|
162
|
+
|
|
163
|
+
```python
|
|
164
|
+
# 基本打印
|
|
165
|
+
success, message = client.print(
|
|
166
|
+
sn='932521687', # 打印机序列号
|
|
167
|
+
content='打印内容' # ESC/POS指令格式
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
# 多份打印
|
|
171
|
+
success, message = client.print(
|
|
172
|
+
sn='your_sn',
|
|
173
|
+
content='打印内容',
|
|
174
|
+
times=3 # 打印3份
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
# 批量打印(使用循环)
|
|
178
|
+
sn_list = ['your_sn1', 'your_sn2', 'your_sn3']
|
|
179
|
+
for sn in sn_list:
|
|
180
|
+
client.print(sn, '测试内容')
|
|
181
|
+
time.sleep(1) # 避免请求过快
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 4. 状态查询接口
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
# 查询单个打印机状态
|
|
188
|
+
ok, status = client.query_status('your_sn')
|
|
189
|
+
|
|
190
|
+
if ok:
|
|
191
|
+
print(f'✅ 打印机正常: {status}')
|
|
192
|
+
else:
|
|
193
|
+
print(f'❌ 打印机异常: {status}')
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### 5. 使用上下文管理器(推荐)
|
|
197
|
+
|
|
198
|
+
```python
|
|
199
|
+
from feie_print_sdk import FeieClient
|
|
200
|
+
|
|
201
|
+
with FeieClient(user='xxx', ukey='xxx') as client:
|
|
202
|
+
success, msg = client.print('your_sn', '测试内容')
|
|
203
|
+
# 自动关闭客户端,释放资源
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### 6. 异常处理
|
|
207
|
+
|
|
208
|
+
```python
|
|
209
|
+
from feie_print_sdk import (
|
|
210
|
+
FeieClient,
|
|
211
|
+
AuthError,
|
|
212
|
+
NetworkError,
|
|
213
|
+
PrintError
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
try:
|
|
217
|
+
client = FeieClient(user='xxx', ukey='xxx')
|
|
218
|
+
success, msg = client.print('your_sn', '测试内容')
|
|
219
|
+
except AuthError as e:
|
|
220
|
+
print(f'❌ 认证失败: {e}')
|
|
221
|
+
except NetworkError as e:
|
|
222
|
+
print(f'❌ 网络异常: {e}')
|
|
223
|
+
except PrintError as e:
|
|
224
|
+
print(f'❌ 打印失败: {e}')
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### 7. 扩展自定义功能
|
|
228
|
+
|
|
229
|
+
```python
|
|
230
|
+
from feie_print_sdk import FeieClient
|
|
231
|
+
import time
|
|
232
|
+
|
|
233
|
+
class MyFeieClient(FeieClient):
|
|
234
|
+
"""自定义客户端(添加重试功能)"""
|
|
235
|
+
|
|
236
|
+
def print_with_retry(self, sn, content, retry=3, delay=2):
|
|
237
|
+
"""
|
|
238
|
+
带重试的打印
|
|
239
|
+
"""
|
|
240
|
+
for i in range(retry):
|
|
241
|
+
success, msg = self.print(sn, content)
|
|
242
|
+
if success:
|
|
243
|
+
return True, msg
|
|
244
|
+
print(f'第 {i+1} 次重试...')
|
|
245
|
+
time.sleep(delay)
|
|
246
|
+
return False, f'重试 {retry} 次后仍然失败'
|
|
247
|
+
|
|
248
|
+
# 使用
|
|
249
|
+
client = MyFeieClient(user='xxx', ukey='xxx')
|
|
250
|
+
success, msg = client.print_with_retry('932521687', '测试', retry=5)
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## API Reference
|
|
254
|
+
|
|
255
|
+
### FeieClient
|
|
256
|
+
|
|
257
|
+
#### `__init__(user, ukey, url=None, timeout=30)`
|
|
258
|
+
|
|
259
|
+
初始化飞鹅云客户端
|
|
260
|
+
|
|
261
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
262
|
+
|------|------|------|------|
|
|
263
|
+
| `user` | str | ✅ | 飞鹅云用户名(邮箱) |
|
|
264
|
+
| `ukey` | str | ✅ | 飞鹅云UKEY |
|
|
265
|
+
| `url` | str | ❌ | API地址(默认官方地址) |
|
|
266
|
+
| `timeout` | int | ❌ | 请求超时时间(秒,默认30) |
|
|
267
|
+
|
|
268
|
+
#### `print(sn, content, times=1)`
|
|
269
|
+
|
|
270
|
+
发送打印请求
|
|
271
|
+
|
|
272
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
273
|
+
|------|------|------|------|
|
|
274
|
+
| `sn` | str | ✅ | 打印机序列号 |
|
|
275
|
+
| `content` | str | ✅ | 打印内容(ESC/POS指令) |
|
|
276
|
+
| `times` | int | ❌ | 打印份数(默认1) |
|
|
277
|
+
|
|
278
|
+
**返回**: `(bool, str)` - (是否成功, 消息)
|
|
279
|
+
|
|
280
|
+
#### `query_status(sn)`
|
|
281
|
+
|
|
282
|
+
查询打印机状态
|
|
283
|
+
|
|
284
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
285
|
+
|------|------|------|------|
|
|
286
|
+
| `sn` | str | ✅ | 打印机序列号 |
|
|
287
|
+
|
|
288
|
+
**返回**: `(bool, str)` - (是否正常, 状态描述)
|
|
289
|
+
|
|
290
|
+
#### `close()`
|
|
291
|
+
|
|
292
|
+
关闭客户端,释放资源
|
|
293
|
+
|
|
294
|
+
### 异常类
|
|
295
|
+
|
|
296
|
+
| 异常 | 说明 |
|
|
297
|
+
|------|------|
|
|
298
|
+
| `FeieError` | SDK基础异常 |
|
|
299
|
+
| `AuthError` | 认证异常(参数错误、签名错误) |
|
|
300
|
+
| `APIError` | API调用异常(业务返回错误) |
|
|
301
|
+
| `NetworkError` | 网络异常(超时、连接失败) |
|
|
302
|
+
| `PrintError` | 打印异常 |
|
|
303
|
+
| `StatusError` | 状态查询异常 |
|
|
304
|
+
|
|
305
|
+
### 数据模型
|
|
306
|
+
|
|
307
|
+
| 模型 | 说明 |
|
|
308
|
+
|------|------|
|
|
309
|
+
| `PrintRequest` | 打印请求模型 |
|
|
310
|
+
| `StatusRequest` | 状态查询请求模型 |
|
|
311
|
+
| `PrintResponse` | 打印响应模型 |
|
|
312
|
+
| `StatusResponse` | 状态查询响应模型 |
|
|
313
|
+
|
|
314
|
+
## ChangeLog
|
|
315
|
+
|
|
316
|
+
### [v1.0.0] - 2026-01-18
|
|
317
|
+
|
|
318
|
+
- **Feature**: 初始版本发布
|
|
319
|
+
- **Feature**: 支持打印功能 (`print`)
|
|
320
|
+
- **Feature**: 支持打印机状态查询 (`query_status`)
|
|
321
|
+
- **Feature**: 支持上下文管理器
|
|
322
|
+
- **Feature**: 统一的异常处理体系
|
|
323
|
+
- **Feature**: 请求超时控制
|
|
324
|
+
- **Feature**: 完整的类型提示
|
|
325
|
+
|
|
326
|
+
## License
|
|
327
|
+
|
|
328
|
+
MIT License
|
|
329
|
+
|
|
330
|
+
## 贡献
|
|
331
|
+
|
|
332
|
+
欢迎提交 Issue 和 Pull Request!
|
|
333
|
+
|
|
334
|
+
## 联系
|
|
335
|
+
|
|
336
|
+
- 作者: Your Name
|
|
337
|
+
- 邮箱: your_email@example.com
|
|
338
|
+
- GitHub: [https://gitee.com/HN_Lee/feie-print-sdk](https://gitee.com/HN_Lee/feie-print-sdk)
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
如果觉得好用,请在 Gitee 上给个 Star ⭐️,感谢支持!
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
# Feie Print SDK
|
|
2
|
+
|
|
3
|
+
<h1 align="center">飞鹅云打印 Python SDK</h4>
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
飞鹅云打印 API 的 Python SDK 封装,支持打印、状态查询等功能。
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## Requirement
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Python >= 3.7
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pip install feie-print-sdk
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
22
|
+
|
|
23
|
+
#### 第一步:引入模块
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
from feie_print_sdk import FeieClient
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
#### 第二步:实例化客户端
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
client = FeieClient(
|
|
33
|
+
user='yourname@mail.com', # 飞鹅云用户名(邮箱)
|
|
34
|
+
ukey='yourukey' # 飞鹅云UKEY
|
|
35
|
+
)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
#### 第三步:发送打印请求
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
# 打印
|
|
42
|
+
success, message = client.print(
|
|
43
|
+
sn='932521687', # 打印机序列号
|
|
44
|
+
content='<BOLD>测试打印</BOLD><BR>' # 打印内容(ESC/POS指令)
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
if success:
|
|
48
|
+
print(f'✅ 打印成功: {message}')
|
|
49
|
+
else:
|
|
50
|
+
print(f'❌ 打印失败: {message}')
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
#### 第四步:查询打印机状态(可选)
|
|
54
|
+
|
|
55
|
+
```python
|
|
56
|
+
ok, status = client.query_status('932521687')
|
|
57
|
+
print(f'打印机状态: {status}')
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
#### 完整示例
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from feie_print_sdk import FeieClient
|
|
64
|
+
|
|
65
|
+
# 初始化客户端
|
|
66
|
+
client = FeieClient(
|
|
67
|
+
user='your_feie_username@mail.com',
|
|
68
|
+
ukey='your_feie_ukey'
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
# 打印
|
|
72
|
+
success, msg = client.print(
|
|
73
|
+
sn='your_sn',
|
|
74
|
+
content='''
|
|
75
|
+
<C><L><BOLD>门店测试 - 拣货联</BOLD></L></C><BR>
|
|
76
|
+
订单号: <BOLD>20241001001</BOLD><BR>
|
|
77
|
+
商品: 测试商品 x 1<BR>
|
|
78
|
+
合计: 10.00 元<BR>
|
|
79
|
+
''',
|
|
80
|
+
times=1
|
|
81
|
+
)
|
|
82
|
+
print(f'打印结果: {success}, {msg}')
|
|
83
|
+
|
|
84
|
+
# 查询打印机状态
|
|
85
|
+
ok, status = client.query_status('932521687')
|
|
86
|
+
print(f'打印机状态: {ok}, {status}')
|
|
87
|
+
|
|
88
|
+
# 关闭客户端
|
|
89
|
+
client.close()
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Usage or Instructions
|
|
93
|
+
|
|
94
|
+
### 1. 核心类说明
|
|
95
|
+
|
|
96
|
+
| 模块 | 说明 |
|
|
97
|
+
|------|------|
|
|
98
|
+
| `FeieClient` | 主客户端,统一入口 |
|
|
99
|
+
| `FeieError` | SDK基础异常 |
|
|
100
|
+
| `AuthError` | 认证异常 |
|
|
101
|
+
| `NetworkError` | 网络异常 |
|
|
102
|
+
| `PrintError` | 打印异常 |
|
|
103
|
+
| `StatusError` | 状态查询异常 |
|
|
104
|
+
|
|
105
|
+
### 2. 初始化配置
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
from feie_print_sdk import FeieClient
|
|
109
|
+
|
|
110
|
+
# 方式一:默认API地址
|
|
111
|
+
client = FeieClient(
|
|
112
|
+
user='your_feie_username@mail.com',
|
|
113
|
+
ukey='your_feie_ukey'
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
# 方式二:自定义API地址和超时时间
|
|
117
|
+
client = FeieClient(
|
|
118
|
+
user='your_feie_username@mail.com',
|
|
119
|
+
ukey='your_feie_ukey',
|
|
120
|
+
url='http://api.feieyun.cn/Api/Open/', # 可选
|
|
121
|
+
timeout=30 # 可选,默认30秒
|
|
122
|
+
)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 3. 打印接口
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
# 基本打印
|
|
129
|
+
success, message = client.print(
|
|
130
|
+
sn='932521687', # 打印机序列号
|
|
131
|
+
content='打印内容' # ESC/POS指令格式
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
# 多份打印
|
|
135
|
+
success, message = client.print(
|
|
136
|
+
sn='your_sn',
|
|
137
|
+
content='打印内容',
|
|
138
|
+
times=3 # 打印3份
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
# 批量打印(使用循环)
|
|
142
|
+
sn_list = ['your_sn1', 'your_sn2', 'your_sn3']
|
|
143
|
+
for sn in sn_list:
|
|
144
|
+
client.print(sn, '测试内容')
|
|
145
|
+
time.sleep(1) # 避免请求过快
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 4. 状态查询接口
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
# 查询单个打印机状态
|
|
152
|
+
ok, status = client.query_status('your_sn')
|
|
153
|
+
|
|
154
|
+
if ok:
|
|
155
|
+
print(f'✅ 打印机正常: {status}')
|
|
156
|
+
else:
|
|
157
|
+
print(f'❌ 打印机异常: {status}')
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 5. 使用上下文管理器(推荐)
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
from feie_print_sdk import FeieClient
|
|
164
|
+
|
|
165
|
+
with FeieClient(user='xxx', ukey='xxx') as client:
|
|
166
|
+
success, msg = client.print('your_sn', '测试内容')
|
|
167
|
+
# 自动关闭客户端,释放资源
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 6. 异常处理
|
|
171
|
+
|
|
172
|
+
```python
|
|
173
|
+
from feie_print_sdk import (
|
|
174
|
+
FeieClient,
|
|
175
|
+
AuthError,
|
|
176
|
+
NetworkError,
|
|
177
|
+
PrintError
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
try:
|
|
181
|
+
client = FeieClient(user='xxx', ukey='xxx')
|
|
182
|
+
success, msg = client.print('your_sn', '测试内容')
|
|
183
|
+
except AuthError as e:
|
|
184
|
+
print(f'❌ 认证失败: {e}')
|
|
185
|
+
except NetworkError as e:
|
|
186
|
+
print(f'❌ 网络异常: {e}')
|
|
187
|
+
except PrintError as e:
|
|
188
|
+
print(f'❌ 打印失败: {e}')
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 7. 扩展自定义功能
|
|
192
|
+
|
|
193
|
+
```python
|
|
194
|
+
from feie_print_sdk import FeieClient
|
|
195
|
+
import time
|
|
196
|
+
|
|
197
|
+
class MyFeieClient(FeieClient):
|
|
198
|
+
"""自定义客户端(添加重试功能)"""
|
|
199
|
+
|
|
200
|
+
def print_with_retry(self, sn, content, retry=3, delay=2):
|
|
201
|
+
"""
|
|
202
|
+
带重试的打印
|
|
203
|
+
"""
|
|
204
|
+
for i in range(retry):
|
|
205
|
+
success, msg = self.print(sn, content)
|
|
206
|
+
if success:
|
|
207
|
+
return True, msg
|
|
208
|
+
print(f'第 {i+1} 次重试...')
|
|
209
|
+
time.sleep(delay)
|
|
210
|
+
return False, f'重试 {retry} 次后仍然失败'
|
|
211
|
+
|
|
212
|
+
# 使用
|
|
213
|
+
client = MyFeieClient(user='xxx', ukey='xxx')
|
|
214
|
+
success, msg = client.print_with_retry('932521687', '测试', retry=5)
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## API Reference
|
|
218
|
+
|
|
219
|
+
### FeieClient
|
|
220
|
+
|
|
221
|
+
#### `__init__(user, ukey, url=None, timeout=30)`
|
|
222
|
+
|
|
223
|
+
初始化飞鹅云客户端
|
|
224
|
+
|
|
225
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
226
|
+
|------|------|------|------|
|
|
227
|
+
| `user` | str | ✅ | 飞鹅云用户名(邮箱) |
|
|
228
|
+
| `ukey` | str | ✅ | 飞鹅云UKEY |
|
|
229
|
+
| `url` | str | ❌ | API地址(默认官方地址) |
|
|
230
|
+
| `timeout` | int | ❌ | 请求超时时间(秒,默认30) |
|
|
231
|
+
|
|
232
|
+
#### `print(sn, content, times=1)`
|
|
233
|
+
|
|
234
|
+
发送打印请求
|
|
235
|
+
|
|
236
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
237
|
+
|------|------|------|------|
|
|
238
|
+
| `sn` | str | ✅ | 打印机序列号 |
|
|
239
|
+
| `content` | str | ✅ | 打印内容(ESC/POS指令) |
|
|
240
|
+
| `times` | int | ❌ | 打印份数(默认1) |
|
|
241
|
+
|
|
242
|
+
**返回**: `(bool, str)` - (是否成功, 消息)
|
|
243
|
+
|
|
244
|
+
#### `query_status(sn)`
|
|
245
|
+
|
|
246
|
+
查询打印机状态
|
|
247
|
+
|
|
248
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
249
|
+
|------|------|------|------|
|
|
250
|
+
| `sn` | str | ✅ | 打印机序列号 |
|
|
251
|
+
|
|
252
|
+
**返回**: `(bool, str)` - (是否正常, 状态描述)
|
|
253
|
+
|
|
254
|
+
#### `close()`
|
|
255
|
+
|
|
256
|
+
关闭客户端,释放资源
|
|
257
|
+
|
|
258
|
+
### 异常类
|
|
259
|
+
|
|
260
|
+
| 异常 | 说明 |
|
|
261
|
+
|------|------|
|
|
262
|
+
| `FeieError` | SDK基础异常 |
|
|
263
|
+
| `AuthError` | 认证异常(参数错误、签名错误) |
|
|
264
|
+
| `APIError` | API调用异常(业务返回错误) |
|
|
265
|
+
| `NetworkError` | 网络异常(超时、连接失败) |
|
|
266
|
+
| `PrintError` | 打印异常 |
|
|
267
|
+
| `StatusError` | 状态查询异常 |
|
|
268
|
+
|
|
269
|
+
### 数据模型
|
|
270
|
+
|
|
271
|
+
| 模型 | 说明 |
|
|
272
|
+
|------|------|
|
|
273
|
+
| `PrintRequest` | 打印请求模型 |
|
|
274
|
+
| `StatusRequest` | 状态查询请求模型 |
|
|
275
|
+
| `PrintResponse` | 打印响应模型 |
|
|
276
|
+
| `StatusResponse` | 状态查询响应模型 |
|
|
277
|
+
|
|
278
|
+
## ChangeLog
|
|
279
|
+
|
|
280
|
+
### [v1.0.0] - 2026-01-18
|
|
281
|
+
|
|
282
|
+
- **Feature**: 初始版本发布
|
|
283
|
+
- **Feature**: 支持打印功能 (`print`)
|
|
284
|
+
- **Feature**: 支持打印机状态查询 (`query_status`)
|
|
285
|
+
- **Feature**: 支持上下文管理器
|
|
286
|
+
- **Feature**: 统一的异常处理体系
|
|
287
|
+
- **Feature**: 请求超时控制
|
|
288
|
+
- **Feature**: 完整的类型提示
|
|
289
|
+
|
|
290
|
+
## License
|
|
291
|
+
|
|
292
|
+
MIT License
|
|
293
|
+
|
|
294
|
+
## 贡献
|
|
295
|
+
|
|
296
|
+
欢迎提交 Issue 和 Pull Request!
|
|
297
|
+
|
|
298
|
+
## 联系
|
|
299
|
+
|
|
300
|
+
- 作者: Your Name
|
|
301
|
+
- 邮箱: your_email@example.com
|
|
302
|
+
- GitHub: [https://gitee.com/HN_Lee/feie-print-sdk](https://gitee.com/HN_Lee/feie-print-sdk)
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
如果觉得好用,请在 Gitee 上给个 Star ⭐️,感谢支持!
|