https://api.antspay.vip(OpenAPI:代收 / 代付 / 查单 / 余额)https://antspage.vip(代收响应 paymentUrl 指向此域名,付款人在钱包内打开)https://docs.antspay.vipAuthorization: Basic <base64(mid:signature)>Request-Time(13 位毫秒时间戳,与平台时间偏差不得超过 ±60 秒,必须与签名中使用的一致)PKR。USDT_TRC20 是链上通道:代收把应付 USDT 入 PKR 账;代付按「代付汇率」把 PKR 折成 USDT 转出。pm / 代付 type):JAZZCASH, JC直连EASYPAISA, EP直连USDT_TRC20, USDT-TRC20(代收与代付)POST 接口请求体固定采用 application/json 格式。
签名字符串: signatureString = Request-Time + "." + body
防重放依赖 Request-Time ±60 秒;请勿在签名串中插入空格或换行。
用于签名的 body 必须与实际发送的原始 JSON 请求体完全一致,包括字段顺序、嵌套对象顺序、字段名大小写以及空值表现形式。签名完成后,请勿再次调整 JSON 字段顺序或重新序列化请求体。
计算方式:
signature = hex(hmac-sha256(signatureString, secret))
认证头:
Authorization: Basic base64(mid:signature)
mid即商户ID,请登录商户后台获取
secret即商户开放接口密钥,请登录商户后台获取
建议先按最终发送顺序生成 JSON 字符串,再同时复用于签名计算与 HTTP 请求发送,以避免因 JSON 重排导致验签失败。
将查询参数 按 key 升序排序,拼接成: key=value,以 & 连接
签名字符串: signatureString = Request-Time + "." + queryParams
接口: POST https://api.antspay.vip/api/mcht/payment/submit
请求格式: 请求体必须为 application/json,并且参与签名的 JSON 字符串必须与实际发送的请求体内容及字段顺序完全一致。
Content-Type: application/json
Authorization: Basic <base64(mid:signature)>
Request-Time: <13 位毫秒时间戳>
| 字段 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| amount | number | 是 | 订单金额,一律为 PKR,数值类型保留两位小数;不是字符串。即使 pm=USDT_TRC20 也传 PKR,平台按收款汇率折成应付 USDT。 | 100.00 |
| pm | string | 是 | 支付类型:JAZZCASH, JC直连EASYPAISA, EP直连USDT_TRC20, USDT-TRC20(代收) | JAZZCASH |
| ref | string | 是 | 商户订单号,必须唯一 | UNIQUE_ORDER_ID_01 |
| payer.email | string | 是 | 付款人邮箱 | [email protected] |
| payer.name | string | 是 | 付款人姓名 | abc |
| payer.phone | string | 是 | 付款人电话 | 03012933333 |
| redirect | string | 否 | 支付完成后跳转地址 | https://example.com |
| callbackUrl | string | 是 | 异步通知回调地址 | https://example.com |
{
"amount": 100.00,
"pm": "JAZZCASH",
"ref": "UNIQUE_ORDER_ID_01",
"payer": {
"email": "[email protected]",
"name": "abc",
"phone": "03012933333"
},
"redirect": "https://example.com",
"callbackUrl": "https://example.com"
}
import time, hmac, hashlib, base64, json, requests
mid = "c70f1719017e290354017d1c101d0cc288d06ceb"
secret = "ME2VRe6tWH6weK/NAUJA5lhmewHkB23rA6CdWlrHrAs+/E/E3j3eG3io/GCHbQKqMMurfTNrBj/R4Yy84UziM5YJheiKFKbsWQc5xRoE46E3/0EYy4ZjbK9jhwGyHS+C"
url = "https://api.antspay.vip/api/mcht/payment/submit"
body = {
"amount": 220.00,
"pm": "JAZZCASH",
"ref": "ORDER_SUBMIT_013",
"payer": {
"email": "[email protected]",
"name": "abc",
"phone": "03012933333"
},
"redirect": "https://example.com",
"callbackUrl": "https://example.com"
}
request_time = str(int(time.time() * 1000))
body_str = json.dumps(body, ensure_ascii=False, separators=(',', ':'))
signature_str = f"{request_time}.{body_str}"
signature_hex = hmac.new(secret.encode(), signature_str.encode(), hashlib.sha256).hexdigest()
auth_header = "Basic " + base64.b64encode(f"{mid}:{signature_hex}".encode()).decode()
headers = {
"Content-Type": "application/json",
"Authorization": auth_header,
"Request-Time": request_time
}
resp = requests.post(url, headers=headers, data=body_str, timeout=30)
print("Status:", resp.status_code)
print("Response:", resp.text)
{
"success": true,
"code": 200,
"data": {
"amount": "220",
"pm": "JAZZCASH",
"ref": "ORDER_SUBMIT_013",
"redirect": "https://example.com",
"currency": "PKR",
"txid": "202509081321A6DI4P0V",
"fee": "2.2",
"netAmount": "217.8",
"createTime": 1757308907315,
"payer": {
"name": "abc",
"phone": "03012933333",
"email": "[email protected]"
},
"paymentUrl": "https://antspage.vip/payment/x3v83q7d",
"callbackUrl": "https://example.com"
}
}
当 pm 为 USDT_TRC20 时,data 在上述字段之外额外返回:
| 字段 | 类型 | 说明 |
|---|---|---|
| usdt | string | 应付 USDT 金额(含认款微调)。付款人必须按此金额原样转账,不得改末位。 |
| usdtAddress | string | 平台统一 TRC20 收款地址(T 开头 34 位)。全站共用,靠应付金额认款。 |
| usdtRate | string | 建单时快照的收款汇率:1 USDT = 该值 PKR。 |
{
"amount": 200.00,
"pm": "USDT_TRC20",
"ref": "USDT_ORDER_001",
"payer": {
"email": "[email protected]",
"name": "abc",
"phone": "03012933333"
},
"redirect": "https://example.com",
"callbackUrl": "https://example.com"
}
{
"success": true,
"code": 200,
"data": {
"amount": "200.00",
"pm": "USDT_TRC20",
"ref": "USDT_ORDER_001",
"redirect": "https://example.com",
"currency": "PKR",
"txid": "P20261011000232446033",
"fee": "2.00",
"netAmount": "198.00",
"createTime": 1760112000000,
"payer": {
"name": "abc",
"phone": "03012933333",
"email": "[email protected]"
},
"paymentUrl": "https://antspage.vip/payment/x3v83q7d",
"callbackUrl": "https://example.com",
"usdt": "0.73",
"usdtAddress": "TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf",
"usdtRate": "280.00"
}
}
paymentUrl 仍指向本平台收银台:展示应付 USDT、TRC20 地址、剩余支付倒计时。付款人在钱包内打开即可,无需再填 JazzCash/EasyPaisa 账号。
接口:GET https://api.antspay.vip/api/mcht/payment/retrieve?txid=<平台订单号>GET https://api.antspay.vip/api/mcht/payment/retrieve?ref=<商户订单号>
说明: 查询参数 txid 与 ref 至少传一个;若两者同时传入,系统仅按 txid 查询并忽略 ref。
Authorization: Basic <base64(mid:signature)>
Request-Time: <13 位毫秒时间戳>
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| txid | string | 条件必填 | 平台订单号(与 ref 至少传一个;若同时传入,优先按 txid 查询) |
| ref | string | 条件必填 | 商户订单号(与 txid 至少传一个;当 txid 存在时此参数被忽略) |
{
"success": true,
"code": 200,
"message": "OK",
"data": {
"txid": "202409061809AE4IK4EZ",
"amount": "100.00",
"fee": "1.00",
"netAmount": "99.00",
"type": "PAYMENT",
"ref": "234d5678d345d5d6",
"currency": "PKR",
"status": "PAID",
"paidTime": 1725617395000,
"createTime": 1725617356000,
"completeTime": 1725617395000,
"callbackUrl": "",
"redirectUrl": ""
}
}
USDT_TRC20 订单查询会额外返回 pm、usdt、usdtAddress、usdtRate(含义与下单响应相同)。
{
"success": true,
"code": 200,
"message": "OK",
"data": {
"txid": "P20261011000232446033",
"amount": "200.00",
"fee": "2.00",
"netAmount": "198.00",
"type": "PAYMENT",
"ref": "USDT_ORDER_001",
"currency": "PKR",
"status": "PAYING",
"createTime": 1760112000000,
"callbackUrl": "https://example.com",
"redirectUrl": "https://example.com",
"pm": "USDT_TRC20",
"usdt": "0.73",
"usdtAddress": "TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf",
"usdtRate": "280.00"
}
}
{
"success": false,
"code": 400,
"message": "txid or ref is required"
}
接口: POST <callbackUrl>
Content-Type: application/json
Request-Time: 1761036368112
Signature: a99a3414027ac065dc555c9196c865d0b8b5698ec1e
Accept: */*
Content-Length: 296
Host: *.*.*.*
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.14 (Java/1.8)
Accept-Encoding: gzip,deflate
回调验签规则与请求签名一致,直接使用收到的原始 JSON 请求体参与验签。
签名字符串: Request-Time + "." + body
signature = hex(hmac-sha256(signatureString, secret))
验签步骤:读取 Request-Time、Signature 和原始 body,按规则计算后与 Signature 比对;一致即通过。
Request-Time = 1761036368112
body = {"amount":"100.00","callbackUrl":"https://yourcallbackurl.com/callbackBody","createTime":1757914023000,"currency":"PKR","fee":"1.50","netAmount":"98.50","ref":"REF000778T1757914022506R9cTvO","status":"FAILED","txid":"2025091513276E4I443MPL5","invoiceNo":"265163123456","type":"PAYMENT"}
signatureString = 1761036368112.{"amount":"100.00","callbackUrl":"https://yourcallbackurl.com/callbackBody","createTime":1757914023000,"currency":"PKR","fee":"1.50","netAmount":"98.50","ref":"REF000778T1757914022506R9cTvO","status":"FAILED","txid":"2025091513276E4I443MPL5","invoiceNo":"265163123456","type":"PAYMENT"}
import hmac, hashlib
request_time = request.headers["Request-Time"]
signature = request.headers["Signature"]
raw_body = request.get_data(as_text=True)
signature_str = f"{request_time}.{raw_body}"
expected_signature = hmac.new(
secret.encode(),
signature_str.encode(),
hashlib.sha256,
).hexdigest()
if expected_signature != signature:
raise ValueError("invalid callback signature")
| 字段 | 类型 | 说明 |
|---|---|---|
| amount | string | 金额 |
| callbackUrl | string | 异步通知回调地址 |
| createTime | number | 创建时间(13 位毫秒时间戳) |
| currency | string | 币种(如:PKR) |
| fee | string | 手续费 |
| netAmount | string | 净金额 |
| ref | string | 商户订单号 |
| status | string | 订单状态(PAYING, PAID, COMPLETE, FAILED) |
| txid | string | 平台订单号 |
| invoiceNo | string | 渠道交易号(第三方参考号) |
| type | string | 交易类型(PAYMENT) |
{
"amount": "100.00",
"callbackUrl": "https://yourcallbackurl.com/callbackBody",
"createTime": 1757914023000,
"currency": "PKR",
"fee": "1.50",
"netAmount": "98.50",
"ref": "REF000778T1757914022506R9cTvO",
"status": "FAILED",
"txid": "2025091513276E4I443MPL5",
"invoiceNo": "265163123456",
"type": "PAYMENT"
}
USDT_TRC20 回调的 amount / fee / netAmount / currency 均为 PKR。链上 TxHash 写入 invoiceNo。成功后把 netAmount 计入商户 PKR 可用余额(与 JazzCash/EasyPaisa 相同)。
pm=USDT_TRC20,amount 仍传 PKR;payer 三个字段仍必填。usdt 为准,不要自行按汇率重算后让用户转账。usdtAddress 转入与 usdt 完全一致的金额。少付、多付、改末位、过期后到账均不会自动入账。COMPLETE,把订单 netAmount(PKR 净额)计入商户 PKR 可用余额。用 GET /api/mcht/wallet?currency=PKR 查询。platform usdt trc20 address not configured。接口: POST https://api.antspay.vip/api/mcht/disbursement/create
请求格式: 请求体必须为 application/json,并且参与签名的 JSON 字符串必须与实际发送的请求体内容及字段顺序完全一致。
Content-Type: application/json
Authorization: Basic <base64(mid:signature)>
Request-Time: <13 位毫秒时间戳>
| 字段 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| amount | number | 是 | 一律为 PKR,数值类型保留两位小数。即使 type=USDT_TRC20 也传 PKR,平台按代付汇率折成链上 USDT。 | 100.00 |
| type | string | 是 | 支付类型:JAZZCASH、EASYPAISA、USDT_TRC20 | JAZZCASH |
| bankAccountName | string | 是 | 收款人姓名 | PATANGRAO |
| bankAccountNumber | string | 是 | 钱包代付固定 0312345678;USDT_TRC20 必须填收款 TRC20 地址(T 开头 34 位) | 0312345678 |
| bankCode | string | 是 | 固定值 ABCD(USDT 代付同样传此值) | ABCD |
| phone | string | 是 | 钱包代付:03 开头手机号。USDT 代付仍必填,可填占位号 | 03706906192 |
| string | 是 | 持卡人邮箱 | [email protected] | |
| idNumber | string | 是 | 固定值 | 4210112345671 |
| ref | string | 是 | 商户订单号,必须唯一 | WITHDRAW_TEST_004 |
| callbackUrl | string | 是 | 异步通知回调地址 | https://example.com |
说明: JazzCash / EasyPaisa 代付仅支持钱包出款,不支持银行卡出款。字段 bankAccountNumber 固定传 0312345678;实际钱包账号请填写在 phone 字段中;bankCode 固定传 ABCD。
USDT_TRC20 代付规则见 4.4。下单成功会冻结商户 PKR(本金+手续费);链上尚未确认时状态为 PAYING,成功为 PAID。
{
"amount": 100.00,
"type": "JAZZCASH",
"bankAccountName": "PATANGRAO",
"bankAccountNumber": "0312345678",
"bankCode": "ABCD",
"phone": "03706906192",
"email": "[email protected]",
"idNumber": "4210112345671",
"ref": "WITHDRAW_TEST_004",
"callbackUrl": "https://example.com"
}
{
"amount": 600.00,
"type": "USDT_TRC20",
"bankAccountName": "Receiver",
"bankAccountNumber": "TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf",
"bankCode": "ABCD",
"phone": "03001234567",
"email": "[email protected]",
"idNumber": "4210112345671",
"ref": "USDT_PAYOUT_001",
"callbackUrl": "https://example.com/webhooks/payout"
}
import time, hmac, hashlib, base64, json, requests
mid = "c70f1719017e290354017d1c101d0cc288d06ceb"
secret = "ME2VRe6tWH6weK/NAUJA5lhmewHkB23rA6CdWlrHrAs+/E/E3j3eG3io/GCHbQKqMMurfTNrBj/R4Yy84UziM5YJheiKFKbsWQc5xRoE46E3/0EYy4ZjbK9jhwGyHS+C"
url = "https://api.antspay.vip/api/mcht/disbursement/create"
body = {
"amount": 100.00,
"type": "JAZZCASH",
"bankAccountName": "PATANGRAO",
"bankAccountNumber": "0312345678",
"bankCode": "ABCD",
"phone": "03706906192",
"email": "[email protected]",
"idNumber": "4210112345671",
"ref": "WITHDRAW_TEST_004",
"callbackUrl": "https://example.com"
}
request_time = str(int(time.time() * 1000))
body_str = json.dumps(body, ensure_ascii=False, separators=(',', ':'))
signature_str = f"{request_time}.{body_str}"
signature_hex = hmac.new(secret.encode(), signature_str.encode(), hashlib.sha256).hexdigest()
auth_header = "Basic " + base64.b64encode(f"{mid}:{signature_hex}".encode()).decode()
headers = {
"Content-Type": "application/json",
"Authorization": auth_header,
"Request-Time": request_time
}
resp = requests.post(url, headers=headers, data=body_str, timeout=30)
print("Status:", resp.status_code)
print("Response:", resp.text)
{
"success": true,
"code": 200,
"data": {
"amount": "100",
"bankAccountName": "PATANGRAO",
"bankAccountNumber": "0312345678",
"bankCode": "ABCD",
"ref": "WITHDRAW_TEST_004",
"currency": "PKR",
"callbackUrl": "https://example.com",
"email": "[email protected]",
"phone": "03706906192",
"type": "JAZZCASH",
"idNumber": "4210112345671",
"txid": "PO202512221310089I7GRK",
"netAmount": "100",
"fee": "0",
"createTime": 1766391032341,
"invoiceNo": ""
}
}
type=USDT_TRC20 时,data 额外包含 usdt(拟转出 USDT)、usdtAddress(收款 TRC20)、usdtRate(建单时代付汇率:1 USDT = 该值 PKR)。若下单当次已链上成功,invoiceNo 为 64 位交易哈希;否则为空,待 PAID 后再查。
接口:GET https://api.antspay.vip/api/mcht/disbursement/retrieve?txid=<平台订单号>GET https://api.antspay.vip/api/mcht/disbursement/retrieve?ref=<商户订单号>
说明: 查询参数 txid 与 ref 至少传一个;若两者同时传入,系统仅按 txid 查询并忽略 ref。
Authorization: Basic <base64(mid:signature)>
Request-Time: <13 位毫秒时间戳>
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| txid | string | 条件必填 | 平台订单号(与 ref 至少传一个;若同时传入,优先按 txid 查询) |
| ref | string | 条件必填 | 商户订单号(与 txid 至少传一个;当 txid 存在时此参数被忽略) |
{
"success": true,
"code": 200,
"message": "OK",
"data": {
"txid": "PO202408231658A87IKRYL",
"amount": "100.00",
"fee": "1.00",
"netAmount": "99.00",
"type": "DISBURSEMENT",
"ref": "234d5678d345d5d6",
"currency": "PKR",
"status": "PAID",
"paidTime": 1725617395000,
"createTime": 1725617356000,
"callbackUrl": "",
"redirectUrl": "",
"invoiceNo": ""
}
}
{
"success": true,
"code": 200,
"message": "OK",
"data": {
"txid": "PO2026101116046656007",
"amount": "600.00",
"fee": "500.00",
"netAmount": "600.00",
"type": "DISBURSEMENT",
"ref": "USDT_PAYOUT_001",
"currency": "PKR",
"status": "PAID",
"paidTime": 1760165100000,
"createTime": 1760165000000,
"callbackUrl": "https://example.com/webhooks/payout",
"invoiceNo": "e6226323b7caedcb8af1a3c70e0123456789abcdef0123456789abcdef0123",
"usdt": "2.00",
"usdtAddress": "TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf",
"usdtRate": "280.00"
}
}
invoiceNo:JazzCash/EasyPaisa 为上游渠道单号;USDT_TRC20 成功后为链上 TxHash(64 位十六进制),可到 Tronscan 查询。
{
"success": false,
"code": 400,
"message": "txid or ref is required"
}
接口: POST <callbackUrl>
Content-Type: application/json
Request-Time: 1761036368112
Signature: a99a3414027ac065dc555c9196c865d0b8b5698ec1e
Accept: */*
Content-Length: 296
Host: *.*.*.*
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.14 (Java/1.8)
Accept-Encoding: gzip,deflate
回调验签规则与请求签名一致,直接使用收到的原始 JSON 请求体参与验签。
签名字符串: Request-Time + "." + body
signature = hex(hmac-sha256(signatureString, secret))
验签步骤:读取 Request-Time、Signature 和原始 body,按规则计算后与 Signature 比对;一致即通过。
Request-Time = 1761036368112
body = {"amount":"521.30","callbackUrl":"https://yourcallbackurl.app/webhooks/payout","createTime":1757910583000,"currency":"PKR","fee":"0.00","netAmount":"521.30","paidTime":1757910583000,"ref":"REF460128f04955612de","status":"PAID","txid":"PO202509151229664IDW3M83","invoiceNo":"ref123456790","type":"DISBURSEMENT"}
signatureString = 1761036368112.{"amount":"521.30","callbackUrl":"https://yourcallbackurl.app/webhooks/payout","createTime":1757910583000,"currency":"PKR","fee":"0.00","netAmount":"521.30","paidTime":1757910583000,"ref":"REF460128f04955612de","status":"PAID","txid":"PO202509151229664IDW3M83","invoiceNo":"ref123456790","type":"DISBURSEMENT"}
import hmac, hashlib
request_time = request.headers["Request-Time"]
signature = request.headers["Signature"]
raw_body = request.get_data(as_text=True)
signature_str = f"{request_time}.{raw_body}"
expected_signature = hmac.new(
secret.encode(),
signature_str.encode(),
hashlib.sha256,
).hexdigest()
if expected_signature != signature:
raise ValueError("invalid callback signature")
| 字段 | 类型 | 说明 |
|---|---|---|
| amount | string | 金额 |
| callbackUrl | string | 异步通知回调地址 |
| createTime | number | 创建时间(13 位毫秒时间戳) |
| currency | string | 币种(如:PKR) |
| fee | string | 手续费 |
| netAmount | string | 净金额 |
| paidTime | number | 支付时间(13 位毫秒时间戳) |
| ref | string | 商户订单号 |
| status | string | 订单状态(PAYING, PAID, FAILED) |
| txid | string | 平台订单号 |
| invoiceNo | string | 渠道交易号。JazzCash/EasyPaisa 为上游单号;USDT_TRC20 为链上 TxHash |
| type | string | 交易类型(DISBURSEMENT) |
{
"amount": "521.30",
"callbackUrl": "https://yourcallbackurl.app/webhooks/payout",
"createTime": 1757910583000,
"currency": "PKR",
"fee": "0.00",
"netAmount": "521.30",
"paidTime": 1757910583000,
"ref": "REF460128f04955612de",
"status": "PAID",
"txid": "PO202509151229664IDW3M83",
"invoiceNo": "ref123456790",
"type": "DISBURSEMENT"
}
USDT_TRC20 成功回调时 invoiceNo 为链上交易哈希,amount / fee / netAmount / currency 仍为 PKR。status=PAID 表示链上已转出并已从商户冻结余额出账。
type=USDT_TRC20,amount 仍传 PKR(两位小数)。bankAccountNumber 必须是收款人 TRC20 地址(T 开头 34 位,Base58)。bankCode 仍传 ABCD;phone / email / idNumber / bankAccountName 仍必填(可用占位值)。usdt 为拟转出数量,usdtRate 为建单快照。PAID 时从冻结出账;FAILED 时解冻退回可用。PAYING(链上未完成)。请以查单或回调为准,不要把 PAYING 当成失败、不要立刻用同一 ref 重试出款(ref 幂等会返回原单)。链上成功后变为 PAID 并回调。PAYING,平台补足后自动继续,无需商户重新下单。invoiceNo(查单、回调、商户后台「链上哈希」列相同)。可用 Tronscan 核对。USDT_TRC20 代付;通道须为真实 TRC20(沙箱不会打链)。接口: GET https://api.antspay.vip/api/mcht/wallet?currency=PKR 或 GET https://api.antspay.vip/api/mcht/wallet?currency=USDT
Authorization: Basic <base64(mid:signature)>
Request-Time: <13 位毫秒时间戳>
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| currency | string | 是 | 币种:PKR(钱包代收/代付)或 USDT(USDT-TRC20 代收)。一次查询一种币种。 |
import time, hmac, hashlib, base64, requests
mid = "c70f1719017e290354017d1c101d0cc288d06ceb"
secret = "ME2VRe6tWH6weK/NAUJA5lhmewHkB23rA6CdWlrHrAs+/E/E3j3eG3io/GCHbQKqMMurfTNrBj/R4Yy84UziM5YJheiKFKbsWQc5xRoE46E3/0EYy4ZjbK9jhwGyHS+C"
url = "https://api.antspay.vip/api/mcht/wallet"
params = {"currency": "PKR"}
request_time = str(int(time.time() * 1000))
query_str = "&".join([f"{k}={v}" for k, v in sorted(params.items())])
signature_str = f"{request_time}.{query_str}"
signature_hex = hmac.new(secret.encode(), signature_str.encode(), hashlib.sha256).hexdigest()
auth_header = "Basic " + base64.b64encode(f"{mid}:{signature_hex}".encode()).decode()
headers = {
"Authorization": auth_header,
"Request-Time": request_time
}
resp = requests.get(url, headers=headers, params=params, timeout=30)
print("Status:", resp.status_code)
print("Response:", resp.text)
{
"success": true,
"code": 200,
"data": [
{
"currency": "PKR",
"balance": "1000",
"freeze": "0",
"total": "1000"
}
]
}
{
"success": true,
"code": 200,
"data": [
{
"currency": "USDT",
"balance": "12.34",
"freeze": "0.00",
"total": "12.34"
}
]
}
| 状态 | 说明 |
|---|---|
| PAYING | 订单已创建,正在处理中,等待付款人完成支付 |
| PAID | 付款人已完成支付,资金已到达平台账户 |
| COMPLETE | 订单已完成,资金已结算至商户账户 |
| FAILED | 订单失败,可能由于付款人未支付、支付超时或异常等原因 |
| 状态 | 说明 |
|---|---|
| PAYING | 订单已受理,本金与手续费已冻结。钱包代付等待通道;USDT_TRC20 等待链上转出。请轮询查单或等回调,不要当作失败 |
| PAID | 已打款成功。USDT 代付表示链上已转出,invoiceNo 为 TxHash |
| FAILED | 失败终态,冻结已退回。商户余额不足、地址非法等会直接报错而不进入此态 |
ref 必须唯一,可用毫秒时间戳拼接生成。Request-Time 使用 13 位毫秒时间戳,允许与平台时钟偏差 ±60 秒,并与签名保持一致;请同步 NTP。callbackUrl 必须公网可访问,平台会在交易状态变更时异步通知。secret 仅在服务端保存,严禁下发至前端或客户端。usdt 原样转 TRC20 USDT。少付/多付/过期不自动入账。成功后把订单净额计入 PKR 可用余额。bankAccountNumber 填收款 TRC20。PAYING 表示已冻账、链上处理中;成功为 PAID,invoiceNo 为链上哈希。同一 ref 请勿在 PAYING 时重复创建。<商户后台签发的 mid><商户后台签发的 secret,仅服务端保存>https://api.antspay.vip/api/mcht/payment/submithttps://api.antspay.vip/api/mcht/payment/retrieve?txid=<平台订单号> 或 https://api.antspay.vip/api/mcht/payment/retrieve?ref=<商户订单号>(至少传一个;同时传时仅按 txid 查询)https://api.antspay.vip/api/mcht/disbursement/createhttps://api.antspay.vip/api/mcht/disbursement/retrieve?txid=<平台订单号> 或 https://api.antspay.vip/api/mcht/disbursement/retrieve?ref=<商户订单号>(至少传一个;同时传时仅按 txid 查询)https://api.antspay.vip/api/mcht/wallet?currency=PKR 或 https://api.antspay.vip/api/mcht/wallet?currency=USDT