執行授權與請款分開付款
執行線上付款時,可分成付款授權和請款。可以將付款授權與請款分開,以應對付款結算可能會延遲或付款金額發生變動的可能。
在台灣,自動請款是預設付款方式,未經事先申請不能分開請款。欲在台灣分開請款付款,請聯絡LINE Pay負責人。
付款授權與請款分開付款的流程如下。
分開請款請在合作商店伺服器執行以下內容。
請款
若要分開付款授權和請款,請在付款請求時,將設定是否自動請款的欄位(options.payment.capture
)值設為false
。以下是分開付款授權和請款呼叫付款請求API的範例。
呼叫Online API時,取得必要credentials的方法請參考準備API credentials。本頁所述的程式碼範例使用準備API credentials程式碼範例中定義的
requestOnlineAPI()
函數。
try {
// 請求付款時分開付款授權和請款
let response = await requestOnlineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: "/v3/payments/request",
data: {
amount: 1000,
currency: "TWD",
// ...
options: {
payment: {
capture: false,
},
},
},
});
console.log("Response: ", response);
} catch (error) {
console.log(error);
}
依照上述請求進行付款授權,即可進入可以請款或取消付款授權的狀態。正常完成與顧客的交易,確定需結算的金額,請請款。請款請求涉及的付款授權例以呼叫付款授權請求API後收到的付款交易ID (transaction ID)(info.transactionId
)標示。以下是請求請款的範例。
try {
// 請求付款授權
let confirmationResponse = await requestOnlineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: `/v3/payments/${requestTransactionId}/confirm`,
data: {
amount: 1000,
currency: "TWD",
},
});
console.log("Confirmation response: ", confirmationResponse);
let captureResponse = await requestOnlineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: `/v3/payments/authorizations/${confirmationResponse.info.transactionId}/capture`,
data: {
amount: 800,
currency: "TWD",
},
});
console.log("Capture response: ", captureResponse);
} catch (error) {
console.log(error);
}
分開請款請求付款授權,LINE Pay伺服器將把授權截止日訊息(
info.authorizationExpireDate
)納入回應。如未在付款授權截止日前完成請款,則自動取消已授權付款。或者,也可以直接取消付款授權。
處理交易ID訊息時,根據服務執行語言,可能需要將交易ID視為字串。詳細說明請參考交易ID (transaction ID)。
完成請款後,會收到以下回應。
{
"returnCode": "0000",
"returnMessage": "OK",
"info": {
"transactionId": 2023042201206549440,
"orderId": "EXAMPLE_ORDER_20230422_1000002",
"payInfo": [
{
"method": "BALANCE",
"amount": 20
}
]
}
}
不能請款高於付款要求輸入金額的付款,可以請款與付款金額相同或低於付款金額的付款。請款低於付款金額的付款,則處理為部分請款,未請款的金額將部分取消。完成請款後,則不能取消授權,需進行退款處理。
取消授權
與請款分開付款時,也可以付款授權之後不繼續請款,取消付款授權。取消付款授權的操作方式如下。
與請款時一樣,在呼叫付款授權請求API後,使用收到的付款交易ID(info.transactionId
)的值呼叫取消授權API。以下是取消已授權付款的範例。
try {
...
// 請求取消付款授權
let voidResponse = await requestOnlineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: `/v3/payments/authorizations/${confirmationResponse.info.transactionId}/void`,
});
console.log("Response: ", voidResponse);
} catch (error) {
console.log(error);
}
正常取消授權時,將收到回應如下。
{
"returnCode": "0000",
"returnMessage": "Success"
}
可以對已請款或已授權的付款進行付款明細檢索。