Hata kodları

Bu sayfada, Evrensel Ticaret Protokolü (UCP) kullanarak Google ile entegrasyon yaparken API yanıtlarınızda döndürmeniz gereken standart hata kodları özetlenmektedir. Tutarlı hata kodları, iletişimin net olmasını sağlar ve Google'ın farklı senaryoları uygun şekilde ele almasına yardımcı olur.

Bir işletme hatası oluştuğunda API'niz, tablodaki uygun code değerini içeren bir yanıt mesajı döndürmelidir. Bazı hata kodları için yanıttaki messages dizisinde belirli bir JSON yapısı kullanılması önerilir. Bu örnekler, tablonun altındaki Hata kodu örnekleri bölümünde verilmiştir. Bu örneklerde, istek veya yanıt nesnesindeki hatanın konumu hakkında daha ayrıntılı bilgi sağlamak için path alanını kullanmanız gerekir.

Hata İşleme

Hataların nasıl bildirileceği hata türüne bağlıdır:

  • Protokol/Sunucu Hataları:

    • Hatalı biçimlendirilmiş istekler, kimlik doğrulama hataları veya sunucunun kullanılamaması gibi sorunlar için standart HTTP durum kodlarını (ör. istemci hataları için 4xx, sunucu hataları için 5xx) kullanın.
    • Ayrıntılar için UCP Spesifikasyonu'na bakın.
  • İş mantığı hataları/uyarıları:

    • HTTP 200 OK durumunu döndürün. Bu, ödeme ağ geçidiniz 4xx veya 5xx hatası döndürse bile ödeme reddetme ve sahtekarlık reddetme işlemlerini içerir.
    • JSON yanıt gövdesindeki messages dizisinde sorunu açıklayın.
    • messages dizisindeki her nesne şunları içermelidir:
      • type: "error" veya "warning"
      • code: Bu kılavuzdaki standartlaştırılmış bir kod. "invalid" gibi genel veya tanınmayan kodlar kullanmayın.
      • content: İnsan tarafından okunabilen bir açıklama.
      • severity: type, "error" olduğunda zorunludur. Bu alan, hatanın nihai olup olmadığını açıkça belirtir (unrecoverable) veya hata kodunun kendisine güvenmek yerine alıcıdan sorunu düzeltmesini istemenize olanak tanır (recoverable).

Mesaj türleri: Hata ve uyarı

İleti dizisindeki type alanı, sorunun önem derecesini gösterir. UCP, iki temel tür tanımlar:

  • error: İstenen işlemin tamamlanamadığını gösterir. Platformun veya kullanıcının işlem yapması ve tekrar denemesi gerekir. message-error specification bölümüne bakın.
    • Bir hatanın nihai olup olmadığı, hata code ile değil, severity alanı (unrecoverable veya recoverable) ile belirlenir.
  • warning: İşlemin engellenmediğini ancak kullanıcıya iletilmesi gereken önemli bir durum olduğunu gösterir. Bu işlem süreci durdurmaz ancak önemli bağlam bilgileri sağlar. message-warning specification başlıklı makaleyi inceleyin.

Hata kodu referansı

Hata kodu Önerilen tür Açıklama
out_of_stock Hata Öğe kullanılamıyor. Bu durum genellikle ucp.status: “error” ile sonuçlanır. Çok öğeli ödeme işlemlerinde öğe dizinini belirtmek için path alanını kullanın. Aşağıdaki örneğe bakın.
item_unavailable Hata Öğe bulunamadı. Bu durum genellikle öğeyle ilgili hatalar için ucp.status: “error” ile sonuçlanır.
item_ineligible Hata Öğe mevcut ancak UCP kullanılarak satın alınamıyor.
quantity_invalid_limit_exceeded Hata İstenen miktar, izin verilen sınırı aşıyor. Aşağıdaki örneğe bakın.
quantity_invalid_minimum_not_met Hata İstenen miktar, gerekli minimum miktarın altında.
totals_changed Uyarı Fiyat veya diğer toplamlar son adımdan bu yana değişti. Hangi toplamın değiştiğini belirtmek için path alanını kullanın. Aşağıdaki örneğe bakın.
totals_invalid_minimum_not_met Hata Sipariş değeri, minimum koşulu karşılamıyor.
missing_buyer_info Hata Gerekli alıcı bilgileri eksik. Eksik alanı belirtmek için path alanını kullanın. Aşağıdaki örneğe bakın.
address_undeliverable Hata Bu, standart bir UCP hata kodudur. Belirli hedefi veya kısıtlanmış öğeyi belirtmek için path alanını kullanın. Aşağıdaki örneğe bakın.
address_unverifiable Hata Belirtilen adres doğrulanamadı. path alanını kullanarak adresin, sipariş işleme adresi mi yoksa fatura adresi mi olduğunu belirtin. Aşağıdaki örneğe bakın.
missing_fulfillment_info Hata Gerekli sipariş karşılama bilgileri eksik. Eksik alanı belirtmek için path alanını kullanın.
eligibility_invalid Hata Kullanıcı veya sipariş, işlem için uygun değil. Bu, standart bir UCP hata kodudur. Ayrıntılar için path alanını kullanın.
discount_code_invalid Uyarı İndirim kodu geçersiz. Kod bulunamadı veya hatalı biçimlendirilmiş.
discount_code_expired Uyarı İndirim kodunun süresi doldu.
discount_code_already_applied Uyarı İndirim kodu zaten uygulandı.
discount_code_combination_disallowed Uyarı İndirim kodu diğer tekliflerle birleştirilemez.
discount_code_user_not_logged_in Uyarı Kullanıcının indirim kodunu kullanmak için oturum açmış olması gerekir.
discount_code_user_ineligible Uyarı Kullanıcı, indirim kodunu kullanmaya uygun değil.
missing_billing_info Hata Gerekli fatura bilgileri eksik. Eksik fatura adresi alanlarını belirtmek için path alanını kullanın. Aşağıdaki örneğe bakın.
identity_required Hata İstenen işlem için kullanıcı kimliği gerekli ancak bu kimlik yok, geçersiz, süresi dolmuş veya doğrulanamıyor. REST için 401 durum kodunu kullanın. Aşağıdaki örneğe bakın.
insufficient_scope Hata Kullanıcı kimliği jetonu geçerli ancak işlem için gerekli kapsamlar eksik. REST için 403 durum kodunu kullanın. Aşağıdaki örneğe bakın.
payment_declined Hata Ödeme, kartı veren kuruluş veya banka tarafından reddedildi. Yetersiz bakiye, dolandırıcılık şüphesi veya kart sorunları bu nedenler arasında yer alabilir. Aşağıdaki örneğe bakın.
payment_failed Hata Ödeme, işleme sırasında teknik bir sorun (ör. ağ hatası, ağ geçidi zaman aşımı veya entegrasyon sorunu) nedeniyle başarısız oldu. Bu sorun, bankanın bir karara varmasını engelledi.
payment_ineligible Hata Seçilen ödeme yöntemi kabul edilmiyor. Kullanıcının farklı bir ödeme yöntemi denemesi gerektiği durumlarda uygundur.
rejected_for_fraud Hata Sipariş, sahtekarlık şüphesi nedeniyle reddedildi. Aşağıdaki örneğe bakın.

Hata kodu örnekleri

Bu bölümde, belirli hata kodları için messages dizisine yönelik JSON örnekleri verilmiştir.

out_of_stock

Tek öğeli ödeme:

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

Birden fazla öğe içeren ödeme:

Stokta olmayan belirli öğenin dizinini belirtmek için path alanını kullanın.

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

Sipariş düzeyinde kısıtlama (ör. posta kodu desteklenmiyor):

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

Öğe düzeyinde kısıtlama:

Belirli bir öğenin seçilen hedefe teslim edilemeyeceğini (ör. eyalete özgü yasaklar) belirtmek için path alanını kullanın.

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

Fatura adresi:

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

Sipariş karşılama adresi:

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

Fatura adresindeki eksik alanları belirtmek için path alanını kullanın.

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

identity_required

REST API'de bu hata, HTTP durum kodu 401 ile döndürülmelidir.

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

insufficient_scope

REST API'de bu hata, HTTP durum kodu 403 ile döndürülmelidir.

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

Ödeme hataları

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