PaymentRequest: merchantvalidation 事件

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

已棄用:此特性不再推薦。雖然某些瀏覽器可能仍然支援它,但它可能已經從相關的網路標準中刪除,可能正在刪除過程中,或者可能僅為相容性目的而保留。請避免使用它,如果可能,請更新現有程式碼;請參閱本頁底部的相容性表格以指導您的決策。請注意,此特性可能隨時停止工作。

當支付處理程式要求發起購買的商家進行自我驗證,以證明其有權使用該支付處理程式時,Payment Request API 會將 merchantvalidation 事件傳送給 PaymentRequest 物件。

瞭解 商家驗證 過程是如何工作的。

此事件不可取消,也不會冒泡。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
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。

js
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 事件處理程式屬性來設定此事件的處理程式。

js
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();

有關更多資訊,請參閱 商家驗證

瀏覽器相容性

另見