跳轉到

Farm PAYMENT API

Farm 是 PAYMENT 與實體銀行 App 之間的裝置與任務中介。本站涵蓋 PAYMENT 接入面: Bearer API、callback/event contract、以及可依序照做的操作 FLOW。

範圍

不包含 Admin、FarmAgent loopback、WDA、RabbitMQ、DB、CLI 或內部部署文件。 範例一律使用 placeholder,不含真實 API key、PIN、帳號或 callback URL。

四個角色

角色 職責
PAYMENT 持有 tenant API key;建立 enrollment/task;接收 callback;以 GET 作恢復入口
Farm Server 鑑權、租戶隔離、入列、狀態權威、best-effort 或 outbox 通知
FarmAgent / Field 現場輸入 enrollment token,綁定實體手機(PAYMENT 不直接呼叫 redeem)
Bank App(裝置) 透過 WDA 執行 balance/明細/轉帳;PAYMENT 不直接碰裝置

閱讀順序

  1. 五分鐘接入 — Base URL、Bearer、smoke test
  2. 裝置註冊與綁定 — 新機與既有機加銀行
  3. 裝置、PIN 與解鎖 — 查詢、PIN、解綁、解鎖 generation
  4. 任務與轉帳安全 — 四種 task 與 transfer 禁止重送閘門
  5. Callback 與事件 — 分流、冪等鍵、投遞保證
  6. 錯誤與重試 — 依「能不能重送」決策
  7. 正式接入檢查表
  8. 接口索引

命名:device_codedevice_id

同一個值、兩個欄位名。 實體手機短碼(如 TH-XXXX):

情境 用哪個
POST /v1/tasks 請求 device_code(preferred);device_id 為 legacy alias
POST /v1/tasks 回應 兩個都回,值相同
GET /v1/tasks/{id}GET /v1/devices/{id} 回應 欄位名常為 device_id,值即 device_code

新整合請一律送 device_code

核心原則

Callback 是通知,GET 是恢復入口

Callback 多為 best-effort(task/bound/balance 無持久化重送)。 權威狀態永遠以 GET /v1/enrollments/{id}GET /v1/tasks/{id}GET /v1/devices/{id} 為準。收到 callback 後應先冪等落地,再異步處理。

Transfer 禁止雙重出款

任務與轉帳安全 頁首決策表。 money_moved=trueneeds_reconciliation=trueinterrupted_needs_reconciliation禁止用新 key 重送 transfer。 verification.deferred=true 時只送 transfer_verify,不重送出款。