退款處理
執行付款授權後自動處理為請款,或執行分開請款則無法取消已授權的付款,只能採取退款處理。可以使用已完成付款的交易ID (transaction ID)退還全部付款金額,如下所示。
呼叫Online API時,取得必要credentials的方法請參考準備API credentials。本頁所述的程式碼範例使用準備API credentials程式碼範例中定義的
requestOnlineAPI()
函數。
try {
let refundResponse = await requestOnlineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: `/v3/payments/${transactionId}/refund`,
});
console.log("Refund response: ", refundResponse);
} catch (error) {
console.log(error);
}
處理交易ID訊息時,根據服務執行語言,可能需要將交易ID視為字串。詳細說明請參考交易ID (transaction ID)。
只需要退還部分金額,請在主體參數部分輸入要部分退款的金額(refundAmount
),如下所示。
const refund = async function (transactionId, amount = 0) {
if (!transactionId) throw new Error("Transaction ID is required!");
if (amount < 0) throw new Error("Amount cannot be negative number");
const refundBody = amount > 0 ? { refundAmount: amount } : null;
let refundResponse = await requestOnlineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: `/v3/payments/${transactionId}/refund`,
data: refundBody,
});
return refundResponse;
};
// ...
try {
let response = refund("2018082512345678910", 500);
console.log(response);
} catch (error) {
console.log(error);
}
如果退款處理要求正常進行,則會回傳以下退款交易訊息回應。
{
"returnCode": "0000",
"returnMessage": "success",
"info": {
"refundTransactionId": 2018082512345678911,
"refundTransactionDate": "2018-08-25T09:15:01Z"
}
}