PaymentRequest: canMakePayment() Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die Methode canMakePayment() des PaymentRequest bestimmt, ob die Anfrage so konfiguriert ist, dass sie mit mindestens einer Zahlungsart kompatibel ist, die vom User-Agent unterstützt wird.

Sie können dies vor dem Aufruf von show() verwenden, um eine optimierte Benutzererfahrung zu bieten, wenn der Browser des Benutzers keine der von Ihnen akzeptierten Zahlungsmethoden verarbeiten kann.

Zum Beispiel könnten Sie canMakePayment() aufrufen, um zu bestimmen, ob der Browser es dem Benutzer erlaubt, die Payment Request API zu nutzen. Falls dies nicht möglich ist, könnten Sie auf eine andere Zahlungsmethode zurückgreifen oder eine Liste von Methoden anbieten, die nicht von der Payment Request API behandelt werden (oder sogar Anweisungen zum Bezahlen per Post oder Telefon bereitstellen).

Syntax

js
canMakePayment()

Parameter

Keine.

Rückgabewert

Ein Promise auf einen booleschen Wert, der zu true aufgelöst wird, wenn der User-Agent eine der beim Erstellen der Anfrage mit dem PaymentRequest Konstruktor angegebenen Zahlungsmethoden unterstützt. Kann die Zahlung nicht verarbeitet werden, erhält das Promise den Wert false.

Hinweis: Wenn Sie dies zu oft aufrufen, kann der Browser das zurückgegebene Promise mit einem DOMException ablehnen.

Beispiele

Im folgenden Beispiel, aus einer Demo entnommen, wird ein PaymentRequest-Objekt sowohl für Apple Pay als auch für Example Pay asynchron erstellt. Der Aufruf von canMakePayment() wird in eine Feature-Erkennung eingebunden und abhängig von der Auflösung des Promise wird ein geeigneter Rückruf aufgerufen.

js
async function initPaymentRequest() {
  const details = {
    total: {
      label: "Total",
      amount: {
        currency: "USD",
        value: "0.00",
      },
    },
  };

  const supportsApplePay = new PaymentRequest(
    [{ supportedMethods: "https://apple.com/apple-pay" }],
    details,
  ).canMakePayment();

  // Supports Apple Pay?
  if (await supportsApplePay) {
    // show Apple Pay logo, for instance
    return;
  }

  // Otherwise, let's see if we can use Example Pay
  const supportsExamplePay = await new PaymentRequest(
    [{ supportedMethods: "https://example.com/pay" }],
    details,
  ).canMakePayment();

  if (supportsExamplePay) {
    // show Example Pay support
    return;
  }

  // Otherwise, make payments using HTML form element
}

Spezifikationen

Specification
Payment Request API
# dom-paymentrequest-canmakepayment

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch