回調通知
入金到帳、出金處理完成(成功或拒絕)後,平台會向你的回調地址發一個 POST 請求。
回調地址
| 訂單 | 用哪個地址 |
|---|---|
| 入金 | 下單時傳的 callbackUrl;沒傳就用商戶後台的「入金回調地址」 |
| 出金 | 下單時傳的 callbackUrl;沒傳就用商戶後台的「出金回調地址」 |
回調地址必須是公網可以訪問的 https 地址。只有通過開放介面建立的出金訂單才會回調;在商戶後台手動提交的出金不回調。
請求格式
http
POST /你的回調路徑 HTTP/1.1
Content-Type: application/json
{"encryptedData":"Base64 字串"}encryptedData 是用你的公鑰加密的 JSON(PKCS#1 v1.5),用你的私鑰解密。
入金回調內容
json
{
"OrderNo": "PI1845290017342758912",
"MerchantNo": "你的商戶號",
"MerchantOrderNo": "A20261013001",
"PayTime": "2026-10-13T12:00:00",
"OrderState": 6,
"Quantity": 13.7,
"FiatCurrency": 100.0
}| 欄位 | 類型 | 說明 |
|---|---|---|
OrderNo | string | 平台訂單號 |
MerchantNo | string | 商戶號 |
MerchantOrderNo | string | 你的商戶訂單號 |
PayTime | string | 客戶付款時間,UTC+8,格式 yyyy-MM-ddTHH:mm:ss |
OrderState | int | 訂單狀態,回調時固定是 6(已釋放:平台已確認收到錢,USDT 已記入你的餘額) |
Quantity | number | 這筆訂單摺合的 USDT 數量(扣手續費前) |
FiatCurrency | number | 法幣金額(就是下單金額) |
出金回調內容
json
{
"OrderNo": "PO1845290017342758913",
"MerchantNo": "你的商戶號",
"MerchantOrderNo": "PO20261013001",
"PayTime": "2026-10-13T12:30:00",
"state": 4
}| 欄位 | 類型 | 說明 |
|---|---|---|
OrderNo | string | 平台出款單號 |
MerchantNo | string | 商戶號 |
MerchantOrderNo | string | 你的商戶訂單號 |
PayTime | string | null | 處理完成時間,UTC+8 |
state | int | 4 處理成功;5 拒絕(凍結的 USDT 已退回) |
欄位名大小寫
回調內容的欄位名是大寫開頭(OrderNo),出金的狀態欄位是小寫的 state,和介面回傳的小駝峰不一樣。建議解析時不區分大小寫。回調內容裡的數字沒有四捨五入,以查詢訂單回傳的為準。
你要回傳什麼
處理成功後,回傳 HTTP 2xx,內容為下面任意一種:
- 純文本
success(或ok,不區分大小寫,前後不能有空格或換行) - JSON
{"code":200}
其他任何回傳(包括超時、非 2xx、其他內容)都算失敗,平台會重發。
重發規則
第一次回調在訂單完成後 30 秒內發出。失敗後按下面的間隔重發,最多一共 5 次:
| 第幾次 | 距離上一次 |
|---|---|
| 1 | 訂單完成後 30 秒內 |
| 2 | 3 分鐘 |
| 3 | 9 分鐘 |
| 4 | 27 分鐘 |
| 5 | 81 分鐘 |
5 次都失敗就不再回調,訂單狀態可以在商戶後台檢視,或用查詢訂單主動查。回調失敗不代表付款失敗。
必須做的核對
回調沒有簽名
回調只是用你的公鑰加密,沒有簽名。任何拿到你公鑰的人都能偽造一條「已到帳」的回調。所以不能只看回調內容就給客戶入帳。
收到回調後請按這個順序處理(範例程式碼都已實現):
- 解密,解不開直接回傳失敗。
- 核對商戶號是你自己的。
- 去重:同一個
OrderNo+ 同一個狀態只處理一次。平台會重發,你的處理也可能在回傳success之前中斷。建議在資料庫裡給「平台訂單號 + 狀態」建唯一索引,和入帳放在同一個事務裡。 - 複核:用
MerchantOrderNo調查詢訂單,以介面回傳為準:- 入金:狀態必須是
6(已釋放)或3(成功),金額要等於回調裡的FiatCurrency,也要等於你自己系統裡這筆訂單的金額; - 出金:狀態要和回調的
state一樣,金額要等於你自己系統裡的出款金額。
- 入金:狀態必須是
- 都通過後再入帳 / 更新訂單,最後回傳
success。
另外建議:回調介面限制請求體大小(幾 KB 足夠)、只接受 POST、日誌裡不要記錄完整的請求內容。