Metadata-Version: 2.4
Name: wetech-risk-sign-sdk
Version: 0.1.6
Summary: WeTech 风控签名 SDK
Author-email: wetech <your@wetech.vip>
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mcp
Requires-Dist: httpx
Dynamic: license-file

WeTech 风控签名 SDK (Python)
本 SDK 旨在简化商户接入 WeTech 风控系统的签名流程，确保请求数据的完整性与安全性。

安装
Bash
pip install wetech-risk-sign-sdk
快速开始
Python
from wetech_risk import WeTechSigner

# 初始化签名器 (请使用您的商户配置)
signer = WeTechSigner(mch_id="YOUR_MCH_ID", mch_key="YOUR_MCH_KEY")

# 准备风控数据
risk_data = {
    "BasicInfo": {
        "Scene": 1001,
        "Appid": "1001623976"
    },
    # ... 其他业务字段
}

# 生成签名
result = signer.sign(risk_data=risk_data, request_id="unique_request_id_001")

print(f"签名结果: {result['signature']}")
print(f"时间戳: {result['timestamp']}")
数据格式要求 (riskData)
为了确保签名校验通过，riskData 参数必须符合以下结构要求：

1. 基础结构
riskData 是一个嵌套的字典对象，必须包含以下核心模块：

BasicInfo (必需): 包含场景 ID 和 AppID。

Scene (int): 业务场景代码。

Appid (string): 与商户后台配置一致的 AppID。

PaymentInfo (可选): 支付相关信息。

UserInfo (可选): 用户基本信息（如 UserID, UserRegIp 等）。

OrderInfo / OrderItemInfo (可选): 订单及商品明细信息。

DeliveryInfo (可选): 收货地址及配送信息。

2. 重要规范
字段完整性：请确保所有非空字段按业务文档要求传入。SDK 会自动递归移除值为 None 的字段，以符合服务端 Include.NON_NULL 的校验规则。

数据序列化：SDK 内部会自动执行以下操作，商户无需手动处理：

字段按字母顺序递归排序。

使用紧凑 JSON 格式（无多余空格）。

对中文及特殊字符进行 Unicode 转义（符合服务端编码要求）。

错误排查
如果在请求时遇到 400 Bad Request，请检查：

MCH_ID / MCH_KEY：是否与商户控制台配置完全一致。

字段一致性：BasicInfo 中的 Appid 是否与请求报文中其他标识一致。

数据格式：确保所有金额字段统一为 string 类型（例如 "99.90" 而非 99.9）。

许可证
MIT License
