平台服務簡介
本文件旨在幫助您快速了解平台的代收代付服務,包含核心概念說明與完整的資金流程圖。
什麼是代收代付服務?
代收代付是一種資金管理服務,讓商戶可以:
- 代收:接收客戶的付款(例如:客戶購買商品、儲值等)
- 代付:向客戶或供應商付款(例如:提現、退款、結算等)
平台為您解決什麼問題?
| 傳統方式的困擾 | 平台解決方案 |
|---|---|
| 需要自行管理區塊鏈錢包 | 平台自動生成和管理錢包 |
| 難以追蹤每筆交易 | 即時通知 + 完整交易紀錄 |
| 資金分散難以管理 | 一鍵歸集,資金集中管理 |
| 區塊鏈操作複雜 | 簡單 API,輕鬆串接 |
核心概念
用戶錢包
定義:平台為每位終端客戶自動生成的專屬收款地址。
用途:接收該客戶的所有付款。
簡單理解:就像為每位客戶開設一個「專屬收款帳戶」,客戶付款時轉入這個地址,平台就知道是哪位客戶付的款。
特點:
- 每位客戶一個獨立地址
- 自動對帳,不會混淆
- 資金安全隔離
商戶金庫
定義:商戶的資金集中管理帳戶。
用途:
- 統一管理所有資金
- 執行對外付款(代付)
- 支付區塊鏈交易手續費
簡單理解:就像公司的「主帳戶」或「金庫」,所有資金最終都會集中到這裡,方便統一調度。
特點:
- 每個商戶一個金庫
- 可查看完整資產明細
- 支援多種幣種
代收流程
當客戶要付款給商戶時,資金的流動方式如下:
flowchart TD
A["1 客戶發起付款"] --> B["2 轉帳到專屬的用戶錢包地址"]
B --> C["3 區塊鏈網路確認交易"]
C --> D["4 平台偵測到入帳"]
D --> E["5 系統通知商戶:收款成功"]
E --> F["6 資金暫存於用戶錢包,等待歸集"]
style A fill:#e1f5fe
style F fill:#c8e6c9
流程說明
| 步驟 | 說明 |
|---|---|
| 1 | 客戶決定付款(購買商品、儲值等) |
| 2 | 客戶將資金轉入平台提供的專屬收款地址 |
| 3 | 區塊鏈網路處理並確認這筆交易(通常幾秒到幾分鐘) |
| 4 | 平台持續監控區塊鏈,偵測到入帳後立即記錄 |
| 5 | 透過回調通知商戶系統,告知收款成功 |
| 6 | 資金暫時存放在用戶錢包中,商戶可隨時發起歸集 |
歸集流程
歸集是將分散在各用戶錢包的資金,統一收回到商戶金庫的過程。
flowchart TD
A["1 商戶發起歸集"] --> B{"2 檢查用戶錢包餘額"}
B -->|"餘額 >= 歸集門檻"| C["3 從金庫補充燃料費到用戶錢包"]
B -->|"餘額 < 歸集門檻"| H["跳過此用戶"]
C --> D["4 從用戶錢包轉帳到商戶金庫"]
D --> E["5 區塊鏈網路確認交易"]
E --> F["6 資金進入商戶金庫"]
F --> G["7 歸集完成,資金可自由運用"]
style A fill:#e1f5fe
style G fill:#c8e6c9
style H fill:#ffecb3
流程說明
| 步驟 | 說明 |
|---|---|
| 1 | 商戶在後台發起「一鍵歸集」或透過 API 觸發 |
| 2 | 系統檢查每個用戶錢包的餘額是否達到歸集門檻 |
| 3 | 對於符合條件的錢包,系統自動從金庫補充燃料費 |
| 4 | 使用補充的燃料費,將資金從用戶錢包轉到金庫 |
| 5 | 區塊鏈網路確認這筆轉帳交易 |
| 6 | 交易成功後,資金正式進入商戶金庫 |
| 7 | 商戶可以自由使用金庫中的資金(代付、提現等) |
代付流程
當商戶需要付款給客戶或外部地址時:
flowchart TD
A["1 商戶發起代付請求"] --> B["2 指定收款地址和金額"]
B --> C{"3 檢查金庫餘額"}
C -->|"餘額足夠"| D["4 凍結對應金額"]
C -->|"餘額不足"| H["代付失敗:餘額不足"]
D --> E["5 從商戶金庫轉出"]
E --> F["6 區塊鏈網路確認交易"]
F --> G["7 通知商戶:代付成功"]
style A fill:#e1f5fe
style G fill:#c8e6c9
style H fill:#ffcdd2
流程說明
| 步驟 | 說明 |
|---|---|
| 1 | 商戶透過後台或 API 發起代付請求 |
| 2 | 指定要付款的目標地址和金額 |
| 3 | 系統檢查商戶金庫是否有足夠餘額 |
| 4 | 餘額足夠時,先凍結這筆金額(避免重複使用) |
| 5 | 從商戶金庫發起區塊鏈轉帳 |
| 6 | 區塊鏈網路確認交易 |
| 7 | 交易成功後通知商戶,代付完成 |
整體資金流向
以下是代收代付服務的完整資金流向圖:
flowchart LR
subgraph 客戶
Customer["客戶"]
end
subgraph 平台
UW["用戶錢包
(專屬收款地址)"] Vault["商戶金庫
(資金集中管理)"] end subgraph 外部 External["外部收款方
(提現/結算對象)"] end Customer -->|"① 代收
客戶付款"| UW UW -->|"② 歸集
資金回收"| Vault Vault -->|"③ 代付
對外付款"| External Vault -.->|"燃料費補充"| UW style Customer fill:#e3f2fd style UW fill:#fff3e0 style Vault fill:#e8f5e9 style External fill:#fce4ec
(專屬收款地址)"] Vault["商戶金庫
(資金集中管理)"] end subgraph 外部 External["外部收款方
(提現/結算對象)"] end Customer -->|"① 代收
客戶付款"| UW UW -->|"② 歸集
資金回收"| Vault Vault -->|"③ 代付
對外付款"| External Vault -.->|"燃料費補充"| UW style Customer fill:#e3f2fd style UW fill:#fff3e0 style Vault fill:#e8f5e9 style External fill:#fce4ec
常見問題
Q1: 為什麼資金不直接進入商戶金庫?
A: 為每位客戶分配專屬收款地址有以下好處:
- 自動對帳:透過地址即可識別是哪位客戶付款
- 隱私保護:客戶之間不會看到彼此的交易
- 彈性管理:可針對不同客戶設定不同的歸集策略
Q: 歸集與燃料費相關
詳細請參考核心概念中的燃料費說明。
Developer Documentation
API 參考與技術串接文件
簡介 & 串接須知
歡迎使用 Coin API v2。本 API 提供區塊鏈錢包管理、USDT 及多種代幣的充值與提現功能。
串接須知:
- 請先聯繫客服取得 API Host 位置。
- 請於後台「商戶管理/金鑰管理」生成 商戶公鑰 (X-Api-Key)。
- 所有請求皆須包含簽名驗證。
參數簽名 (Authentication)
為確保資料安全,所有 API 請求 (Header) 必須包含 X-Api-Sign。
加密步驟
- 將該次 Request 所有參數 (除了 sign) 依照鍵值 (Key) 由小到大排序 (ksort)。
- 將排序好的參數轉化成 JSON 字串 (去除斜線、不編碼 Unicode)。
- 使用 OpenSSL 將 JSON 字串做 AES-256-ECB 加密 (使用私鑰)。
- 將加密後的結果轉型成 Base64。
- 最後將 Base64 字串使用 SHA256 算法做散列運算,取得最終 Sign。
PHP 範例代碼
/**
* Signature.php
* @param array $parameter 該次 request 帶入的參數
* @return string
*/
public function encrypt(array $parameter): string
{
// 1. 將參數依照 Key 由小到大排序
ksort($parameter);
// 2. 轉化成 JSON (去除斜線, 不編碼 Unicode)
$json = json_encode($parameter, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
// 3. AES-256-ECB 加密
$crypt = openssl_encrypt($json, $this->cipher, $this->privateKey, OPENSSL_RAW_DATA);
// 4. 轉型成 Base64
$crypt = base64_encode($crypt);
// 5. SHA256 散列
$crypt = hash('sha256', $crypt);
return $crypt;
}
取得代幣資訊
GET /api/v1/coin
Request Header
| 參數 | 必填 | 描述 | 範例 |
|---|---|---|---|
| X-Api-Sign | 是 | 參數簽名 | 9d60c87... |
| X-Api-Key | 是 | 商戶公鑰 | WOEk6ht... |
Response
{
"code": 200,
"data": [
{
"name": "USDT_TRC20",
"title": "Tether",
"symbol": "USDT",
"chain": "TRON",
"fee": 0
}
]
}
取得錢包地址
查詢特定用戶已存在的錢包地址。
GET /api/v1/wallet
Request Body
| 參數 | 必填 | 描述 | 備註 |
|---|---|---|---|
| chains | 是 | 所屬主網 (Array) | 目前僅支援 ["TRON"] |
| identity | 是* | 平台用戶識別 ID | identity 與 address 擇一必填 |
| address | 是* | 用戶地址 | identity 與 address 擇一必填 |
Response
{
"code": 200,
"data": [
{
"identity": "huge",
"chain": "TRON",
"address": "TYdsAewBvkgpUkSJ5wMTsoHEuh4KWVh5js"
}
]
}
創建錢包地址
為用戶生成新的區塊鏈錢包地址。
POST /api/v1/wallet
Request Body
| 參數 | 必填 | 類型 | 描述 |
|---|---|---|---|
| chains | 是 | Array | 所屬主網,例:["TRON"] |
| identity | 是 | String | 平台用戶識別 ID (必須唯一) |
Response
{
"code": 200,
"data": [
{
"identity": "huge",
"chain": "TRON",
"address": "TYdsAewBvkgpUkSJ5wMTsoHEuh4KWVh5js"
}
]
}
查詢錢包餘額
GET /api/v1/asset
Request Body
| 參數 | 必填 | 類型 | 描述 |
|---|---|---|---|
| identity | 是 | String | 平台用戶識別 ID |
| coins | 否 | Array | 查詢代幣,例:["TRX", "USDT_TRC20"] |
Response
{
"code": 200,
"data": {
"identity": "user0001",
"assets": [
{
"symbol": "USDT",
"name": "USDT_TRC20",
"qty": "1.22"
}
]
}
}
查詢用戶交易訂單
GET /api/v1/order
Request Body
| 參數 | 描述 | 備註 |
|---|---|---|
| identity | 平台用戶識別 ID | |
| page | 當前頁面 | 預設 1 |
| per_page | 每頁資料量 | 預設 200,最多 500 |
| address | 相關交易地址 | 查詢轉入/轉出地址 |
| type | 訂單類型 | 0:轉出, 1:轉入 |
| order_no | 商戶訂單號 | Array |
| coins | 交易代幣 | Array |
| txid | 交易哈希 | Array |
| sid | 系統交易編號 | Array |
Response Fields
- status: 0:佇列中, 1:交易中, 2:已完成, 3:已失敗
- type: 0:轉出, 1:轉入
創建用戶提現交易
POST /api/v1/order/withdraw
Request Body
| 參數 | 必填 | 描述 | 備註 |
|---|---|---|---|
| coin | 是 | 交易代幣 | 例:USDT_TRC20 |
| order_no | 是 | 商戶訂單號 | |
| from | 是 | 轉出地址 | 必須是用戶地址 |
| to | 是 | 轉入地址 | |
| qty | 是 | 轉移數量 | |
| balance_check | 否 | 是否需要超額付款 | 0:不允許(預設), 1:允許(如派息) |
商戶提現 (Merchant Withdraw)
將用戶錢包餘額轉至商戶錢包或是指定地址。
POST /api/v1/merchant/withdraw
若為指定地址須先申請,否則一律轉至後台商戶錢包。
Request Body
| 參數 | 必填 | 描述 |
|---|---|---|
| coin | 是 | 交易代幣 (如 USDT_TRC20) |
| merchant_take_id | 否 | 收款單號 ID (系統用) |
交易確認回調 (Callback)
當區塊鏈交易確認時,系統會發送 POST 請求至您設定的回調 URL。
處理須知:
- 必須先設定回調位置才會啟動。
- 接收成功後請返回 HTTP Status 200。
- 驗簽:將除了
sign以外的參數做再次散列運算,比對 sign 值。
Callback 參數
| 參數 | 描述 |
|---|---|
| sid | 系統訂單號 |
| status | 0:佇列, 1:交易中, 2:完成, 3:失敗 |
| type | 0:轉出, 1:轉入 |
| txid | 交易 Hash (上鏈後才有) |
| sign | 交易簽名 (用於驗證) |
JSON 範例
{
"sid": "0162771607146764096",
"status": "0",
"type": "0",
"coin": "USDT_TRC20",
"txid": "0x1be0a0...",
"qty": "842.86",
"sign": "1bfcedf92d..."
}