今天要來串接的是自動付款的功能,使用場景是當商家會 週期性地 向使用者收費,在此場景中,使用者只需要開啟 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 的步驟,參數的部分不需要調整,當訂單的 payType 為 PREAPPROVED 時,confirm API 會額外回傳信用卡資訊和一組很重要的 regKey ,這組 key 在之後每次自動付款的時候都會需要。
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 未過期就可以實際請款了...