PaymentResponse: complete()-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 PaymentRequest complete() der Payment Request API benachrichtigt den User Agent, dass die Benutzerinteraktion abgeschlossen ist, und sorgt dafür, dass alle verbleibenden Benutzeroberflächen geschlossen werden.

Diese Methode muss aufgerufen werden, nachdem der Benutzer die Zahlungsanforderung akzeptiert hat und das Promise, das von der Methode PaymentRequest.show() zurückgegeben wird, aufgelöst ist.

Syntax

js
complete()
complete(result)

Parameter

result Optional

Ein String, der den Zustand der Zahlungsoperation nach Abschluss angibt. Er muss einer der folgenden sein:

success

Die Zahlung wurde erfolgreich verarbeitet. Der User Agent kann dem Benutzer eine Art "Zahlung erfolgreich"-Anzeige präsentieren oder auch nicht.

fail

Die Zahlung wurde nicht erfolgreich verarbeitet. Das Scheitern kann vom User Agent dem Benutzer mitgeteilt werden oder nicht, abhängig vom Design.

unknown

Der Erfolg oder Misserfolg der Transaktion ist unbekannt oder irrelevant, und der User Agent sollte keine Benachrichtigung anzeigen, selbst wenn er es normalerweise tun würde. Dies ist der Standardwert.

Hinweis: In älteren Versionen der Spezifikation wurde ein leerer String, "", anstelle von unknown verwendet, um einen Abschluss ohne bekannten Ergebniszustand zu kennzeichnen. Siehe den Abschnitt Browser-Kompatibilität unten für Details.

Rückgabewert

Ein Promise, das sich ohne Eingabewert auflöst, sobald die Zahlungsoberfläche vollständig geschlossen ist. Wenn ein Fehler auftritt, wird das Versprechen stattdessen abgelehnt und gibt eine der unten aufgeführten Ausnahmen zurück.

Ausnahmen

AbortError DOMException

Wird zurückgegeben, wenn das Dokument, in dem die Zahlungsanforderung stattfindet, inaktiv wurde, während die Benutzeroberfläche angezeigt wurde.

InvalidStateError DOMException

Wird zurückgegeben, wenn die Zahlung bereits abgeschlossen ist oder complete() aufgerufen wurde, während eine Anfrage zur Wiederholung der Zahlung aussteht. Sie können eine Zahlung nicht als abgeschlossen behandeln, nachdem verlangt wurde, dass die Zahlung erneut versucht wird.

Beispiele

Das folgende Beispiel sendet Zahlungsinformationen mit der Fetch API an einen sicheren Server. Es ruft complete() mit einer Antwort auf, die dem Status in der Antwort entspricht.

js
// Initialization of PaymentRequest arguments are excerpted for the
//   sake of brevity.
const payment = new PaymentRequest(supportedInstruments, details, options);

payment
  .show()
  .then((paymentResponse) => {
    const fetchOptions = {
      method: "POST",
      credentials: include,
      body: JSON.stringify(paymentResponse),
    };
    const serverPaymentRequest = new Request("secure/payment/endpoint");
    fetch(serverPaymentRequest, fetchOptions)
      .then((response) => {
        if (response.status < 400) {
          paymentResponse.complete("success");
        } else {
          paymentResponse.complete("fail");
        }
      })
      .catch((reason) => {
        paymentResponse.complete("fail");
      });
  })
  .catch((err) => {
    console.error("Uh oh, something bad happened", err.message);
  });

Spezifikationen

Specification
Payment Request API
# dom-paymentresponse-complete

Browser-Kompatibilität