跳轉到主要內容
此頁面由 AI 自動翻譯。如有任何疑問或不一致之處,請以英文版本為準。

整合前準備

整合工作由 Return Helper 與您的團隊共同完成:Return Helper 負責發放憑證並接入您的 Webhook 端點;您的工程團隊負責建構請求簽名方與 Webhook 接收方。下面的「雙方分工」表說明哪些步驟由誰負責,隨後是一份非技術專案負責人可與工程團隊一起逐項檢查的清單。

雙方分工

步驟Return Helper您的團隊
API key 與 token在 User Portal 的 Settings → Signing Key and API Token 中發放安全保存;載入至您的伺服器設定
Sandbox 存取Sandbox base URL 見 Base URLs所有整合測試先在 sandbox 完成
Webhook 接收方提供用於簽名驗證的 signing key建置 HTTPS 端點,解析原始 body,驗證簽名,及時回應 200
Webhook 端點註冊在您提交申請表後由我們接入端點端點對公網可達後提交 Webhook Setup Request Form
冪等處理使用 notificationId 去重(見 Webhooks
上線生產Sandbox 驗收通過後,由我們發放生產憑證並將您註冊的端點切換至生產環境Sandbox 測試完成、準備承接生產流量時通知 support

賣家檢查清單

呼叫任何會變更狀態的端點前,請依序完成以下事項:
  1. 取得 API 憑證。 登入 User Portal,在 Settings → Signing Key and API Token 複製 API key 與 API token。同一頁面也會顯示用於驗證 webhook 簽名的 signing key
  2. 選定環境。 先在 sandbox(UAT)開始。生產 base URL 在 sandbox 驗收後才啟用 — 見 Base URLs
  3. 建構 Webhook 接收方。 建立一個 HTTPS 端點:解析原始 POST body,使用 signing key 驗證 returnhelper-signature 標頭,按 notificationId 去重,並及時回應 200 OK。範例程式碼見 Webhooks → Signature Verification
  4. 將端點註冊到我們這邊。 端點對公網可達後,提交 Webhook Setup Request Form,由我們完成連接 — 目前不提供自助註冊 API。
  5. 在 sandbox 端對端驗證。 依本指南其餘章節走完面單建立、倉庫到達、到倉後處理流程,並確認對應的 webhook 事件能在您的接收方收到。
  6. 申請上線生產。 Sandbox 測試完成後,聯絡 support 將您的憑證與已註冊端點切換至生產環境。
步驟 4 完成前,面單結果與倉庫事件無處投遞。在尚未註冊 Webhook 端點的情況下,API 仍接受請求,但您無法取回已產生的面單,也無從得知貨件何時到倉。

退貨流程概覽

典型的退貨流程分為三個階段:
  1. 抵達倉庫前 — 建立退件運貨單(Return Shipment)申請並取得運送標籤。
  2. 抵達倉庫 — 包裹被掃描入庫;圖片被上傳;退件運貨單(Return Shipment)轉換為退貨庫存(Return Inventory)記錄。
  3. 抵達後處理 — 指示倉庫如何處理庫存(丟棄、重寄、回收、VAS 等)。

端對端 Recipes

三條精簡的 recipe,把每個生命週期節點對應到您要呼叫的 API、要監聽的 Webhook 事件,以及隨後的動作。每條 recipe 都會連結到下方的詳述章節。

Recipe 1 — 建立退貨標籤

步驟您的動作Webhook(action後續動作
1POST /api/ReturnShipment/createReturnShipment從同步回應讀取 shipmentIdlabelRequestStatusCode: queued
2(成功)(等候)labelGenerated從 Webhook payload 讀取 labelUrltrackingNumber,把標籤交給買家。比對請使用 shipmentId,不要使用 labelId
2(失敗)(等候)labelGenerated,附帶 labelRequestStatusCode: failed檢查 failReasonserrorMessages,並將失敗通知您的 CS/營運團隊。
詳細流程:申請退貨標籤

Recipe 2 — 接收倉庫到達事件

不需要任何對外 API 呼叫 — 等待倉庫主動推送事件即可。
步驟Webhook(action後續動作
1markShipmentArriveshipmentId 比對到您先前建立的 Return Shipment。
2newInventoryCreated — 每筆產生的 Return Inventory 推送一次(一份運貨單可能產生多筆)把新的 returnInventoryId 關聯至您系統中對應的運貨單。
3倉庫每次新增或替換圖片時推送 changeLineItemImage重新整理該 returnInventoryId 的圖片 URL 快取。
變體 — Unknown Shipment包裹無對應的賣家 Return Shipment 而到倉時,推送 assignUnknown 取代步驟 1+2視為全新的 Return Inventory 處理;payload 已包含 returnInventoryIdshipmentIdreturnRequestId,以及指派前的圖片。
詳細流程:抵達倉庫時的 Return Inventory

Recipe 3 — 下達處理指令

依您要執行的操作選擇對應列;不同操作對應不同的 API 呼叫與 Webhook。
操作API 呼叫Webhook(action後續動作
Dispose / On-holdPOST /api/ReturnInventory/UpdateReturnInventoryHandling,並填入 dispose 或 on-hold handling codecompleteInventoryHandling庫存結案,無須後續動作。
ResendPOST /api/Resend/createResend,引用一個或多個 returnInventoryIdupdateResendStatus追蹤 resend 的對外運送,直到送達買家。
RecallPOST /api/Recall/createRecallByReturnInventoryId,最多 100 個 returnInventoryIdrecallUpdateStatus追蹤運送,直到庫存抵達香港集中倉。
VASPOST /api/Vas/CreateByReturnInventoryId,提供 returnInventoryId 與所需 VAS 類型vasUpdated(若 VAS 拆分庫存則另有 splitLineItem重新讀取庫存記錄。若 VAS 產生拆分,每件衍生包裹會獲得自己的 returnInventoryId 與自己的 RMA。
如需在處理前撤回某條 handling 指令,呼叫對應操作的取消端點(例如 POST /api/ReturnInventory/CancelReturnInventoryHandling)。 詳細流程:處理指令

申請退貨標籤

標籤建立是非同步的。流程如下:
  1. 呼叫 建立退件運貨單(Return Shipment) 以建立退件運貨單(Return Shipment)記錄並排入標籤請求佇列。
  2. Return Helper 生成標籤,並透過 label 通知事件 將結果傳遞至您的 Webhook 通知端點。
您必須已註冊 Webhook 端點才能接收標籤結果。若未註冊,將無法取得已生成的標籤。

RMA(退貨授權號碼)

當退件運貨單(Return Shipment)進入 Return Helper 倉庫時,系統會指派一個全域唯一的 RMA。Return Helper 使用 RMA 作為主要溝通識別碼,而非承運商追蹤號碼,原因有二:
  • 追蹤號碼可能在不同承運商之間重複,甚至在同一承運商內部重複。
  • 當包裹透過 VAS 拆分時,每個產生的包裹會獲得各自的 RMA。
一般 RMA 格式:
<warehouse prefix>-<warehouse ID>-<YYMMDD>-<env letter><sequence up to 5 digits>-<check digits>
範例:TWN-20-230101-D12345-36 拆分 RMA 格式(VAS 拆分後):
<warehouse prefix>-<warehouse ID>-<YYMMDD>-<env letter><sequence up to 5 digits>-<split sequence 2 digits>-<check digits>
範例:TWN-20-230101-D12345-01-36

抵達倉庫時的退貨庫存(Return Inventory)

當退件運貨單(Return Shipment)抵達倉庫時,系統會將其標記為已收到,並轉換為一筆或多筆**退貨庫存(Return Inventory)**記錄,每筆記錄具有唯一的 returnInventoryId

類型 1 — 賣家發起的退件運貨單(Return Shipment)

  1. 賣家透過 API 建立退件運貨單(Return Shipment)並提供標籤。
  2. 倉庫標記已收到 → 發送 warehouseMarkShipmentArrivedV2 Webhook,隨後發送 inventoryCreated(包含 returnInventoryId)。
  3. 若單一標籤涵蓋多個包裹,每個包裹將成為獨立的退貨庫存(Return Inventory)記錄,共享相同的 shipmentIdreturnRequestId。每筆庫存發送一個 inventoryCreated 事件。
  4. 庫存圖片隨後上傳,並透過 changeLineItemImage 傳遞。

類型 2 — 指派給賣家的未知來件(Unknown Shipment)

  1. 退件在沒有賣家建立記錄的情況下抵達,但被識別為屬於某位賣家。
  2. 發送 assignUnknown Webhook,包含退貨庫存(Return Inventory) Payload、returnInventoryIdshipmentIdreturnRequestId
  3. 若包裹包含多個品項,可能會隨後發送多個 inventoryCreated 事件。
  4. 指派前拍攝的圖片包含在 assignUnknown 中;後續任何變更透過 changeLineItemImage 傳遞。

庫存圖片

當圖片上傳(或圖片列表變更)時,會發送 changeLineItemImage Webhook,其中包含圖片 URL 列表。

處理指示

退貨庫存(Return Inventory)記錄建立後,您可以指示倉庫如何處理:

丟棄(Dispose)

呼叫 更新退貨庫存(Return Inventory)處理,使用丟棄處理類型。使用 取消退貨庫存(Return Inventory)處理 撤回指示。

暫停(Hold)

呼叫 更新退貨庫存(Return Inventory)處理,使用暫停處理類型。

重寄(Resend)

  1. 呼叫 建立重寄,提供 returnInventoryId 列表。
  2. 透過 resend Webhook 通知接收重寄追蹤號碼。
  3. 若不再需要重寄,呼叫 取消重寄

回收(Recall)

  1. 呼叫 依退貨庫存(Return Inventory) ID 建立回收,最多提供 100 個 returnInventoryId 值。
  2. 追蹤更新及取件狀態變更透過 recall Webhook 通知傳遞。

增值服務(VAS)

  1. 呼叫 建立 VAS,提供 returnInventoryId 及所需的 VAS 類型。
  2. 結果透過 UpdateVas Webhook 通知傳遞。

自訂欄位

自訂欄位可讓您將任意的鍵值對中繼資料附加至退貨記錄。Return Helper 會儲存這些資料但不進行處理,並在相關的 Webhook 通知中回傳給您。
  • 類型:Dictionary<string, string>
  • 每筆退貨最多 24 個自訂欄位。
{
  "customFieldMap": {
    "customerId": "buyer123",
    "dateOfPurchase": "2024-07-01"
  }
}
自訂欄位可在 建立退件運貨單(Return Shipment) 中使用,並在 warehouseMarkShipmentArrivedV2 通知中回傳。

FBA(亞馬遜物流)退貨

客戶可將 FBA 商品寄送至 Return Helper 倉庫進行處理(補貨、補充、回收、丟棄等)。 典型 FBA 工作流程:
  1. 呼叫 建立 FBA 退件運貨單(FBA Shipment) 通知 Return Helper 並將商品寄送至倉庫。
  2. 退件運貨單(Return Shipment)被收到並以 fnskuquantity 存入 FBA 庫存,並透過 Webhook 傳遞。
  3. 使用 取得 FBA 倉庫庫存列表 查看現有 FBA 庫存。
  4. 透過 建立 FBA 指示 建立指示(補充庫存需要額外的退件運貨單(Return Shipment)資訊,目前 API 尚未提供)。
  5. Return Helper 處理指示並透過 Webhook 通知您結果。
  6. 透過相關的「取得 FBA 指示詳情」端點(回收、丟棄、補貨、其他)查看指示狀態。
取得歷史 FBA 資料(適用於正在遷移至 API 的現有入口網站使用者):
  1. 使用 列出 FBA 退件運貨單(FBA Shipment) 取得指定日期範圍內的過去退件運貨單(Return Shipment),收集 fbaShipmentId 值。
  2. 呼叫 取得 FBA 退件運貨單(FBA Shipment)品項列表 取得每筆退件運貨單(Return Shipment)的品項、FNSKU 及數量。
  3. 使用 取得 FBA 倉庫庫存列表 並提供 FNSKU 查看目前庫存。
  4. 使用 列出 FBA 指示 查找過去的指示。
  5. 對每筆指示使用 取得 FBA 指示品項列表 取得明細項目詳情。
取得歷史資料後,請依賴正常的 API 呼叫和 Webhook 事件,而非持續輪詢。

取得歷史資料

本章節適用於正在遷移至 API 的現有 Return Helper 入口網站使用者。若您是全新整合,所有必要資料均透過正常的 API 呼叫和 Webhook 事件交換,無需取得歷史資料。
取得歷史退件運貨單(Return Shipment)資料: 使用 列出退件運貨單(Return Shipment) 取得指定日期範圍內的過去退件運貨單(Return Shipment)。 取得歷史退貨庫存(Return Inventory)資料: 使用 列出退貨庫存(Return Inventory) 取得指定日期範圍內的過去退貨庫存(Return Inventory)記錄。 FBA 歷史資料請參閱上方的取得歷史 FBA 資料章節。 取得所有歷史資料後,請依賴正常的 API 呼叫和 Webhook 事件,而非持續輪詢歷史資料。

回應結構

每個 API 回應均包含一個 meta 物件,用於指示結果狀態。 成功回應(status: 200):
{
  "apiBalances": [
    {
      "apiBalanceId": 7,
      "currencyCode": "usd",
      "balance": 2044.233
    }
  ],
  "correlationId": "0HM9VIKSKH2CB:00000002",
  "meta": {
    "status": 200,
    "data": {},
    "errorCode": null,
    "error": {}
  },
  "totalNumberOfRecords": 1
}
失敗回應(例如無效的 warehouseId):
{
  "correlationId": "0HM9VIKSKH2CF:00000002",
  "meta": {
    "status": 400,
    "data": {},
    "errorCode": "VALIDATION_FAILED",
    "error": {
      "warehouseId": "The value 'invalid' is not valid."
    }
  }
}
任何非 200status 值均表示請求未成功完成。errorCodeerror 欄位提供詳細說明。