給開發者

加密支付 API 整合,逐步進行

建立發票、處理 Webhook、鏈上確認與對帳——外加那些把示範與可託付真錢的系統區分開來的失敗情況。

整合加密支付 API 不論服務商為何都遵循可預期的形狀:你建立發票、轉址或嵌入結帳頁、隨付款進展收到非同步 Webhook、驗證它們,並與自己的紀錄對帳。困難之處不在順利路徑——而在邊界情況。

核心流程

多數閘道提供具相同生命週期的 REST API。你在伺服器端呼叫它(絕不要在瀏覽器暴露 API 金鑰),並把 Webhook——而非瀏覽器轉址——當作訂單是否付清的真相來源。

先設計你的訂單狀態機:待處理 → 少付/已付 → 已確認 → 完成,並為已過期與多付設明確分支。事先接好這些,能避免導致重複履約的糾結條件式。

  • 以金額、幣別、訂單 ID 與 Webhook URL 建立發票。
  • 顯示託管結帳頁,或自行渲染地址與金額。
  • 為每次狀態變更接收 Webhook 並驗證其簽章。
  • 在履約前確認付款已達所需確認數。
  • 把 Webhook 與鏈上交易及你的訂單對帳。

建立發票

發票把一個特定金額綁到一個特定訂單一段有限時間。把你的訂單 ID 當作中繼資料送出,讓 Webhook 能無需猜測地對回,並儲存閘道回傳的發票 ID。

報價會過期——閘道會把匯率鎖定數分鐘。持久保存發票的到期時間與狀態,讓你的介面能顯示倒數,也讓遲到的付款被當作對帳案例處理,而非遺失的訂單。

Webhook 是真相來源

付款後的瀏覽器轉址是便利,而非保證——使用者可能關掉分頁。你的伺服器收到的 Webhook 才是你要據以行動的。驗證每一個 Webhook:在信任任何一個欄位之前,先檢查簽章(通常是用你的密鑰對原始內文做的 HMAC)。

讓 Webhook 處理具冪等性。閘道會重送,所以同一個「已付」事件可能到達兩次;以事件或發票 ID 作為你處理的鍵,讓重複送達成為無動作。快速回傳 2xx 並把緩慢的工作非同步處理,閘道才不會逾時而無謂地重送。

確認與最終性

一筆付款可能在最終前很久就被看到(在記憶池中或零確認)。依金額與鏈訂一個確認門檻,並只在達到後履約。對快速鏈上的小額穩定幣付款這很快;對大額則多等一些。

以信任閘道的「已確認」狀態、而非你自己的首次目擊來防範重組與雙花,並且除非你接受風險,否則不要在零確認付款上放行商品。

對帳與失敗情況

對帳是每日的工作,用來證明每筆「已付」訂單都對應一筆真實的鏈上交易,反之亦然。在每筆訂單上儲存交易雜湊、收到的金額與網路,讓落差成為一次查詢,而非一場調查。

為少付(買家送太少)、多付(退差額或折抵)、傳錯網路,以及過期後又付款的發票明確做規劃。在規模上這些並非罕見的邊界情況——它們是每週都有的事件,而能安靜處理它們的系統,才是真正的「可上線」。

常見問題

我該信任瀏覽器轉址還是 Webhook?

Webhook。轉址可能在使用者關掉分頁時遺失,也可能被偽造。在伺服器端驗證 Webhook 的簽章,並把它當作訂單已付清的權威訊號。

我如何避免同一個 Webhook 被處理兩次?

讓處理具冪等性。閘道會重送,所以以發票或事件 ID 作為你邏輯的鍵,讓重複成為無動作。絕不要因為同一個「已付」事件再次到達而把訂單履約兩次。

我該等幾次確認?

取決於金額與鏈。快速網路上的小額穩定幣付款幾乎可立即視為最終;大額則值得等更多確認。使用閘道的「已確認」狀態,而非你自己的首次目擊。

如果顧客少付或多付會怎樣?

兩者都要明確處理。閘道會標示少付,讓你可請求差額或退款;多付時你退還超額或予以折抵。事先把這些分支做好,正是示範與上線之間的差別。

別再翻遍 SDK——交給專家處理。

一位經過審核的 EdgeGigs 開發者會把你的加密支付 API 從頭接到尾:建立發票、Webhook、確認與對帳。固定價格、測試完成、如期交付。

聘請整合專家

繼續閱讀