當你需要做用退款/獲取交易,便需要使用本流程。

 
在大部情形下,交易結果會直接在API中返回。但是,下列交易類別並不會立刻產生交易結果,則結果會經由webhook去通知商戶,或是經由查詢API得知。

1. 八達通退款
2. Checkout.com退款
3. 匯豐銀行FPS退款
4. 銀聯UPOP退款
5. 微信退款 

 

 

步驟一:產生訂單

商戶的後台向Spiral網關發起交易的API請求訊息,當中包括交易資料(如金額及單號)及cmd不能設為SALESESSION或AUTHSESSION。Spiral網關直接返回結果。

轉至 API 交檔
WebhooksCreated with Sketch.

步驟二:接收交易結果通知

只有在有提供webhookUrl及交易結果是'Unconfirmed'的情況下,才會有webhook通知返回商戶的後台。

只在上面列出的交易類別才會產生'Unconfirmed'的結果。

轉至 API 交檔
  • 請只經由後台送出交易API

    而不要經由前端。因為API訊息是要使用密鑰簽署,而密鑰不應在前端部署。

  • 只相信webhook通知或是查詢API

    因為顧客可以中途關掉網頁甚至自行更改URL,所以通過前端的動作去判定交易結果是不安全的做法。

在相理交易時,使用一個有唯一性的ID去尋找和區別交易是非常重要的。這裏說明一下幾項交易ID的用法和關係。

商戶參考號 (merchantRef) – 這是由商戶自行設定,每筆交易也有不同值。如每同一個訂單下需要進行獲取/退款,需要一個與原來不同,新的商戶參考號值。
格式:最長25位, [A-Za-z0-9_-],最後三位不可以是’_’。

交易 ID (txnId) – 類似商戶參考號,但這是經由 Spiral 而不是商戶生成。

訂單 ID (orderId) – 同交易ID一樣是經由Spiral產生, 但在同一組訂單下的交易 (例如獲取/退款)都會擁有相同的訂單ID,而交易ID則有不同值。 進行獲取/退款時需要提供訂單ID去辦別原來訂單。

Hosted Session及直接交易兩種流程的不同使用場景:

直接交易

Hosted Session

  • 使用Spiral Tokens (信用卡)
  • 使用Apple Pay Tokens
  • 使用Google Pay Tokens
  • 退款
  • 獲取交易
  • 所有不使用tokens的銷售或授權