Fehlercodes

Auf dieser Seite finden Sie die kanonischen Fehlercodes, die Sie in Ihren API-Antworten zurückgeben müssen, wenn Sie das Universal Commerce Protocol (UCP) für die Integration mit Google verwenden. Einheitliche Fehlercodes sorgen für eine klare Kommunikation und helfen Google, verschiedene Szenarien angemessen zu behandeln.

Wenn ein Geschäftsfehler auftritt, sollte Ihre API eine Antwortnachricht zurückgeben, die den entsprechenden code aus der Tabelle enthält. Für einige Fehlercodes wird eine bestimmte JSON-Struktur für das Array messages in der Antwort empfohlen. Diese Beispiele finden Sie unten in der Tabelle im Abschnitt Beispiele für Fehlercodes. In diesen Beispielen sollten Sie das Feld path verwenden, um genauere Informationen zum Ort des Fehlers im Anfrage- oder Antwortobjekt anzugeben.

Fehlerbehandlung

Wie Sie Fehler melden, hängt vom Fehlertyp ab:

  • Protokoll-/Serverfehler:

    • Verwenden Sie standardmäßige HTTP-Statuscodes (z.B. 4xx für Clientfehler, 5xx für Serverfehler) für Probleme wie fehlerhafte Anfragen, Authentifizierungsfehler oder Serververfügbarkeit.
    • Weitere Informationen finden Sie in der UCP-Spezifikation.
  • Fehler/Warnungen in der Geschäftslogik:

    • Geben Sie den Status HTTP 200 OK zurück. Dazu gehören abgelehnte Zahlungen und Betrugsablehnungen, auch wenn Ihr Downstream-Zahlungsgateway einen 4xx- oder 5xx-Fehler zurückgibt.
    • Beschreiben Sie das Problem im Array messages im JSON-Antworttext.
    • Jedes Objekt im messages-Array muss Folgendes enthalten:
      • type: "error" oder "warning"
      • code: Ein standardisierter Code aus diesem Leitfaden. Verwenden Sie keine generischen oder unbekannten Codes wie "invalid".
      • content: Eine menschenlesbare Beschreibung.
      • severity: Erforderlich, wenn type "error" ist. Dieses Feld gibt explizit an, ob der Fehler schwerwiegend ist (unrecoverable) oder ob Sie den Käufer auffordern können, das Problem zu beheben (recoverable). Sie müssen sich also nicht auf den Fehlercode selbst verlassen.

Nachrichtentypen: Fehler und Warnungen

Das Feld type im Nachrichtenarray gibt den Schweregrad des Problems an. UCP definiert zwei primäre Typen:

  • error: Gibt an, dass der angeforderte Vorgang nicht abgeschlossen werden konnte. Die Plattform oder der Nutzer muss wahrscheinlich Maßnahmen ergreifen und es noch einmal versuchen. Weitere Informationen finden Sie in der Spezifikation für message-error.
    • Die Art eines Fehlers wird durch das Feld severity (unrecoverable oder recoverable) bestimmt, nicht durch den Fehler code.
  • warning: Gibt an, dass der Vorgang nicht blockiert wurde, aber es etwas Bemerkenswertes gibt, das dem Nutzer mitgeteilt werden sollte. Dadurch wird der Prozess nicht unterbrochen, aber wichtiger Kontext bereitgestellt. Spezifikation für message-warning

Fehlercode-Referenz

Fehlercode Empfohlener Typ Beschreibung
out_of_stock Fehler Der Artikel ist nicht verfügbar. Das führt in der Regel zu ucp.status: “error”. Verwenden Sie das Feld path, um den Artikelindex bei Check-outs mit mehreren Artikeln anzugeben. Beispiel unten
item_unavailable Fehler Das Element wurde nicht gefunden. Das führt in der Regel zu ucp.status: “error” für diese artikelbezogenen Fehler.
item_ineligible Fehler Der Artikel ist vorhanden, kann aber nicht über UCP gekauft werden.
quantity_invalid_limit_exceeded Fehler Die angeforderte Menge überschreitet das zulässige Limit. Beispiel unten
quantity_invalid_minimum_not_met Fehler Die angeforderte Menge liegt unter der erforderlichen Mindestmenge.
totals_changed Warnung Der Preis oder andere Summen haben sich seit dem letzten Schritt geändert. Verwenden Sie das Feld path, um anzugeben, welche Summe sich geändert hat. Beispiel unten
totals_invalid_minimum_not_met Fehler Der Bestellwert entspricht nicht der Mindestanforderung.
missing_buyer_info Fehler Erforderliche Käuferinformationen fehlen. Verwenden Sie das Feld path, um das fehlende Feld anzugeben. Beispiel unten
address_undeliverable Fehler Dies ist ein Standard-UCP-Fehlercode. Verwenden Sie das Feld path, um das spezifische Ziel oder den eingeschränkten Artikel anzugeben. Beispiel unten
address_unverifiable Fehler Die angegebene Adresse konnte nicht bestätigt werden. Verwenden Sie das Feld path, um anzugeben, ob es sich um die Versand- oder Rechnungsadresse handelt. Beispiel unten
missing_fulfillment_info Fehler Erforderliche Informationen zur Auftragsausführung fehlen. Verwenden Sie das Feld path, um das fehlende Feld anzugeben.
eligibility_invalid Fehler Der Nutzer oder die Bestellung ist für die Aktion nicht berechtigt. Dies ist ein Standard-UCP-Fehlercode. Verwenden Sie das Feld path für Details.
discount_code_invalid Warnung Der Rabattcode ist ungültig. Code nicht gefunden oder fehlerhaft.
discount_code_expired Warnung Der Rabattcode ist abgelaufen.
discount_code_already_applied Warnung Der Rabattcode wurde bereits angewendet.
discount_code_combination_disallowed Warnung Der Rabattcode kann nicht mit anderen Angeboten kombiniert werden.
discount_code_user_not_logged_in Warnung Der Nutzer muss angemeldet sein, um den Rabattcode verwenden zu können.
discount_code_user_ineligible Warnung Der Nutzer ist nicht berechtigt, den Rabattcode zu verwenden.
missing_billing_info Fehler Erforderliche Abrechnungsinformationen fehlen. Verwenden Sie das Feld path, um die fehlenden Felder für die Rechnungsadresse anzugeben. Beispiel unten
identity_required Fehler Für den angeforderten Vorgang ist eine Nutzeridentität erforderlich, die jedoch nicht vorhanden, ungültig, abgelaufen oder nicht überprüfbar war. Verwenden Sie für REST den Statuscode 401. Beispiel unten
insufficient_scope Fehler Das Nutzeridentitätstoken ist gültig, enthält aber nicht die für den Vorgang erforderlichen Bereiche. Verwenden Sie für REST den Statuscode 403. Beispiel unten
payment_declined Fehler Die Zahlung wurde vom Kartenaussteller oder der Bank abgelehnt. Gründe dafür können z. B. unzureichendes Guthaben, Betrugsverdacht oder Probleme mit der Karte sein. Beispiel unten
payment_failed Fehler Die Zahlung ist aufgrund eines technischen Problems während der Verarbeitung fehlgeschlagen, z. B. aufgrund eines Netzwerkfehlers, einer Zeitüberschreitung des Gateways oder eines Integrationsproblems. Die Bank konnte daher keine Entscheidung treffen.
payment_ineligible Fehler Die ausgewählte Zahlungsmethode wird nicht akzeptiert. Geeignet für Fälle, in denen der Nutzer eine andere Zahlungsmethode ausprobieren muss.
rejected_for_fraud Fehler Die Bestellung wurde aufgrund von mutmaßlichem Betrug abgelehnt. Beispiel unten

Beispiele für Fehlercodes

Dieser Abschnitt enthält JSON-Beispiele für das messages-Array für bestimmte Fehlercodes.

out_of_stock

Direktkauf eines einzelnen Artikels:

{
  "type": "error",
  "severity": "unrecoverable",
  "code": "out_of_stock",
  "content": "Unfortunately, the item 'Example Product 1' is out of stock."
}

Zahlung für mehrere Artikel:

Verwenden Sie das Feld path, um den Index des jeweiligen Artikels anzugeben, der nicht auf Lager ist.

{
  "type": "error",
  "severity": "recoverable",
  "code": "out_of_stock",
  "path": "$.checkout.line_items[1]",
  "content": "The item 'Example Product 2' is out of stock. Remove it from your cart to continue."
}

quantity_invalid_limit_exceeded

{
  "type": "error",
  "severity": "recoverable",
  "code": "quantity_invalid_limit_exceeded",
  "path": "$.checkout.line_items[0].quantity",
  "content": "The requested quantity for 'Example Product 2' exceeds the maximum allowed limit of 5."
}

totals_changed

{
  "type": "warning",
  "code": "totals_changed",
  "path": "$.totals[2]",
  "content": "Shipping cost has changed."
}

missing_buyer_info

{
  "type": "error",
  "severity": "recoverable",
  "code": "missing_buyer_info",
  "path": "$.buyer.first_name",
  "content": "Missing buyer first name."
}

address_undeliverable

Einschränkung auf Bestellebene (z.B. Postleitzahl nicht unterstützt):

{
  "type": "error",
  "severity": "recoverable",
  "code": "address_undeliverable",
  "content": "Delivery is not supported for the provided zipcode."
}

Einschränkung auf Artikelebene:

Verwenden Sie das Feld path, um einen bestimmten Artikel anzugeben, der nicht an das ausgewählte Ziel geliefert werden kann (z.B. aufgrund von Verboten in bestimmten Bundesstaaten).

{
  "type": "error",
  "severity": "recoverable",
  "code": "address_undeliverable",
  "path": "$.checkout.line_items[1]",
  "content": "The item 'Example Product 2' cannot be delivered to the selected address."
}

address_unverifiable

Rechnungsadresse:

{
  "type": "error",
  "severity": "recoverable",
  "code": "address_unverifiable",
  "path": "$.payment.instruments[0].billing_address",
  "content": "Invalid billing address. Update the address before trying again."
}

Adresse für die Auftragsausführung:

{
  "type": "error",
  "severity": "recoverable",
  "code": "address_unverifiable",
  "path": "$.fulfillment.methods[0].destinations[0]",
  "content": "The fulfillment address couldn't be verified. Update the address and try again."
}

missing_billing_info

Verwenden Sie das Feld path, um fehlende Felder in der Rechnungsadresse anzugeben.

{
  "type": "error",
  "severity": "recoverable",
  "code": "missing_billing_info",
  "path": "$.payment.instruments[0].billing_address.street_address",
  "content": "Missing billing street address."
}

identity_required

In der REST API sollte dieser Fehler mit dem HTTP-Statuscode 401 zurückgegeben werden.

{
  "type": "error",
  "severity": "requires_buyer_review",
  "code": "identity_required",
  "content": "User identity is required to access order history."
}

insufficient_scope

In der REST API sollte dieser Fehler mit dem HTTP-Statuscode 403 zurückgegeben werden.

{
  "type": "error",
  "severity": "requires_buyer_review",
  "code": "insufficient_scope",
  "content": "This operation requires scopes: dev.ucp.shopping.order:read, dev.ucp.shopping.order:manage"
}

Fehler beim Zahlungsvorgang

payment_declined

{
  "type": "error",
  "severity": "recoverable",
  "code": "payment_declined",
  "path": "$.payment.instruments[0]",
  "content": "Payment was declined by the issuer. Try a different payment method or contact your bank."
}

rejected_for_fraud

{
  "type": "error",
  "severity": "recoverable",
  "code": "rejected_for_fraud",
  "path": "$.payment.instruments[0]",
  "content": "The order was rejected due to suspected fraud. Try a different payment method."
}