我該使用哪個查詢?
拒絕不是一種交易狀態。
status 只會是 PENDING 或 SETTLED——遭拒絕的授權永遠不會變成已結算的交易,因此它根本不會出現在 getTransactions 中。如果你要排查「扣款沒有成功」的問題,該用的是 getDeclinedTransactions 與拒絕代碼,而不是這個資訊流。一筆記錄包含哪些內容
大約五十個欄位,分為六組。只請求你需要的欄位——若請求全部欄位,回應會非常龐大。身分與路由
身分與路由
record_id、account_id、user_id、user、transaction_type、channel(WEB、MOBILE、API)、connectedAppId 與 connectedAppName——由你的哪個應用程式發起。金額
金額
amount、fee、cashback、cashback_rate、bonus_cashback_rate,再加上兩個值得了解的方向性欄位:external_funding_source_activity——外部資金來源(銀行卡與帳戶)的變動fluz_balance_activity——Fluz 內部餘額的變動
餘額快照
餘額快照
參見下文——每筆記錄都攜帶每一種餘額的事後狀態。
情境資訊
情境資訊
source 與 destination 為顯示字串(如「Visa ****1234」、「Amazon」)、description、merchant_id、logo_url、card_last_four、card_display_name、virtual_card_program、source_type。外幣交易還會附加 original_currency_amount、original_currency_code 與 conversion_rate。你的註解
你的註解
memo、transactionCategory、attachmentUrl——參見加註。關聯欄位
關聯欄位
reference_id、transfer_id、liability_id、used_user_cash_balance_id、descriptor_id——用於對帳的欄位。參見對帳。餘額快照
每筆交易都攜帶每一種餘額類型,在該筆交易套用_之後_的餘額。這使得這個資訊流成為一個可重播的分類帳——你不需要另一個餘額歷史 API,就能重建帳戶在其歷史上任一時間點的狀態。seat_balance_* 是獎勵餘額。這個命名是歷史遺留的——不必去尋找一個獨立的 seat 概念。_available_balance 與 _total_balance 兩個版本。成對出現的 is_*_affected 布林欄位(is_cash_balance_affected、is_seat_balance_affected、is_gift_card_balance_affected、is_reserve_balance_affected)會告訴你這筆交易實際影響了哪些餘額——比對快照做差值判斷的成本更低。
→ 錢包總覽,了解每種餘額分別是什麼。
篩選
getTransactions 接受功能豐富的 TransactionFilterInput。各欄位家族如下:
amount 是基礎金額;finalAmount 是金額加上手續費,即實際扣款總額。核對資金來源實際被扣了多少款項時,請以 finalAmount 篩選。
分頁與吞吐量
limit 上限為 20,offset 用來向前翻頁。請檢查 hasNextPage,而不要從短頁面去推斷;totalCount 會給出篩選後結果集的完整大小。
GraphQL API 對每個 IP 與每個存取權杖都限制為每秒 20 個請求,且回應中不帶任何速率限制標頭。參見速率限制。
在建置同步作業之前,先算一下這筆帳。 每次查詢 20 筆記錄、每秒 20 個請求,上限是每秒 400 筆交易,而一次只發一個請求的實際吞吐量會遠低於這個數字。一個累計有 50 萬筆交易的帳戶,需要 25,000 次請求才能完整遍歷一次。請以增量同步的方式設計:用
createdGte/updatedGte 搭配你上一次成功同步的水位線來限定每個作業的範圍,絕不要重新遍歷你已經擁有的歷史資料。為交易加註
你可以為任何交易附加一段自由文字memo(最多 255 個字元)、一個 transactionCategory,以及一個檔案——可以在存款、購買與轉帳發生的當下附加,也可以之後透過 updateTransactionMetadata 補上。分類會在首次使用時建立,之後再次使用相同名稱時會被重複使用。
→ 新增費用明細
與你自己的系統對帳
有五個欄位負責關聯:
一種可行的模式:
- 在建立訂單當下,將
record_id與reference_id儲存在你自己的訂單記錄上。不要試圖之後再靠金額與時間戳記去比對。 - **依
updatedGte做增量同步,**而不是createdGte——一筆PENDING交易之後結算時會變更updated_at,依建立日期同步會漏掉這次轉變。 - 預期會有結算延遲。 ACH 提款會維持
PENDING狀態 1 到 3 個工作天;卡片授權則依各自的時間軸結算。expectedClearedDate會告訴你該在什麼時候再次查看。 - **依快照核對餘額,**而不是靠加總金額。
*_available_balance欄位是權威資料,已經把手續費、現金回饋與待處理的預留款都計算在內。
externalReferenceId 不會出現在交易記錄上。如果你需要在一筆資金變動上帶上自己的使用者 ID,請透過帳戶進行關聯,或在交易發生當下把它寫進 memo。→ 管理外部參照 ID權限範圍
getTransactions 同時需要 LIST_PAYMENT 與 LIST_PURCHASES。缺少任一個,都會回傳 FORBIDDEN 錯誤並指出所需的權限範圍。
在你開始建置之前,請先在你應用程式的 Permissions 分頁啟用這兩項權限——已請求但未啟用的權限範圍會被靜默捨棄,而不是被拒絕。→ 設定 OAuth 應用程式
後續步驟
取得所有交易
完整的篩選、欄位與分頁參考。
已拒絕交易
從未變成交易的授權。
拒絕代碼
每種拒絕原因分別代表什麼。
虛擬卡交易
限定在一張或多張卡片上。
禮品卡購買
訂單,而非分類帳條目。
新增費用明細
備註、分類與附件。