跳轉至主體

執行授權與請款分開付款

實體付款時,可分成付款授權請款。可以將付款授權與請款分開,以應對付款結算可能會延遲或付款金額發生變動的可能。

在台灣,自動請款是預設付款方式,未經事先申請不能分開請款。欲在台灣分開請款付款,請聯絡LINE Pay負責人

實體付款中付款授權與請款分開付款的流程如下。

欲將請款分開,請在合作商店中心中設定。

請款分開請求

若要分開付款授權和請款,請在付款請求時,將設定是否自動請款的欄位(capture)值設為false。以下是分開完成授權和請款的付款請求API呼叫範例。

try {
let response = await requestOfflineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: "/v2/payments/oneTimeKeys/pay",
data: {
amount: 100,
currency: "TWD",
orderId: "EXAMPLE_ORDER_20230422_1000001",
// ...
capture: false,
},
});

console.log("Response: ", response);
} catch (error) {
console.log(error);
}

依照上述方式請求付款,付款授權步驟完成後,即可進行付款請款取消付款的狀態。

查詢付款明細

若要在分開完成付款和請款的狀態下,執行請款取消付款,則需確認是否已完成付款。請呼叫付款訊息查詢API,查詢指定付款的授權狀態。請如下使用訂單號碼或交易ID (transaction ID)訊息,查詢付款訊息。

const getConfirmedPaymenrtInfo = async function ({
orderId = "",
transactionId = "",
}) {
let queryString = "";

if (orderId === "" && transactionId === "") {
throw new Error(
"At least one of order ID or transaction ID must be input."
);
} else if (orderId !== "") {
queryString = `orderId=${orderId}`;
} else {
queryString = `transactionId=${transactionId}`;
}

let response = await requestOfflineAPI({
method: "GET",
baseUrl: targetAPIServer,
apiPath: `/v2/payments/authorizations?${queryString}`,
});

return response;
};

// ...

try {
response = await getConfirmedPaymenrtInfo({ orderId: "test_order_1" });

console.log(response);
} catch (error) {
console.error(error);
}

必須在查詢參數中輸入訂單號碼交易ID (transaction ID)之一。

處理交易ID訊息時,根據服務執行語言,可能需要將交易ID視為字串。詳細說明請參考交易ID (transaction ID)

查詢付款訊息,您將收到以下回應。

{
"returnCode": "0000",
"returnMessage": "success",
"info": [
{
"transactionId": 2019049910005498410,
"orderId": "20190408003",
"payStatus": "VOIDED_AUTHORIZATION",
"transactionDate": "2019-04-08T07:02:38Z",
"transactionType": "PAYMENT",
"productName": "test product",
"currency": "THB",
"authorizationExpireDate": "2019-04-13T07:02:38Z",
"payInfo": [
{
"method": "BALANCE",
"amount": 100
}
]
}
]
}

可以根據回應訊息(info.payStatus)了解付款狀態,請款結算或取消付款。以下值會以付款狀態訊息傳回。

  • "AUTHORIZATION": 完成付款授權
  • "EXPIRED_AUTHORIZATION": 付款授權逾期(未在允許的時間內處理請款)
  • "VOIDED_AUTHORIZATION": 取消付款授權

完成付款授權的付款中,可能有已完成請款的付款。這種情況不能請款或取消授權,只能退款

請款

正常完成與顧客的交易,確定需結算的金額後,請呼叫請款請求API。使用付款請求時輸入的訂單號碼,要求請款授權的付款。以下是請求請款的範例。

try {
// 付款請求
let requestResponse = await requestOfflineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: "/v2/payments/oneTimeKeys/pay",
data: {
amount: 100,
currency: "TWD",
// ...
capture: false,
},
});

console.log("Request response: ", requestResponse);

// ...

// 請款請求
let captureResponse = await requestOfflineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: `/v2/payments/orders/${requestResponse.info.orderId}/capture`,
data: {
amount: 100,
currency: "TWD",
},
});

console.log("Capture response: ", captureResponse);
} catch (error) {
console.log(error);
}

分開請款請求付款授權,LINE Pay伺服器將把授權截止日訊息(info.authorizationExpireDate)納入回應。如未在付款授權截止日前完成請款,則自動取消已授權付款。也可以直接取消付款授權

完成請款後,會收到以下回應。

{
"returnCode": "0000",
"returnMessage": "success",
"info": {
"transactionId": 2019010112345678910,
"orderId": "test_order_1",
"transactionDate": "2019-01-01T01:01:00Z",
"payInfo": [
{
"method": "BALANCE",
"amount": 100
}
]
}
}

不能請款高於付款要求輸入金額的付款,可以請款與付款金額相同或低於付款金額的付款。請款低於付款金額的付款,則處理為部分請款,未請款的金額將部分取消。完成請款後不能取消授權,需進行退款處理

取消授權

請款分開付款時,也可以在付款授權之後不繼續請款,亦可取消付款授權。取消付款授權的操作方式如下。

與請款時輸入的訂單號碼呼叫付款請求API時一樣,輸入訂單號碼呼叫取消授權API。以下是取消已授權付款的範例。

try {
// 請求取消付款授權
let voidResponse = await requestOfflineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: `/v2/payments/orders/${requestResponseBody.info.orderId}/void`,
});

console.log("Response: ", voidResponse);
} catch (error) {
console.log(error);
}

正常取消授權後,將收到回應如下。

{
"returnCode": "0000",
"returnMessage": "OK"
}