Skip to main content

Python SDK for GMWalletApp/epusdt GMPay and EPay integrations

Project description

Epusdt Python SDK

Python SDK for GMWalletApp/epusdt

PyPI version Python versions License

面向 epusdt 商户接入场景,当前聚焦公开支付接口,不包含后台管理端接口封装。

支持能力

  • 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="VIP",
)

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="VIP",
)

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": "VIP",
    "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")

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)

适用范围

当前 SDK 面向 GMWalletApp/epusdt 的商户公开支付接口。

如果你的目标是:

  • 商户下单
  • 收银台支付
  • EPay 兼容接入
  • 回调验签

这个仓库就是当前应该使用的 Python SDK。

验证情况

  • 单元测试通过
  • 构建通过
  • 干净环境安装通过
  • 安装后导入通过
  • 二维码烟测通过
  • 已发布到 PyPI
  • 已对真实线上 epusdt 网关做过联调

开发

python -m venv .venv
. .venv/bin/activate
pip install -U pip build pytest
pip install -e .
pytest
python -m build

Project details


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.2.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

epusdt-0.2.2-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

Details for the file epusdt-0.2.2.tar.gz.

File metadata

  • Download URL: epusdt-0.2.2.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for epusdt-0.2.2.tar.gz
Algorithm Hash digest
SHA256 711153c928bcb582238c0eda4e16c1609e2b419aeb4a66336a0104e7c9026e58
MD5 91056542f1b2dde4e23d83e55a32e204
BLAKE2b-256 3995b931a5d938629a160a2d065e12e799cd32c2186869248f9b10ec78f7c38d

See more details on using hashes here.

File details

Details for the file epusdt-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: epusdt-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for epusdt-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b62408700c124714da370d5413bd5dff00c3b6f903f3005fe859f11448adf65a
MD5 b11561ad0e496e55097aa17df48cc780
BLAKE2b-256 6c42bb5685a06519ab5ceac9a92934273c0586c4239a8914a11d053b4ee14281

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page