PaymentRequestEvent: respondWith() 方法

可用性有限

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

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

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

respondWith() 方法屬於 PaymentRequestEvent 介面,它會阻止預設的事件處理,並允許您自己提供一個用於支付處理響應物件的 Promise

語法

js
respondWith(promise)

引數

promise

支付處理響應物件或解析為支付處理響應物件的 Promise。此物件應包含以下屬性:

methodName

使用者為完成交易選擇的支付方式的支付方式識別符號。

details

一個 JSON 可序列化的物件,提供特定於支付方式的訊息,供商家用於處理交易和確定成功的資金轉移。有關更多詳細資訊,請參閱 7.1.2 details 屬性

返回值

無(undefined)。

示例

下面的示例摘自 開啟支付處理程式視窗以顯示基於 Web 的支付應用程式前端。請閱讀該文章以瞭解程式碼的背景。

js
self.addEventListener("paymentrequest", async (e) => {
  // Retain a promise for future resolution
  resolver = new PromiseResolver();

  // Pass a promise that resolves when payment is done.
  e.respondWith(resolver.promise);
  // Open the checkout page.
  try {
    // Open the window and preserve the client
    client = await e.openWindow(checkoutURL);
    if (!client) {
      // Reject if the window fails to open
      throw new Error("Failed to open window");
    }
  } catch (err) {
    // Reject the promise on failure
    resolver.reject(err);
  }
});

規範

規範
Payment Handler API
# dom-paymentrequestevent-respondwith

瀏覽器相容性

另見