PaymentRequestEvent: changePaymentMethod() 方法

可用性有限

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

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

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

PaymentRequestEvent 介面的 changePaymentMethod() 方法由支付處理程式使用,以便在給定賬單地址等付款方式詳細資訊的情況下,獲取更新後的總金額。

呼叫此方法時,會觸發一個 PaymentMethodChangeEvent

語法

js
changePaymentMethod(methodName)
changePaymentMethod(methodName, methodDetails)

引數

methodName

將要使用的付款方法的名稱。

methodDetails 可選

一個包含正在更新的特定於方法的詳細資訊的物件。

返回值

一個 Promise,它會解析為一個 PaymentRequestDetailsUpdate 物件。此物件包含以下屬性:

error

一個字串,解釋為什麼無法使用使用者選擇的付款方法。

total

根據更改的付款方法更新的總金額。例如,由於使用者選擇的付款方式的賬單地址會更改適用的銷售稅,因此總金額可能會發生變化。

modifiers

一個 PaymentDetailsModifier 物件的 Array,其屬性在 PaymentRequestEvent.modifiers 中進行了描述。

paymentMethodErrors

一個包含付款方法驗證錯誤的物件(如果存在)。

示例

以下是一個簡單的程式碼片段,可在服務工作執行緒中使用,以將付款方式更改通知傳送到主支付處理程式視窗。有關完整的測試示例,請參閱 用於測試付款方式更改事件的支付處理程式

js
function notifyPaymentMethodChanged(e) {
  e.changePaymentMethod("someMethod")
    .then((paymentMethodChangeResponse) => {
      paymentHandlerWindow.postMessage(paymentMethodChangeResponse);
    })
    .catch((error) => {
      sendMessage({ error: error.message });
    });
}

規範

規範
Payment Handler API
# changepaymentmethod-method

瀏覽器相容性

另見