PaymentRequest: merchantvalidation 事件

安全上下文:此功能仅在安全上下文(HTTPS)中可用,部分或全部支持的浏览器中可用。

已弃用:此功能不再推荐。尽管某些浏览器可能仍然支持它,但它可能已从相关 Web 标准中删除,可能正在被删除,或者可能仅出于兼容性目的保留。避免使用它,如果可能,更新现有代码;请参阅此页面底部的兼容性表格,以指导您的决策。请注意,此功能可能随时停止工作。

merchantvalidation事件由Payment Request API传递给PaymentRequest对象,当支付处理程序需要请求购买的商家验证其是否被允许使用支付处理程序时。

了解商家验证流程的工作原理。

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

语法

addEventListener()等方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("merchantvalidation", (event) => {});

onmerchantvalidation = (event) => {};

事件类型

一个MerchantValidationEvent。继承自Event

事件属性

MerchantValidationEvent.methodName

一个字符串,提供需要验证的支付处理程序的唯一支付方法标识符。这可以是标准支付方法标识符字符串之一,也可以是标识和处理支付处理程序请求的 URL,例如https://apple.com/apple-pay

MerchantValidationEvent.validationURL

一个字符串,指定一个 URL,该 URL 可以从该 URL 中获取支付处理程序特定的验证信息。检索到此数据后,应将数据(或解析为验证数据的 promise)传递到complete(),以验证支付请求是否来自授权商家。

示例

在此示例中,为merchantvalidation事件建立了事件处理程序。它使用fetch()向其自己的服务器发送请求,并以支付方法的验证 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()调用的履行处理程序返回到事件上的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();

有关更多信息,请参阅商家验证

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅