查單
查詢訂單目前的狀態與金額。以下情況請用查單確認結果:
- 沒收到 Callback。
- 代收單被逾時入帳(不發 Callback)。
- 建單請求逾時,或收到
internal_error。待付款的單會一併回傳付款資訊,可以繼續讓付款人付這張單(見下方)。 - 建單回
merchant_order_no_duplicate,想知道原單狀態。
查單是唯讀操作,可以重複呼叫。
請求欄位
代收查單與代付查單的請求欄位相同:
| 欄位 | 必填 | 說明 |
|---|---|---|
api_identity | 是 | ST Pay 核發的 API 身分 |
order_no | 二擇一 | ST Pay 訂單號 |
merchant_order_no | 二擇一 | 您的商戶單號 |
timestamp | 是 | 送出請求當下的時間(UTC+8,yyyy-MM-dd HH:mm:ss),與 ST Pay 伺服器時間相差超過 5 分鐘會被拒絕,見請求與回應格式 |
sign | 是 | 見簽章 |
- 兩個都沒送:回
missing_parameter。 - 兩個都送:必須指向同一張單,指向不同單回
query_conflict;其中一個查不到則回order_not_found。 - 只能查到您自己的單。訂單不存在、屬於其他商戶,或已超過 6 個月被刪除,一律回
order_not_found。
可能的錯誤:invalid_signature、timestamp_expired、ip_not_allowed、missing_parameter、invalid_parameter、query_conflict、order_not_found、internal_error。
代收查單
POST /api/v1/collect/orders/query
請求範例
{
"api_identity": "qp_Xk3vT9aLm2QwE7rB1nZc",
"merchant_order_no": "MO20261013-0001",
"timestamp": "2026-10-13 10:35:00",
"sign": "c29089b08a6fdcd3d9c17a404cae90a4aaa0a79210778e53997e4f9f43bb6462"
}
回應欄位
| 欄位 | 說明 |
|---|---|
order_no | ST Pay 訂單號 |
merchant_order_no | 商戶單號 |
channel_type | fps 或 bank_transfer |
status | pending、success、rejected、late_credited,見訂單狀態 |
amount | 原始金額 |
payable_amount | 訂單金額(原始金額加尾數) |
received_amount | 實收金額,success、late_credited 才有值,其他狀態為 null |
fee | 手續費,success、late_credited 有值;rejected 為 "0.00";pending 為 null |
settlement_amount | 結算金額(加入您餘額的金額),success、late_credited 才有值,其他狀態為 null |
created_at | 建單時間 |
finished_at | 完成時間,pending 為 null |
reject_reason | rejected 時的拒絕原因文字:ST Pay 人工拒絕時為所選原因(可能未選,為 null),系統逾時拒絕時為「訂單已逾時」。這是給人看的文字,不是代碼。其他狀態請忽略這個欄位 |
payment_url | 付款頁網址,與建單回應相同。只有待付款且還沒到失效時間、建單時用 url 模式的單才有 |
bank_name、bank_code | 銀行名稱與代碼。只有待付款且還沒到失效時間、建單時用 json 模式且通道為 bank_transfer 的單才有 |
account_no、account_name | 完整收款帳號與戶名(或收款姓名)。只有待付款且還沒到失效時間、建單時用 json 模式的單才有 |
expires_at | 失效時間。只有待付款且還沒到失效時間的單才有 |
sign | 回應簽章,以這次請求用的金鑰計算,見驗證回應 |
建單請求逾時拿不到回應時,用商戶單號查單:查到 pending 且帶有上述付款資訊,就可以把付款人導向 payment_url(或顯示收款帳號),繼續付這張單,不必換新的商戶單號重建。失效時間照建單時的 expires_at,不會延長;過了失效時間或單已結束,就不再回傳付款資訊。請先驗章,通過才使用這些資訊。
回應範例
待付款(url 模式)
{
"code": "OK",
"message": "成功",
"data": {
"order_no": "C202610131000051230000",
"merchant_order_no": "MO20261013-0001",
"channel_type": "fps",
"status": "pending",
"amount": "1000.00",
"payable_amount": "1000.37",
"received_amount": null,
"fee": null,
"settlement_amount": null,
"created_at": "2026-10-13 10:00:05",
"finished_at": null,
"reject_reason": null,
"payment_url": "https://pay.vincoterra.com/pay/QzIwMjYxMDEzMTAwMDA1MTIzMDAwMA.v3Kd9QeLr7Zp1sWm4XyT8bN2cF6hJ0aG5uE-iOkRtYw",
"expires_at": "2026-10-13 10:30:05",
"sign": "8cba06866fc16ea3b585309cd13d851d7bda49bf2e95605275f2d99047620487"
}
}
成功
{
"code": "OK",
"message": "成功",
"data": {
"order_no": "C202610131000051230000",
"merchant_order_no": "MO20261013-0001",
"channel_type": "fps",
"status": "success",
"amount": "1000.00",
"payable_amount": "1000.37",
"received_amount": "1000.37",
"fee": "25.00",
"settlement_amount": "975.37",
"created_at": "2026-10-13 10:00:05",
"finished_at": "2026-10-13 10:12:30",
"reject_reason": null,
"sign": "889c767037b6748de1d9fa399129b97012c85f3599a0cce9aff289cf79477626"
}
}
系統逾時拒絕
{
"code": "OK",
"message": "成功",
"data": {
"order_no": "C202610131001178820000",
"merchant_order_no": "MO20261013-0002",
"channel_type": "bank_transfer",
"status": "rejected",
"amount": "2000.00",
"payable_amount": "2000.58",
"received_amount": null,
"fee": "0.00",
"settlement_amount": null,
"created_at": "2026-10-13 10:01:17",
"finished_at": "2026-10-13 10:31:17",
"reject_reason": "訂單已逾時",
"sign": "6a99a7a5085900260830aee441271fb2a0e94d88d33e49b15bfb5a46d6a6e05e"
}
}
查無此單
{
"code": "order_not_found",
"message": "查無此單",
"data": null
}
代付查單
POST /api/v1/payout/orders/query
請求範例
{
"api_identity": "qp_Xk3vT9aLm2QwE7rB1nZc",
"order_no": "P202610131005224410000",
"timestamp": "2026-10-13 10:40:00",
"sign": "adae0ba479bd688b63425e34dcb77cbf5114b34bee68e266ba045ea69748f2b9"
}
回應欄位
| 欄位 | 說明 |
|---|---|
order_no | ST Pay 訂單號 |
merchant_order_no | 商戶單號 |
channel_type | fps 或 bank_transfer |
status | pending、paid、rejected,見訂單狀態 |
amount | 代付金額 |
fee | 手續費,paid 有值;rejected 為 "0.00";pending 為 null |
total_deducted | 實扣總額(代付金額加手續費),paid 才有值,其他狀態為 null |
created_at | 建單時間 |
finished_at | 完成時間,pending 為 null |
reject_reason | rejected 時的拒絕原因文字(可能未選,為 null)。其他狀態請忽略這個欄位 |
sign | 回應簽章,以這次請求用的金鑰計算,見驗證回應 |
回應範例
{
"code": "OK",
"message": "成功",
"data": {
"order_no": "P202610131005224410000",
"merchant_order_no": "PO20261013-0001",
"channel_type": "fps",
"status": "paid",
"amount": "500.00",
"fee": "7.50",
"total_deducted": "507.50",
"created_at": "2026-10-13 10:05:22",
"finished_at": "2026-10-13 10:20:41",
"reject_reason": null,
"sign": "67d2dfa30d5df0d5456f706400e22faaf5acbb22b164885d5e08f1102e8538a7"
}
}