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, wenntype"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
severityFeld (unrecoverableoderrecoverable) bestimmt, nicht durch den Fehlercode.
- Die Schwere eines Fehlers wird durch das
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."
}