Metadata-Version: 2.4
Name: lesscode_pay
Version: 0.0.2
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Rust
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Requires-Dist: cryptography>=44.0.2
Requires-Dist: requests>=2.31.0
Requires-Dist: xmltodict>=0.14.2
License-File: LICENSE
Summary: 统一的低代码支付SDK（微信支付 V2/V3、支付宝、银联、Stripe 等 14 大支付平台），基于 Rust+pyo3
Keywords: payment,wechat,alipay,stripe,paypal,unionpay
Author-email: navysummer <navysummer@yeah.net>
Requires-Python: >=3.7
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://example.com/lesscode_pay
Project-URL: Source, https://github.com/navysummer/lesscode_pay

# lesscode_pay

面向 Python 的 Rust+PyO3 支付 SDK，覆盖 **14 大支付平台**，参数与返回对齐官方文档。

## 安装

```bash
pip install lesscode_pay
```

或从源码构建：

```bash
pip install maturin
maturin build --release
pip install target/wheels/lesscode_pay-*.whl
```

## 支持的支付平台

| 支付平台 | 类名 | 签名方式 | 方法数 |
|----------|------|----------|--------|
| 微信支付 V2 | `WeChatPayV2` | MD5 | 47 |
| 微信支付 V3 直连 | `WeChatPayV3Common` | WECHATPAY2-SHA256-RSA2048 | 100+ |
| 微信支付 V3 APP | `WeChatPayV3App` | WECHATPAY2-SHA256-RSA2048 | 8 |
| 微信支付 V3 服务商 | `WeChatPayV3Partner` | WECHATPAY2-SHA256-RSA2048 | 10+ |
| 支付宝 | `AlipayClient` | RSA2 | 22（通用 execute 可调任意接口） |
| QQ 钱包支付 | `QQPayClient` | MD5 | 24 |
| 抖音支付 | `DouyinPayClient` | RSA-SHA256 | 20 |
| 百度支付 | `BaiduPayClient` | RSA-SHA256 | 16 |
| 网易支付 | `NetEasePayClient` | MD5 | 19 |
| 银联支付 | `UnionPayClient` | RSA-SHA256 | 24 |
| 京东支付 | `JDPayClient` | RSA-SHA256 | 15 |
| 易宝支付 | `YeePayClient` | RSA-SHA256 | 17 |
| Stripe | `StripeClient` | Bearer Token | 64 |
| PayPal | `PayPalClient` | OAuth2 Bearer Token | 50 |

## 快速开始

```python
import lesscode_pay as pay

# 微信支付 V3 - JSAPI 下单
c = pay.WeChatPayV3Common(
    mchid="1234567890",
    cert_serial_no="ABCD1234",
    private_key_pem="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
)
resp = c.create_order_jsapi(
    out_trade_no="T20240001",
    total=100,
    description="测试商品",
    payer_openid="oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
    notify_url="https://your-domain.com/notify",
)
print(f"prepay_id: {resp['prepay_id']}")

# Stripe - 创建 PaymentIntent
stripe = pay.StripeClient(api_key="sk_test_xxx")
pi = stripe.create_payment_intent('{"amount":2000,"currency":"usd"}')

# 银联 - 消费
union = pay.UnionPayClient(
    mer_id="123456",
    private_key_pem="-----BEGIN PRIVATE KEY-----\n...",
    public_key_pem="-----BEGIN PUBLIC KEY-----\n...",
)
form = union.consume("O20240001", "100", "https://your-domain.com/notify", "https://your-domain.com/return")
```

## 文档

详细文档与用法见 `doc/` 目录：

- [全部文档索引](doc/index.md)
- [完整 API 参考](doc/api_reference.md)
- [微信支付 V2](doc/wx_v2.md)
- [微信支付 V3](doc/wx_v3.md)
- [支付宝](doc/alipay.md)
- [QQ 钱包支付](doc/qqpay.md)
- [抖音支付](doc/douyin.md)
- [百度支付](doc/baidu.md)
- [网易支付](doc/netease.md)
- [银联支付](doc/unionpay.md)
- [京东支付](doc/jdpay.md)
- [易宝支付](doc/yeepay.md)
- [Stripe](doc/stripe.md)
- [PayPal](doc/paypal.md)

## 示例

各平台使用示例见 `example/` 目录。

## 设计原则

1. **原生 API 对接**：直接对接各支付平台原始 HTTP API，无第三方支付 SDK 封装
2. **零第三方 Rust 依赖**：仅使用 `pyo3`，所有支付逻辑通过 Rust 原生实现
3. **统一接口风格**：所有平台采用一致的参数命名和调用方式
4. **跨平台**：支持 Python 3.8+，macOS/Linux/Windows

