PaymentRequestEvent

可用性有限

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

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

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

PaymentRequestEvent 介面是 Payment Handler API 的一部分,當發起 PaymentRequest 時,該介面是傳遞給支付處理程式的**PaymentRequestEvent** 物件。

Event ExtendableEvent PaymentRequestEvent

建構函式

PaymentRequestEvent() 實驗性

建立一個新的 PaymentRequestEvent 物件例項。

例項屬性

methodData 只讀 實驗性

返回一個包含支付方法識別符號的物件陣列,這些識別符號代表網站接受的支付方法以及任何相關的特定於支付方法的其他資料。

modifiers 只讀 實驗性

返回一個包含支付詳情更改的物件陣列。

paymentRequestId 只讀 實驗性

返回 PaymentRequest 物件的 ID。

paymentRequestOrigin 只讀 實驗性

返回初始化 PaymentRequest 物件的源(origin)。

topOrigin 只讀 實驗性

返回初始化 PaymentRequest 物件的頂級源(top-level origin)。

total 只讀 實驗性

返回請求支付的總金額。

例項方法

changePaymentMethod() 實驗性

根據支付方法詳情獲取更新後的總金額。

openWindow() 實驗性

在新的視窗中開啟指定的 URL,前提是該 URL 與呼叫頁面具有相同的源。它返回一個 Promise,該 Promise 解析為一個指向 WindowClient 的引用。

respondWith() 實驗性

阻止預設事件處理,並允許您自己提供一個 PaymentResponse 物件的 Promise

示例

當呼叫 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

瀏覽器相容性

另見