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