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事件