iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 9
1

自動付款

今天要來串接的是自動付款的功能,使用場景是當商家會 週期性地 向使用者收費,在此場景中,使用者只需要開啟 LINE 程式驗證一次就好,不需要每次請款時都要重複驗證。

'payType' => 'PREAPPROVED'

'productName' => $_POST['productName']
, 'productImageUrl' => $_POST['productImageUrl']
, 'payType' => "PREAPPROVED"
, 'amount' => 168
, 'currency' => "TWD"
, 'confirmUrl' => "http://eddie27.byethost11.com/linepay/confirm_auto.php"
, 'orderId' => $_POST['orderId']

第一步,在向 LINE Pay 發送 reserve request 時,要加上將payType設為PREAPPROVED的參數。

array(3) {
  ["returnCode"]=>
  string(4) "0000"
  ["returnMessage"]=>
  string(8) "Success."
  ["info"]=>
  array(4) {
    ["transactionId"]=>
    int(2017122000021945910)
    ["orderId"]=>
    string(14) "20171220012539"
    ["payInfo"]=>
    array(1) {
      [0]=>
      array(5) {
        ["method"]=>
        string(11) "CREDIT_CARD"
        ["amount"]=>
        int(168)
        ["creditCardNickname"]=>
        string(8) "RKBzMpNm"
        ["creditCardBrand"]=>
        string(4) "VISA"
        ["maskedCreditCardNumber"]=>
        string(16) "************1111"
      }
    }
    ["regKey"]=>
    string(15) "RK5C38F19XTF425"
  }
}

接著一樣來到 confirm API 的步驟,參數的部分不需要調整,當訂單的 payTypePREAPPROVED 時,confirm API 會額外回傳信用卡資訊和一組很重要的 regKey ,這組 key 在之後每次自動付款的時候都會需要。

preapprovedPay API

POST /v2/payments/preapprovedPay/{regKey}/payment

要使用 自動請款 API 就要把剛剛取得的 regKey 放在 request 的 url,再填上必要的參數。

'productName' => 'Auto Test'
, 'amount' => 1680
, 'currency' => "TWD"
, 'orderId' => $orderId
項目 資料型別 是否必要? 說明
productName String Y 產品名稱 (charset:"UTF-8")
amount number Y 付款金額
currency String Y 付款貨幣 (ISO 4217: USD, JPY, TWD, THB)
orderId String Y 商家與該筆付款請求對應的訂單編號(是商家自行管理的唯一編號)

*因為已在先前取得使用者同意,不會再通知使用者確認一次,會依據當時送出 request 時選擇的付款方式請款。

array(3) {
  ["returnCode"]=>
  string(4) "0000"
  ["returnMessage"]=>
  string(8) "Success."
  ["info"]=>
  array(2) {
    ["transactionId"]=>
    int(2017122100022013310)
    ["transactionDate"]=>
    string(20) "2017-12-21T14:09:56Z"
  }
}

得到的結果和一般付款一樣,並且會取得新的訂單編號 ( transactionId )。

*實際測試 preapprovedPay API 時,產品名稱和金額都不用和一開始相同,只要用 regKey 未過期就可以實際請款了...
/images/emoticon/emoticon17.gif


上一篇
Day 07 - Linepay (5) 請款 API
下一篇
Day 09 - Linepay (7) 付款記錄查詢/退款 API
系列文
使用PHP串接金流相關API30

1 則留言

我要留言

立即登入留言