1 of 13

每天五分鐘

LINE API 輕鬆上手 #28

LINE也可以做金流

2019@RenZhou

LINE Pay 處理訂單的回傳(API v3)

2 of 13

在v3版本的API 會有兩個回傳事件

註: v2版本只有confirm

2

LINEPay

(付款畫面)

confirm URL

(付款)

cancel URL

(取消)

server side

3 of 13

confirm URL

當使用者按下付款按鈕時,會根據當初訂單設置時的 confirmUrlType 參數來決定動作

  • CLIENT

會跳轉到你所設定的 confirmUrl 網址並帶後面的參數

像是這樣:

  • SERVER

同上,只是LINE伺服器會自己再送一次請求

  • NONE (sandbox好像不能用,建立訂單時沒有回傳URL讓User付款)

不會傳送請求,要自己定期透過 Payment Status API 去確認訂單

3

https://03d161a8.ngrok.io/confirmUrl?transactionId=2019101400070184210&orderId=order6969e569-d756-4669-968e-1ca62a42d82e

4 of 13

confirm 的處理

複習一下這張圖,當初訂單captrue(自動請款)選項沒填(預設為 true)的話,只要呼叫 Confirm API 就好

反之除了Confirm API 還要另外再去呼叫 Capture API

4

5 of 13

confirm API

  • 透過回傳進來的網址,我們能拿到 transactionId 跟當初我們自訂的 orderId
  • 呼叫的API: POST /v3/payments/{transactionId}/confirm
  • Body內容:
    • amount 訂單的總金額
    • currency 貨幣別

  • 記得Header一樣要加密哦

5

6 of 13

confirm API 回傳值

6

{

returnCode: "0000",

returnMessage: "Success.",

info: {

transactionId: 2019101400070195200,

orderId: "order6b08b5a6-a294-409c-a216-ec7eabf193d0",

payInfo: [

{

method: "CREDIT_CARD",

amount: 7000,

maskedCreditCardNumber: "************1111"

}

],

packages: [...]

}

}

7 of 13

cancel URL

當使用者按下取消時,會將畫面導向這裡

跟 confirm 一樣,也會拿到 transactionId 跟 orderId

7

https://03d161a8.ngrok.io/cancelUrl?transactionId=2019101400070184210&orderId=order6969e569-d756-4669-968e-1ca62a42d82e

8 of 13

假設我們要退款的話

一樣不難

9 of 13

Refund API

  • 呼叫的API: POST /v3/payments/{transactionId}/refund
  • Body內容:
    • refundAmount 退款金額 (可以不用跟總金額一樣,可部分退款)

  • 記得Header一樣要加密哦

9

10 of 13

Refund API 回傳值

10

{

returnCode: '0000',

returnMessage: 'Success.',

info: {

refundTransactionId: 2019101400070203600,

refundTransactionDate: '2019-10-14T09:20:39Z'

}

}

11 of 13

其他還有這些API

  • Payment Details API
    • 查詢交易紀錄
  • Check Payment Status API
    • 查詢付款狀態
  • Check RegKey API
    • 檢查 RegKey 的狀態
  • Pay Preapproved API
    • 透過 RegKey 自動付款
  • Expire RegKey API
    • 使 RegKey 過期

11

建立訂單時若有設 自動付款

則在 confirm 時才會拿到 RegKey

12 of 13

結論

13 of 13

串接LINE Pay需要注意的地方

  • 最難就做簽章的部分,但寫成自動化後其實可以很輕鬆
  • 在做 Header 的 HMAC 簽章時,記得要隨 API 網址、API的method、API所要求的參數做調整
  • API 呼叫的過程會有很多個 transactionId 都不太一樣,操作其他 API 以 confirmURL 帶入的 transactionId 為主
  • 實作的話,記得對各個 API 做詳細的錯誤處理

13