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

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

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

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

代收建單

POST /api/v1/collect/orders

建立一張代收單,取得要給付款人的付款資訊。

付款人必須轉入「訂單金額」payable_amount,而不是您送出的原始金額

ST Pay 會在原始金額後加上 0.01 至 0.99 的辨識尾數,例如原始金額 1000.00,訂單金額可能是 1000.37。ST Pay 依這個精確金額辨識是哪一張訂單的入帳。如果您用 json 模式自行呈現付款畫面,請清楚顯示訂單金額,並提醒付款人照這個金額轉帳。

  • 訂單在建單後 30 分鐘失效(expires_at)。到期仍未入帳會被系統拒絕,並發送失敗 Callback。
  • response_mode 決定回傳內容:
    • url:回傳 ST Pay 付款頁網址 payment_url,將付款人導向此頁即可。
    • json:回傳收款帳號資料,由您自行呈現付款畫面。
  • 同一會員最多同時有 10 張待審批(pending)的代收單,超過會回 user_active_orders_limit。

請求欄位

欄位必填格式說明
api_identity是字串ST Pay 核發的 API 身分
merchant_order_no是1–200 字元,英數字、_、-您的訂單號。在您的代收單中不能重複,不論原單是什麼狀態
merchant_user_id二擇一1–200 字元,英數字、_、-付款會員在您系統中的唯一識別。有送時,以它判斷是否為同一會員
payer_name二擇一1–200 字元,只能有中文、英文字母、空白付款人真實姓名。沒送 merchant_user_id 時,以姓名判斷是否為同一會員(不分大小寫,忽略所有空白)。不能含數字或標點,例如 Chan Tai-man 的連字號會被拒絕
amount是金額字串原始金額。單筆上下限以這個金額判斷(不含尾數)
channel_type是fps 或 bank_transfer通道類別
response_mode是url 或 json回傳模式,說明見上方
language否zh-TW、zh-CN 或 en付款頁的語言:繁體中文、簡體中文、英文。沒送或空字串為 zh-TW。只影響 url 模式的付款頁
callback_url是網址,最多 500 字元這張單的 Callback 送往這個網址,建單後不能更改。http 或 https 都可以,不能是本機或內網位址,見 Callback 網址
timestamp是yyyy-MM-dd HH:mm:ss送出請求當下的時間(UTC+8),與 ST Pay 伺服器時間相差超過 5 分鐘會被拒絕,見請求與回應格式
sign是64 字元小寫十六進位見簽章

merchant_user_id 與 payer_name 至少要送一個;空字串或全是空白都視為沒送。兩個都沒送會回 missing_member_identity。兩個都送時,以 merchant_user_id 判斷會員,姓名只作顯示用。

請求範例

{
  "api_identity": "qp_Xk3vT9aLm2QwE7rB1nZc",
  "merchant_order_no": "MO20261013-0001",
  "merchant_user_id": "U10086",
  "payer_name": "王小明",
  "amount": "1000.00",
  "channel_type": "fps",
  "response_mode": "url",
  "callback_url": "https://shop.example.com/qpay/callback",
  "timestamp": "2026-10-13 10:00:00",
  "sign": "566fac06060d54d7450b41b6858b1ddf33df9d37117ab8a8c495ce748469f2b2"
}

回應欄位

欄位出現時機說明
order_no一律ST Pay 訂單號
merchant_order_no一律您送出的商戶單號
status一律固定為 pending
payment_urlurl 模式付款頁網址,見付款頁
channel_typejson 模式fps 或 bank_transfer
bank_namejson 模式且為 bank_transfer收款銀行名稱
bank_codejson 模式且為 bank_transfer收款銀行代碼(字串,保留開頭的 0)
account_nojson 模式完整收款帳號
account_namejson 模式收款戶名
payable_amount一律訂單金額,等於原始金額加辨識尾數。付款人須轉入這個金額
expires_at一律失效時間,等於建單時間加 30 分鐘
sign一律回應簽章,以這次請求用的金鑰計算,見驗證回應。驗章通過才使用 account_no、payment_url

回應範例:url 模式

{
  "code": "OK",
  "message": "成功",
  "data": {
    "order_no": "C202610131000051230000",
    "merchant_order_no": "MO20261013-0001",
    "status": "pending",
    "payment_url": "https://pay.vincoterra.com/pay/QzIwMjYxMDEzMTAwMDA1MTIzMDAwMA.v3Kd9QeLr7Zp1sWm4XyT8bN2cF6hJ0aG5uE-iOkRtYw",
    "payable_amount": "1000.37",
    "expires_at": "2026-10-13 10:30:05",
    "sign": "7e876d9780d033c6224f52015eb15e1d1a9bbda9b75764fff0cdbf3d36b183ee"
  }
}

回應範例:json 模式、銀行轉帳

請求為 "merchant_order_no": "MO20261013-0002"、"payer_name": "Chan Tai Man"、"amount": "2000.00"、"channel_type": "bank_transfer"、"response_mode": "json"、"callback_url": "https://shop.example.com/qpay/callback"、"timestamp": "2026-10-13 10:01:17",簽章為 e20f45942090246543ab7bd95a1fecd52011699382a93637529c2aa987767848。

{
  "code": "OK",
  "message": "成功",
  "data": {
    "order_no": "C202610131001178820000",
    "merchant_order_no": "MO20261013-0002",
    "status": "pending",
    "channel_type": "bank_transfer",
    "bank_name": "The Hongkong and Shanghai Banking Corporation Limited",
    "bank_code": "004",
    "account_no": "123-456789-001",
    "account_name": "WONG KA YAN",
    "payable_amount": "2000.58",
    "expires_at": "2026-10-13 10:31:17",
    "sign": "4cd29b8f52d256516363af07eccfb821caaef52a10777cdc5495b809447aa175"
  }
}

json 模式且通道為 fps 時,沒有 bank_name 與 bank_code,account_no 為 FPS 收款帳號。

付款頁

使用 url 模式時:

  • 頁面顯示訂單金額、通道類別、收款帳號與戶名、失效時間;銀行轉帳另外顯示銀行名稱與代碼。
  • 訂單金額、銀行代碼、收款帳號與戶名旁有「複製」鍵。
  • 訂單一旦結束(成功、拒絕、逾時),頁面只會顯示「訂單已結束」,不再顯示收款資訊。付款人停留在頁面上時會自動換成這個畫面,不必重新整理。
  • 頁面語言依建單時的 language 顯示,付款人無法切換。
  • 網址本身就是存取憑證,持有網址就能看到完整收款帳號。請只提供給該筆訂單的付款人,不要寫進公開的日誌、分析工具或分享連結。
  • 請完整使用回傳的網址,不要修改或自行組合,任何改動都會讓頁面顯示「找不到頁面」。

可能的錯誤

invalid_signature、timestamp_expired、ip_not_allowed、merchant_disabled、missing_parameter、invalid_parameter、invalid_amount、missing_member_identity、invalid_callback_url、amount_out_of_range、merchant_order_no_duplicate、user_active_orders_limit、channel_full、no_available_card、internal_error。說明見錯誤碼。

Next
代付建單