PaymentRequest: merchantvalidation 事件
已棄用:此特性不再推薦。雖然某些瀏覽器可能仍然支援它,但它可能已經從相關的網路標準中刪除,可能正在刪除過程中,或者可能僅為相容性目的而保留。請避免使用它,如果可能,請更新現有程式碼;請參閱本頁底部的相容性表格以指導您的決策。請注意,此特性可能隨時停止工作。
當支付處理程式要求發起購買的商家進行自我驗證,以證明其有權使用該支付處理程式時,Payment Request API 會將 merchantvalidation 事件傳送給 PaymentRequest 物件。
瞭解 商家驗證 過程是如何工作的。
此事件不可取消,也不會冒泡。
語法
在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。
addEventListener("merchantvalidation", (event) => { })
onmerchantvalidation = (event) => { }
事件型別
一個 MerchantValidationEvent。繼承自 Event。
事件屬性
MerchantValidationEvent.methodName-
一個字串,提供支付處理程式(需要驗證)的唯一支付方式識別符號。這可能是標準的支付方式識別符號字串之一,也可能是同時標識和處理支付處理程式請求的 URL,例如
https://apple.com/apple-pay。 MerchantValidationEvent.validationURL-
一個字串,指定一個 URL,網站或應用可以從該 URL 獲取支付處理程式特定的驗證資訊。一旦檢索到這些資料,就應將資料(或解析為驗證資料的 Promise)傳遞給
complete(),以驗證付款請求是否來自授權的商家。
示例
在此示例中,為 merchantvalidation 事件設定了事件處理程式。它使用 fetch() 向自己的伺服器傳送請求,並將支付方式的驗證 URL 作為引數,該 URL 可從事件的 validationURL 屬性獲取。商家伺服器應根據支付方式的文件訪問驗證 URL。通常,客戶端不應訪問驗證 URL。
request.addEventListener("merchantvalidation", (event) => {
event.complete(async () => {
const merchantServerUrl = `${
window.location.origin
}/validate?url=${encodeURIComponent(event.validationURL)}`;
// get validation data, and complete validation;
return await fetch(merchantServerUrl).then((response) => response.text());
}, false);
});
const response = await request.show();
商家伺服器如何處理驗證取決於伺服器的實現和支付方式的文件。驗證伺服器提供的內容將被轉發到商家伺服器,然後從 fetch() 呼叫的 fulfillment handler 返回到事件上的 complete() 方法。此響應讓支付處理程式知道商家是否已透過驗證。
您也可以使用 onmerchantvalidation 事件處理程式屬性來設定此事件的處理程式。
request.onmerchantvalidation = (event) => {
event.complete(async () => {
const merchantServerUrl = `${
window.location.origin
}/validate?url=${encodeURIComponent(event.validationURL)}`;
// get validation data, and complete validation;
return await fetch(merchantServerUrl).then((response) => response.text());
});
};
const response = await request.show();
有關更多資訊,請參閱 商家驗證。
瀏覽器相容性
載入中…
另見
- Payment Request API
- 使用 Payment Request API
onmerchantvalidation事件處理程式屬性- 商家驗證
paymentmethodchange事件shippingaddresschange事件shippingoptionchange事件