Halaman ini menguraikan kode error kanonis yang harus Anda kembalikan dalam respons API saat berintegrasi dengan Google menggunakan Universal Commerce Protocol (UCP). Kode error yang konsisten memastikan komunikasi yang jelas dan membantu Google menangani berbagai skenario dengan tepat.
Saat terjadi error bisnis, API Anda harus menampilkan pesan respons yang
mencakup code yang sesuai dari tabel. Untuk beberapa kode error, struktur JSON tertentu direkomendasikan untuk array messages dalam respons. Contoh ini disediakan di bagian Contoh kode error di bawah tabel. Dalam contoh ini, Anda harus menggunakan kolom path untuk memberikan
informasi yang lebih spesifik tentang lokasi error dalam objek permintaan atau
respons.
Penanganan Error
Cara melaporkan error bergantung pada jenis error:
Error Protokol/Server:
- Gunakan kode status HTTP standar (misalnya, 4xx untuk error klien, 5xx untuk error server) untuk masalah seperti permintaan yang salah format, kegagalan autentikasi, atau server tidak tersedia.
- Lihat Spesifikasi UCP untuk mengetahui detailnya.
Error/Peringatan Logika Bisnis:
- Menampilkan status HTTP 200 OK. Hal ini mencakup penolakan pembayaran dan penolakan penipuan, meskipun gateway pembayaran hilir Anda menampilkan error 4xx atau 5xx.
- Jelaskan masalah dalam array
messagesdi isi respons JSON. - Setiap objek dalam array
messagesharus menyertakan:type:"error"atau"warning"code: Kode standar dari panduan ini. Jangan gunakan kode umum atau tidak dikenal seperti"invalid".content: Deskripsi yang dapat dibaca manusia.severity: Diperlukan jikatypeadalah"error". Kolom ini secara eksplisit menunjukkan apakah error bersifat fatal (unrecoverable) atau memungkinkan Anda meminta pembeli untuk memperbaiki masalah (recoverable), bukan mengandalkan kode error itu sendiri.
Jenis pesan: Error versus peringatan
Kolom type dalam array pesan menunjukkan tingkat keparahan masalah. UCP
menentukan dua jenis utama:
error: Menunjukkan bahwa operasi yang diminta tidak dapat diselesaikan. Platform atau pengguna mungkin perlu mengambil tindakan dan mencoba lagi. Lihat spesifikasi message-error.- Sifat terminal error ditentukan oleh kolom
severity(unrecoverableataurecoverable), bukan errorcode.
- Sifat terminal error ditentukan oleh kolom
warning: Menunjukkan bahwa operasi tidak diblokir, tetapi ada sesuatu yang penting yang harus dikomunikasikan kepada pengguna. Hal ini tidak menghentikan proses, tetapi memberikan konteks penting. Lihat spesifikasi message-warning.
Referensi kode error
| Kode error | Jenis yang direkomendasikan | Deskripsi |
|---|---|---|
out_of_stock |
Error | Item tidak tersedia. Hal ini biasanya menghasilkan ucp.status: “error”. Gunakan kolom path untuk menunjukkan indeks item dalam checkout multi-item. Lihat contoh di bawah. |
item_unavailable |
Error | Item tidak dapat ditemukan. Hal ini biasanya menghasilkan ucp.status: “error” untuk error terkait item ini. |
item_ineligible |
Error | Item ada, tetapi tidak dapat dibeli menggunakan UCP. |
quantity_invalid_limit_exceeded |
Error | Jumlah yang diminta melebihi batas yang diizinkan. Lihat contoh di bawah. |
quantity_invalid_minimum_not_met |
Error | Jumlah yang diminta lebih rendah dari jumlah minimum yang diperlukan. |
totals_changed |
Peringatan | Harga atau total lainnya telah berubah sejak langkah terakhir. Gunakan kolom path untuk menunjukkan total yang berubah. Lihat contoh di bawah. |
totals_invalid_minimum_not_met |
Error | Nilai pesanan tidak memenuhi persyaratan minimum. |
missing_buyer_info |
Error | Informasi pembeli yang diperlukan tidak ada. Gunakan kolom path untuk menentukan kolom yang tidak ada. Lihat contoh di bawah. |
address_undeliverable |
Error | Ini adalah kode error UCP standar. Gunakan kolom path untuk menunjukkan tujuan tertentu atau item yang dilarang. Lihat contoh di bawah. |
address_unverifiable |
Error | Alamat yang diberikan tidak dapat diverifikasi. Gunakan kolom path untuk menunjukkan apakah alamat tersebut adalah alamat penagihan atau pengiriman. Lihat contoh di bawah. |
missing_fulfillment_info |
Error | Informasi pemenuhan pesanan yang diperlukan tidak ada. Gunakan kolom path untuk menentukan kolom yang tidak ada. |
eligibility_invalid |
Error | Pengguna atau pesanan tidak memenuhi syarat untuk tindakan tersebut. Ini adalah kode error UCP standar. Gunakan kolom path untuk detailnya. |
discount_code_invalid |
Peringatan | Kode diskon tidak valid. Kode tidak ditemukan atau format salah. |
discount_code_expired |
Peringatan | Masa berlaku kode diskon telah berakhir. |
discount_code_already_applied |
Peringatan | Kode diskon sudah diterapkan. |
discount_code_combination_disallowed |
Peringatan | Kode diskon tidak dapat digabungkan dengan penawaran lainnya. |
discount_code_user_not_logged_in |
Peringatan | Pengguna harus sedang login untuk menggunakan kode diskon. |
discount_code_user_ineligible |
Peringatan | Pengguna tidak memenuhi syarat untuk menggunakan kode diskon. |
missing_billing_info |
Error | Informasi penagihan yang diperlukan tidak ada. Gunakan kolom path untuk menentukan kolom alamat penagihan yang tidak ada. Lihat contoh di bawah. |
identity_required |
Error | Identitas pengguna diperlukan untuk operasi yang diminta, tetapi tidak ada, tidak valid, telah berakhir, atau tidak dapat diverifikasi. Untuk REST, gunakan kode status 401. Lihat contoh di bawah. |
insufficient_scope |
Error | Token identitas pengguna valid, tetapi tidak memiliki cakupan yang diperlukan oleh operasi. Untuk REST, gunakan kode status 403. Lihat contoh di bawah. |
payment_declined |
Error | Pembayaran ditolak oleh penerbit kartu atau bank. Alasannya dapat mencakup dana tidak mencukupi, dugaan penipuan, atau masalah kartu. Lihat contoh di bawah. |
payment_failed |
Error | Pembayaran gagal karena masalah teknis selama pemrosesan—seperti error jaringan, waktu tunggu gateway habis, atau masalah integrasi—yang mencegah bank mencapai keputusan. |
payment_ineligible |
Error | Metode pembayaran yang dipilih tidak diterima. Cocok untuk kasus saat pengguna perlu mencoba metode pembayaran lain. |
rejected_for_fraud |
Error | Pesanan ditolak karena diduga penipuan. Lihat contoh di bawah. |
Contoh kode error
Bagian ini memberikan contoh JSON untuk array messages untuk kode error
tertentu.
out_of_stock
Checkout satu item:
{
"type": "error",
"severity": "unrecoverable",
"code": "out_of_stock",
"content": "Unfortunately, the item 'Example Product 1' is out of stock."
}
Pembayaran multi-item:
Gunakan kolom path untuk menunjukkan indeks item tertentu yang kehabisan
stok.
{
"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
Pembatasan tingkat pesanan (misalnya, kode pos tidak didukung):
{
"type": "error",
"severity": "recoverable",
"code": "address_undeliverable",
"content": "Delivery is not supported for the provided zipcode."
}
Pembatasan tingkat item:
Gunakan kolom path untuk menunjukkan item tertentu yang tidak dapat dikirim ke
tujuan yang dipilih (misalnya, larangan khusus negara bagian).
{
"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
Alamat penagihan:
{
"type": "error",
"severity": "recoverable",
"code": "address_unverifiable",
"path": "$.payment.instruments[0].billing_address",
"content": "Invalid billing address. Update the address before trying again."
}
Alamat pemenuhan pesanan:
{
"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
Gunakan kolom path untuk menentukan kolom yang tidak ada dalam alamat penagihan.
{
"type": "error",
"severity": "recoverable",
"code": "missing_billing_info",
"path": "$.payment.instruments[0].billing_address.street_address",
"content": "Missing billing street address."
}
identity_required
Di REST API, error ini harus ditampilkan dengan kode status HTTP 401.
{
"type": "error",
"severity": "requires_buyer_review",
"code": "identity_required",
"content": "User identity is required to access order history."
}
insufficient_scope
Di REST API, error ini harus ditampilkan dengan kode status HTTP 403.
{
"type": "error",
"severity": "requires_buyer_review",
"code": "insufficient_scope",
"content": "This operation requires scopes: dev.ucp.shopping.order:read, dev.ucp.shopping.order:manage"
}
Error pembayaran
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."
}