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
messagesdizisinde sorunu açıklayın. messagesdizisindeki 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
codeile değil,severityalanı (unrecoverableveyarecoverable) ile belirlenir.
- Bir hatanın nihai olup olmadığı, hata
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."
}