Metadata-Version: 2.4
Name: autman-huawei
Version: 1.3.0
Summary: Single-file utility module for payment and QingLong environment operations.
Author: yousang
License: MIT
Keywords: autman,qinglong,payment,utils
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.28.0
Dynamic: license-file

# autman-huawei

一个单文件 Python 工具模块，主要提供以下三类能力：

- 二维码链接生成
- 支付配置读取与码支付订单操作
- 青龙环境变量管理

## 安装

```bash
pip install -U autman-huawei
```

## 导入方式

```python
import autman_huawei
```

或者：

```python
from autman_huawei import (
    MaPayClient,
    QingLongClient,
    generate_qrcode_url,
    get_pay_config,
)
```

## 功能概览

- 生成二维码图片链接
- 读取运行时支付配置
- 管理青龙环境变量
- 创建码支付订单
- 查询码支付订单状态
- 在没有 `middleware` 时安全降级导入

## 使用说明

### 1. 生成二维码链接

```python
from autman_huawei import generate_qrcode_url

url = generate_qrcode_url("https://example.com")
print(url)
```

示例输出：

```text
https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=https%3A//example.com
```

### 2. 读取支付配置

`get_pay_config()` 会从 `dd_sign_config` 数据桶读取支付相关配置，并返回整理后的字典。

```python
from autman_huawei import get_pay_config

config = get_pay_config()
print(config)
```

示例输出：

```python
{
    "ma_pay_switch": False,
    "qr_pay_switch": True,
    "zsm": "example text",
    "pay_types": {
        "alipay": "支付宝",
        "wxpay": "微信支付",
    },
}
```

### 3. 使用青龙客户端

`QingLongClient` 用于创建、更新、启用和删除青龙环境变量。

#### 3.1 默认初始化

```python
from autman_huawei import QingLongClient

client = QingLongClient("JD_COOKIE")
print(client.is_configured())
```

默认会从以下位置读取青龙配置：

- bucket：`G_AUTMAN`
- key：`ql_config`

配置格式：

```text
host丨client_id丨client_secret
```

#### 3.2 自定义 bucket 和 key

这是 `1.3.0` 新增能力。

```python
from autman_huawei import QingLongClient

client = QingLongClient(
    "JD_COOKIE",
    config_bucket="MY_BUCKET",
    config_key="my_ql_config",
)
print(client.is_configured())
```

#### 3.3 直接传青龙配置字符串

```python
from autman_huawei import QingLongClient

client = QingLongClient(
    "JD_COOKIE",
    "http://127.0.0.1:5700丨client_id丨client_secret",
)
print(client.is_configured())
```

#### 3.4 更新或创建环境变量

```python
from autman_huawei import QingLongClient

client = QingLongClient("JD_COOKIE")
ok = client.update_env(
    username="demo_user",
    env_value="pt_key=xxx;pt_pin=demo;",
    remark="demo_user",
)
print(ok)
```

#### 3.5 删除环境变量

```python
from autman_huawei import QingLongClient

client = QingLongClient("JD_COOKIE")
ok = client.delete_env("demo_user")
print(ok)
```

### 4. 使用码支付客户端

`MaPayClient` 可以创建订单并查询支付状态。

#### 4.1 默认初始化

```python
from autman_huawei import MaPayClient

client = MaPayClient()
print(client.is_configured())
```

#### 4.2 直接传配置

```python
from autman_huawei import MaPayClient

client = MaPayClient(
    gateway="https://pay.example.com",
    pid="10001",
    key="your_key",
    notify_url="https://example.com/notify",
    return_url="https://example.com/return",
)
print(client.is_configured())
```

#### 4.3 创建订单

```python
from autman_huawei import MaPayClient

client = MaPayClient(
    gateway="https://pay.example.com",
    pid="10001",
    key="your_key",
)

result = client.create_order(
    amount=10.5,
    pay_type="alipay",
    out_trade_no="order_10001",
    subject="测试订单",
    param="custom_data",
)
print(result)
```

示例成功输出：

```python
{
    "trade_no": "202603160001",
    "pay_url": "https://pay.example.com/pay/202603160001",
    "raw": {...},
}
```

#### 4.4 查询订单状态

```python
from autman_huawei import MaPayClient

client = MaPayClient(
    gateway="https://pay.example.com",
    pid="10001",
    key="your_key",
)

result = client.check_order("order_10001")
print(result)
print(client.is_paid("order_10001"))
```

## 配置说明

### middleware 数据桶

本模块通过宿主环境提供的 `middleware.bucketGet` API 读取运行时配置。

### 青龙配置默认位置

- bucket：`G_AUTMAN`
- key：`ql_config`

示例值：

```text
http://127.0.0.1:5700丨abcdef丨123456
```

### 支付配置数据桶

- bucket：`dd_sign_config`

支持的键：

- `ma_pay_switch`
- `qr_pay_switch`
- `zsm`
- `pay_types`
- `ma_pay_gateway`
- `ma_pay_pid`
- `ma_pay_key`
- `ma_pay_notify_url`
- `ma_pay_return_url`

`pay_types` 示例：

```text
alipay:支付宝,wxpay:微信支付,qqpay:QQ钱包
```

## 行为说明

- 如果 `middleware` 不存在，模块仍可安全导入
- 缺失的 bucket 配置会回退为空字符串或 `False` 风格结果
- `MaPayClient(...).is_configured()` 在支付配置不完整时返回 `False`
- `QingLongClient(...).is_configured()` 在青龙 host、client_id、client_secret 缺失时返回 `False`
- `QingLongClient("JD_COOKIE")` 老写法继续兼容
- `QingLongClient(..., config_bucket="MY_BUCKET", config_key="my_ql_config")` 支持自定义读取位置

## 快速测试

```python
import autman_huawei

print(autman_huawei.__version__)
print(autman_huawei.generate_qrcode_url("https://example.com"))
print(autman_huawei.MaPayClient(gateway="", pid="", key="").is_configured())
print(autman_huawei.QingLongClient("JD_COOKIE", "").is_configured())
```

## License

MIT
