ServiceWorkerGlobalScope: paymentrequest 事件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

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

注意:此功能僅在 Service Workers 中可用。

ServiceWorkerGlobalScope 介面的 paymentrequest 事件在支付應用程式上觸發,當用戶在商家網站上透過 PaymentRequest.show() 方法啟動支付流程時。

語法

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

js
addEventListener("paymentrequest", (event) => { })

onpaymentrequest = (event) => { }

事件型別

一個 PaymentRequestEvent。繼承自 ExtendableEvent

Event ExtendableEvent PaymentRequestEvent

示例

當呼叫 PaymentRequest.show() 方法時,會在支付應用程式的服務工作執行緒上觸發一個 paymentrequest 事件。此事件在支付應用程式的服務工作執行緒內部被監聽,以開始支付流程的下一階段。

js
let payment_request_event;
let resolver;
let client;

// `self` is the global object in service worker
self.addEventListener("paymentrequest", async (e) => {
  if (payment_request_event) {
    // If there's an ongoing payment transaction, reject it.
    resolver.reject();
  }
  // Preserve the event for future use
  payment_request_event = e;

  // …
});

當收到 paymentrequest 事件時,支付應用程式可以透過呼叫 PaymentRequestEvent.openWindow() 來開啟一個支付處理視窗。支付處理視窗將向客戶展示一個支付應用程式介面,他們可以在其中進行身份驗證、選擇配送地址和選項,以及授權支付。

支付處理完成後,使用 PaymentRequestEvent.respondWith() 將支付結果傳回商家網站。

有關此階段的更多詳細資訊,請參閱 Receive a payment request event from the merchant

規範

規範
Payment Handler API
# the-paymentrequestevent

瀏覽器相容性

另見