執行無confirmURL
在基本付款方法中,當顧客完成LINE Pay認證時,合作商店發送付款請求API將顧客查看的頁面重新導向至呼叫時輸入的confirmURL(redirectUrls.confirmUrl
)。從合作商店的角度來看,請求confirmURL意味著顧客已完成LINE Pay認證,可以請求付款授權。
但是,可以在請求付款時不提供重定向URL資訊,並阻止LINE Pay在LINE Pay認證後對合作商店伺服器進行任何呼叫。如此一來顧客在LINE Pay認證後,就不會跳轉至付款授權頁面,並且合作商店伺服器會向LINE Pay伺服器檢查付款狀態以確定是否可以要求付款授權。當執行無重定向URL時,付款作業流程如下。
如需在不提供confirmURL的情況下執行支付,可將呼叫付款請求API時,如何呼叫confirmURL的欄位(options.redirectUrls.confirmUrlType
)的值設定為"NONE"
。如此一來,即使顧客完成了LINE Pay認證,LINE Pay伺服器也不會向合作商店發送任何HTTP請求。以下是在不提供confirmURL的情況下請求付款的範例。
呼叫Online API時,取得必要credentials的方法請參考準備API credentials。本頁所述的程式碼範例使用準備API credentials程式碼範例中定義的
requestOnlineAPI()
函數。
try {
// 無confirmURL執行付款請求
let response = await requestOnlineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: "/v3/payments/request",
data: {
amount: 1000,
currency: "TWD",
// ...
redirectUrls: {
// ...
confirmUrlType: "NONE",
},
},
});
console.log("Response: ", response);
} catch (error) {
console.log(error);
}
要在不提供confirmURL訊息的情況下完成付款,合作商店伺服器會向LINE Pay伺服器發送付款授權請求。如需確定是否可以在不提供confirmURL的情況下請求付款授權,請定期(以每秒為佳)呼叫查詢付款請求狀態的API。此時,需要付款請求時收到的回應交易ID (transaction ID)(info.transactionId
)。以下是查詢付款請求狀態的程式碼。
let intervalId = null;
const getPayRequestStatus = async function (requestTransactionId) {
try {
if (!requestTransactionId) throw new Error("Transaction ID is required!");
let response = await requestOnlineAPI({
method: "GET",
baseUrl: targetAPIServer,
apiPath: `/v3/payments/requests/${requestTransactionId}/check`,
});
switch (response.returnCode) {
case "0000":
console.log("In progress");
break;
case "0110":
console.log("Finished");
// Do something
case "0121":
console.log("Cancelled");
// Do something
//...
default:
clearInterval(intervalId);
}
} catch (error) {
console.log(error);
}
};
intervalId = setInterval(getPayRequestStatus("2023042201206549310"), 1000);
處理交易ID訊息時,根據服務執行語言,可能需要將交易ID視為字串。詳細說明請參考交易ID (transaction ID)。
查詢付款請求狀態時,將收到以下回應。
{
"returnCode": "0000",
"returnMessage": "success"
}
可以根據結果碼(returnCode
)判斷付款請求的狀態,需要了解以下三種狀態。
0000
: 顧客完成LINE Pay認證之前。0110
: 顧客已完成LINE Pay認證,可以進行付款授權的狀態。0121
: 顧客取消付款或超過LINE Pay認證等待時間的狀態。