ST Pay 商戶 APIST Pay 商戶 API
指南
API
錯誤碼
商戶後台
AI 協助對接
  • 繁體中文
  • 简体中文
  • English
指南
API
錯誤碼
商戶後台
AI 協助對接
  • 繁體中文
  • 简体中文
  • English
  • 開始

    • 概覽
    • 請求與回應格式
    • 身分驗證與 IP 白名單
    • 簽章
    • 商戶後台
    • AI 協助對接
  • API

    • 代收建單
    • 代付建單
    • 查單
    • Callback 通知
  • 參考

    • 訂單狀態與金額
    • 重複請求與結果確認
    • 錯誤碼
    • 銀行代碼
    • 上線前檢查清單

查單

查詢訂單目前的狀態與金額。以下情況請用查單確認結果:

  • 沒收到 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_noST Pay 訂單號
merchant_order_no商戶單號
channel_typefps 或 bank_transfer
statuspending、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_reasonrejected 時的拒絕原因文字: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_noST Pay 訂單號
merchant_order_no商戶單號
channel_typefps 或 bank_transfer
statuspending、paid、rejected,見訂單狀態
amount代付金額
fee手續費,paid 有值;rejected 為 "0.00";pending 為 null
total_deducted實扣總額(代付金額加手續費),paid 才有值,其他狀態為 null
created_at建單時間
finished_at完成時間,pending 為 null
reject_reasonrejected 時的拒絕原因文字(可能未選,為 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"
  }
}
Prev
代付建單
Next
Callback 通知