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 messages-Array in der Antwort empfohlen. Diese Beispiele finden Sie im Abschnitt Beispiele für Fehlercodes unter der Tabelle. 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 Standard-HTTP-Statuscodes (z.B. 4xx für Clientfehler, 5xx für Serverfehler) für Probleme wie fehlerhafte Anfragen, Authentifizierungsfehler oder Serverausfälle.
    • 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 nachgelagertes Zahlungs-Gateway einen 4xx- oder 5xx-Fehler zurückgibt.
    • Beschreiben Sie das Problem im messages-Array 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 nicht erkannten Codes wie "invalid".
      • content: Eine für Menschen lesbare Beschreibung.
      • severity: Erforderlich, wenn type "error" ist. In diesem Feld wird explizit angegeben, ob der Fehler schwerwiegend (unrecoverable) ist, oder Sie können den Käufer auffordern, das Problem zu beheben (recoverable), anstatt sich auf den Fehlercode selbst zu verlassen.

Nachrichtentypen: Fehler und Warnung

Das Feld type im Nachrichten-Array gibt den Schweregrad des Problems an. UCP definiert zwei Haupttypen:

  • 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 Nachrichtenfehler.
    • Die Schwere eines Fehlers wird durch das severity Feld (unrecoverable oder recoverable) bestimmt, nicht durch den Fehler code.
  • warning: Gibt an, dass der Vorgang nicht blockiert wurde, aber es gibt etwas Wichtiges, das dem Nutzer mitgeteilt werden sollte. Dadurch wird der Prozess nicht angehalten, aber wichtiger Kontext bereitgestellt. Weitere Informationen finden Sie in der Spezifikation für Nachrichtenwarnungen.

Fehlercode-Referenz

Fehlercode Empfohlener Typ Beschreibung
out_of_stock Fehler Artikel ist nicht verfügbar. Dies führt in der Regel zu ucp.status: “error”. Verwenden Sie das Feld path, um den Artikelindex bei Checkouts mit mehreren Artikeln anzugeben. Siehe Beispiel unten.
item_unavailable Fehler Artikel konnte nicht gefunden werden. Dies führt in der Regel zu ucp.status: “error” für diese artikelbezogenen Fehler.
item_ineligible Fehler Artikel ist vorhanden, kann aber nicht mit UCP gekauft werden.
quantity_invalid_limit_exceeded Fehler Die angeforderte Menge überschreitet das zulässige Limit. Siehe Beispiel unten.
quantity_invalid_minimum_not_met Fehler Die angeforderte Menge liegt unter dem erforderlichen Minimum.
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. Siehe Beispiel unten.
totals_invalid_minimum_not_met Fehler Der Bestellwert erfüllt nicht die Mindestanforderung.
missing_buyer_info Fehler Erforderliche Käuferinformationen fehlen. Verwenden Sie das Feld path, um das fehlende Feld anzugeben. Siehe 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. Siehe 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 Liefer- oder Rechnungsadresse handelt. Siehe Beispiel unten.
missing_fulfillment_info Fehler Erforderliche Informationen zur Auftragsabwicklung fehlen. Verwenden Sie das Feld path, um das fehlende Feld anzugeben.
eligibility_invalid Fehler Nutzer oder Bestellung sind 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 zu verwenden.
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 der Rechnungsadresse anzugeben. Siehe Beispiel unten.
identity_required Fehler Die Nutzeridentität ist für den angeforderten Vorgang erforderlich, war aber nicht vorhanden, ungültig, abgelaufen oder konnte nicht bestätigt werden. Verwenden Sie für REST den Statuscode 401. Siehe 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. Siehe Beispiel unten.
payment_declined Fehler Die Zahlung wurde vom Kartenaussteller oder der Bank abgelehnt. Gründe können unzureichendes Guthaben, Betrugsverdacht oder Kartenprobleme sein. Siehe Beispiel unten.
payment_failed Fehler Die Zahlung ist aufgrund eines technischen Problems während der Verarbeitung fehlgeschlagen, z. B. eines Netzwerkfehlers, eines Gateway-Timeouts oder eines Integrationsproblems, das die Bank daran gehindert hat, eine Entscheidung zu 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 Betrugsverdacht abgelehnt. Siehe Beispiel unten.

Beispiele für Fehlercodes

In diesem Abschnitt finden Sie JSON-Beispiele für das messages-Array für bestimmte Fehlercodes.

out_of_stock

Checkout mit einem Artikel:

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

Checkout mit mehreren Artikeln:

Verwenden Sie das Feld path, um den Index des 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 Bestellungsebene (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. staatsspezifische Verbote).

{
  "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."
}

Lieferadresse:

{
  "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."
}