Epusdt 商户支付 Python SDK,支持 GMPay、EPay 兼容接入与回调验签
Project description
epusdt Python SDK
适用于 GMWalletApp/epusdt 商户公开支付接口的 Python SDK,支持 GMPay 下单、EPay submit.php 兼容接入、订单查询、回调验签和收款二维码生成。
当前版本只封装商户公开支付能力,不包含后台管理接口。
项目链接
- Epusdt 官方项目:GMWalletApp/epusdt
- GitHub 仓库:Yufeifeio/epusdt-python-sdk
- PyPI 页面:epusdt
- 更新日志:CHANGELOG.md
- 示例代码:基础用法 / Flask / FastAPI
已支持功能
- GMPay 创建订单
- 支付配置查询
- 收银台订单查询
- 支付状态查询
- 切换网络 / 币种
- 手动提交交易哈希补单
- EPay
submit.php兼容接入 - GMPay / EPay 回调验签
- 订单二维码生成
安装
直接安装:
pip install epusdt
需要二维码功能:
pip install epusdt[qrcode]
升级到最新版:
pip install --upgrade epusdt
本地开发安装:
pip install -e .
快速开始
from epusdt import EpusdtClient
client = EpusdtClient(
base_url="https://pay.example.com",
pid="1000",
secret_key="epusdt_secret_key",
)
order = client.create_order(
order_id="ORD202606240001",
amount=100,
currency="cny",
token="USDT",
network="tron",
notify_url="https://merchant.example.com/notify",
redirect_url="https://merchant.example.com/return",
name="会员充值",
)
print(order.trade_id)
print(order.payment_url)
print(order.actual_amount)
常见用法
查询支付配置
config = client.get_public_config()
for asset in config.supported_assets:
print(asset.network, asset.tokens)
创建待选网络订单
placeholder = client.create_order(
order_id="ORD202606240002",
amount=88.5,
currency="cny",
notify_url="https://merchant.example.com/notify",
)
selected = client.switch_network(
trade_id=placeholder.trade_id,
token="USDT",
network="solana",
)
print(selected.trade_id)
print(selected.receive_address)
查询订单和支付状态
checkout = client.get_checkout("20260523171652123456001")
status = client.check_status("20260523171652123456001")
print(checkout.payment_type)
print(status.status)
EPay 兼容接入
构造跳转地址:
url = client.build_epay_redirect_url(
out_trade_no="ORD202606240003",
money=100,
notify_url="https://merchant.example.com/notify",
return_url="https://merchant.example.com/return",
name="会员充值",
)
print(url)
直接请求网关并获取收银台地址:
redirect = client.create_epay_order(
out_trade_no="ORD202606240003",
money=100,
notify_url="https://merchant.example.com/notify",
return_url="https://merchant.example.com/return",
)
print(redirect.checkout_url)
手动补单
result = client.submit_tx_hash(
trade_id="20260523171652123456001",
block_transaction_id="0xabc123",
)
print(result.status)
print(result.block_transaction_id)
回调验签
GMPay JSON 回调:
payload = {
"pid": "1000",
"trade_id": "20260523171652123456001",
"order_id": "ORD202605230001",
"amount": 100,
"actual_amount": 14.29,
"receive_address": "TTestTronAddress001",
"token": "USDT",
"block_transaction_id": "0xabc123",
"status": 2,
"signature": "a1b2c3",
}
callback = client.parse_gmpay_callback(payload)
print(callback.trade_id)
EPay GET 回调:
params = {
"pid": "1000",
"trade_no": "20260523171652123456001",
"out_trade_no": "ORD202605230001",
"type": "alipay",
"name": "会员充值",
"money": "100.0000",
"trade_status": "TRADE_SUCCESS",
"sign": "a1b2c3",
"sign_type": "MD5",
}
callback = client.parse_epay_callback(params)
print(callback.out_trade_no)
生成二维码
order = client.get_checkout("20260523171652123456001")
image = order.generate_qrcode()
image.save("epusdt-payment.png")
示例代码
examples/basic_usage.py:基础下单示例examples/flask_example.py:Flask 创建订单与回调处理示例examples/fastapi_example.py:FastAPI 创建订单与回调处理示例
API 一览
create_order(...)get_public_config()get_checkout(trade_id)check_status(trade_id)switch_network(trade_id, token, network)submit_tx_hash(trade_id, block_transaction_id)build_epay_params(...)build_epay_redirect_url(...)create_epay_order(...)verify_gmpay_callback(payload)verify_epay_callback(params)parse_gmpay_callback(payload)parse_epay_callback(params)
适用范围
当前版本面向 epusdt 商户公开支付接口,适合以下接入场景:
- 服务端创建订单
- 前端收银台支付
- EPay 兼容接入
- 支付回调验签
验证情况
- 单元测试通过
- 构建通过
- 干净虚拟环境安装通过
- 安装后导入通过
- 二维码功能烟测通过
- 已完成线上网关联调验证
开发
python -m venv .venv
. .venv/bin/activate
pip install -U pip build pytest
pip install -e .
pytest
python -m build
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
epusdt-0.2.3.tar.gz
(18.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
epusdt-0.2.3-py3-none-any.whl
(13.9 kB
view details)
File details
Details for the file epusdt-0.2.3.tar.gz.
File metadata
- Download URL: epusdt-0.2.3.tar.gz
- Upload date:
- Size: 18.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a50d987348c9a01022833b50627cd07ff2bc55197716ec0d94588b6fd183ee3
|
|
| MD5 |
a82fab1245fd162e6d0aba9b8287b378
|
|
| BLAKE2b-256 |
6eaec975a0826831dda16b178429a30c9abdd247ae54491f908c1399027ef8db
|
File details
Details for the file epusdt-0.2.3-py3-none-any.whl.
File metadata
- Download URL: epusdt-0.2.3-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
731cffd629adfbc45626edccfe9c13ead5eac867263068ce542171c1a0dfda2e
|
|
| MD5 |
b38a8e9fcd4a4fac22450faf271f63c0
|
|
| BLAKE2b-256 |
7cc2cd099a552bb5a46f3daefe506ccc33425726e8bec29dbacc46b148da2cae
|