Langsung ke konten utama

Ikhtisar

Dodo Payments API menggunakan kode status HTTP standar dan kode kesalahan kustom untuk menunjukkan keberhasilan atau kegagalan permintaan API. Ketika terjadi kesalahan, API mengembalikan kode status HTTP yang sesuai dan respons JSON yang berisi informasi rinci tentang kesalahan tersebut. Setiap respons kesalahan mencakup:
  • Kode status HTTP yang menunjukkan kategori umum dari kesalahan
  • Kode kesalahan spesifik yang mengidentifikasi sifat tepat dari kesalahan
  • Pesan kesalahan yang dapat dibaca manusia yang menjelaskan apa yang salah
  • Rincian tambahan tentang kesalahan jika berlaku
Memahami kode kesalahan ini dan artinya sangat penting untuk:
  • Memecahkan masalah integrasi
  • Menerapkan penanganan kesalahan yang tepat dalam aplikasi Anda
  • Memberikan umpan balik yang berarti kepada pengguna akhir
  • Mempertahankan sistem pemrosesan pembayaran yang kuat
Bagian berikut memberikan informasi rinci tentang kode status HTTP standar dan kode kesalahan spesifik yang mungkin Anda temui saat menggunakan Dodo Payments API.

Kode Kesalahan API Standar

Kode kesalahanStatus HTTPDeskripsi
400Permintaan BurukPermintaan tidak terformat dengan baik atau mengandung parameter yang tidak valid
401Tidak TerautentikasiAutentikasi gagal atau kunci API tidak valid
403DilarangKunci API tidak memiliki izin untuk mengakses sumber daya yang diminta
404Tidak DitemukanSumber daya yang diminta tidak ada
405Metode Tidak DiizinkanMetode HTTP tidak didukung untuk endpoint ini
409KonflikPermintaan bertentangan dengan keadaan saat ini dari sumber daya
422Entitas Tidak Dapat DiprosesPermintaan terformat dengan baik tetapi mengandung kesalahan semantik
429Terlalu Banyak PermintaanBatas laju terlampaui
500Kesalahan Server InternalTerjadi kesalahan yang tidak terduga di server kami
502Gerbang BurukServer menerima respons tidak valid dari server hulu
503Layanan Tidak TersediaLayanan tidak tersedia sementara
504Waktu Habis GerbangServer kehabisan waktu saat menunggu respons dari server hulu

Format Respons Kesalahan

Ketika terjadi kesalahan, API mengembalikan respons JSON dengan struktur berikut:
{
  "code": "UNSUPPORTED_COUNTRY",
  "message": "Country AI currently not supported"
}

Referensi Kode Kesalahan

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • Pemicu: Aktivasi kunci lisensi: batas baru < jumlah instance yang ada
    • Pesan: Batas aktivasi baru tidak boleh kurang dari jumlah instance saat ini
  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Pemicu: Upaya untuk menambahkan addon ke langganan berbasis penggunaan
    • Pesan: Addon dalam Langganan tidak didukung untuk Penagihan Berbasis Penggunaan
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • Pemicu: Upaya untuk menambahkan addon ke langganan sesuai permintaan
    • Pesan: Addon tidak diizinkan untuk langganan sesuai permintaan
  • BRAND_MISMATCH
    • Pemicu: Item keranjang berasal dari merek yang berbeda
    • Pesan: Semua item dalam keranjang produk harus berasal dari merek yang sama
  • BRAND_NOT_ENABLED
    • Pemicu: Merek dinonaktifkan atau tidak aktif
    • Pesan: Merek yang diberikan tidak diaktifkan
  • BRAND_SUBMISSION_NOT_ENABLED
    • Pemicu: Fitur pengajuan ulang verifikasi merek tidak diaktifkan
    • Pesan: Pengajuan ulang verifikasi merek tidak diaktifkan
  • CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Pemicu: Upaya untuk mengenakan biaya langganan yang dijadwalkan untuk dibatalkan
    • Pesan: Langganan dijadwalkan untuk dibatalkan
  • CHECKOUT_SESSION_CONSUMED
    • Pemicu: Sesi checkout telah menghasilkan pembayaran
    • Pesan: Sesi checkout telah digunakan
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Pemicu: Pembuatan kode diskon duplikat
    • Pesan: Kode Diskon sudah ada
  • DISCOUNT_CODE_EXPIRED
    • Pemicu: Kode diskon melewati tanggal expires_at
    • Pesan: Kode diskon telah kedaluwarsa
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Pemicu: Diskon digunakan kembali setelah usage_limit tercapai
    • Pesan: Batas penggunaan tidak boleh kurang dari times_used / Kode diskon mencapai batas penggunaan
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • Pemicu: Kode diterapkan pada langganan sesuai permintaan
    • Pesan: Kupon diskon tidak tersedia untuk langganan sesuai permintaan
  • DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
    • Pemicu: Kode diterapkan pada produk yang tidak terkait
    • Pesan: Kupon diskon tidak tersedia untuk produk ini
  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Pemicu: Kode yang sama item_id muncul dua kali dalam items[]
    • Pesan: item_ids duplikat ditentukan dalam array item
  • DUPLICATE_METER_IDS_IN_REQUEST
    • Pemicu: ID meter yang sama muncul beberapa kali dalam permintaan
    • Pesan: ID Meter duplikat tidak diizinkan
  • EXCHANGE_RATE_NOT_FOUND
    • Pemicu: Tidak ada tarif FX untuk pasangan mata uang from → to
    • Pesan: Tarif pertukaran tidak ditemukan untuk mengonversi dari Mata Uang ke Mata Uang
  • EXISTING_REFUND_REQUEST_PROCESSING
    • Pemicu: Permintaan pengembalian dana sebelumnya masih diproses
    • Pesan: Permintaan pengembalian dana dengan status “Menunggu” masih diproses
  • INACTIVE_LICENSE_KEY
    • Pemicu: Status kunci ≠ ACTIVE
    • Pesan: Kunci lisensi tidak aktif
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • Pemicu: Perubahan rencana pada langganan yang tidak aktif
    • Pesan: Mengubah rencana tidak didukung untuk langganan yang tidak aktif
  • INSUFFICIENT_WALLET_FUNDS
    • Pemicu: Saldo dompet < jumlah debit
    • Pesan: Dana tidak mencukupi di dompet
  • INTEGER_CONVERSION_FAILURE
    • Pemicu: Konversi integer ↔ string/desimal yang gagal di sisi server
    • Pesan: Kegagalan Konversi Integer
  • INTERNAL_SERVER_ERROR
    • Pemicu: Pengecualian yang tidak tertangkap; Anda harus mencatat detail di sisi server
    • Pesan: Tidak ada pesan publik (500 generik)
  • INVALID_DISCOUNT_CODE
    • Pemicu: Kode tidak ada / tidak berlaku
    • Pesan: Kode Diskon tidak valid / Kode Diskon tidak dapat diterapkan pada produk apa pun dalam keranjang
  • INVALID_PERCENTAGE
    • Pemicu: Jumlah persen > 100% (atau 10.000 basis poin)
    • Pesan: Jumlah persentase tidak boleh lebih dari 10000 / Jumlah kode diskon tidak boleh lebih dari 100%
  • INVALID_QUANTITY
    • Pemicu: Kuantitas tidak valid yang ditentukan untuk penetapan harga berbasis penggunaan
    • Pesan: Hanya 1 kuantitas yang diizinkan dalam produk harga berbasis penggunaan
  • INVALID_QUERY_PARAMS
    • Pemicu: Parameter kueri yang saling eksklusif / terformat buruk
    • Pesan: Parameter kueri hanya boleh berisi waktu_frame atau (mulai, akhir)
  • INVALID_REQUEST_BODY
    • Pemicu: JSON yang terformat buruk atau pelanggaran skema
    • Pesan: Badan permintaan Anda tidak valid. Silakan periksa header permintaan dan objek Anda.
  • INVALID_REQUEST_PARAMETERS
    • Pemicu: Semantik salah (misalnya, tanggal di masa lalu)
    • Pesan: Tidak dapat mengubah next_billing_date ke waktu di masa lalu
  • INVALID_SUGGESTED_PRICE
    • Pemicu: Harga PWYW < harga minimum yang diizinkan
    • Pesan: Harga yang disarankan tidak boleh lebih rendah dari harga minimum. Dalam kasus bayar sesuai keinginan, harga dianggap sebagai jumlah minimum yang diterima
  • INVALID_TAX_ID
    • Pemicu: VAT/GST/TIN gagal validasi
    • Pesan: ID Pajak tidak valid
  • LICENSE_KEY_LIMIT_REACHED
    • Pemicu: Aktivasi = batas
    • Pesan: Batas aktivasi kunci lisensi tercapai
  • LICENSE_KEY_NOT_FOUND
    • Pemicu: ID instance atau ID kunci tidak valid
    • Pesan: Instance kunci lisensi tidak ditemukan atau tidak termasuk dalam kunci lisensi ini
  • LINE_ITEM_FULLY_REFUNDED
    • Pemicu: Upaya untuk mengembalikan item baris yang sudah sepenuhnya dikembalikan
    • Pesan: Item baris telah sepenuhnya dikembalikan dan tidak dapat dikembalikan lebih lanjut.
  • LINE_ITEM_NOT_FOUND
    • Pemicu: ID item tidak menjadi bagian dari pembayaran yang dirujuk
    • Pesan: Item baris tidak ditemukan dalam pembayaran
  • LINE_ITEM_PRORATED
    • Pemicu: Pengembalian dana atau pembaruan yang dicoba pada item baris prorata
    • Pesan: Item baris tidak dapat dikembalikan karena prorata
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Pemicu: Jumlah pengembalian dana > jumlah yang dibayar (termasuk pajak)
    • Pesan: Jumlah pengembalian yang diminta untuk item baris termasuk pajak adalah yang melebihi jumlah yang dibayar
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Pemicu: Jumlah pengembalian di bawah ambang batas minimum
    • Pesan: Jumlah pengembalian yang diminta untuk item baris adalah yang terlalu rendah
  • MAXIMUM_KEYS_REACHED
    • Pemicu: Metadata / custom-fields melebihi 50 pasangan
    • Pesan: Melebihi 50 pasangan kunci-nilai
  • MERCHANT_NOT_LIVE
    • Pemicu: Bisnis masih dalam mode uji/sandbox
    • Pesan: Pedagang tidak aktif
  • METER_IS_DELETED
    • Pemicu: Upaya untuk menggunakan meter yang dihapus
    • Pesan: Meter telah dihapus
  • MISSING_ADDON_IDS
    • Pemicu: addon_id daftar kosong atau ID tidak dikenal
    • Pesan: Satu atau lebih ID produk tidak ada:
  • MISSING_METER_IDS
    • Pemicu: Daftar ID meter kosong atau berisi ID tidak valid
    • Pesan: Satu atau lebih ID meter tidak ada:
  • MISSING_PRODUCT_INFORMATION
    • Pemicu: Produk ada tetapi informasi wajib hilang
    • Pesan: Produk ada tetapi informasi wajib lainnya hilang atau tidak valid
  • NEGATIVE_BALANCE_ADJUSTMENT
    • Pemicu: Upaya untuk membuat saldo dompet negatif
    • Pesan: Saldo dompet tidak boleh dibuat negatif
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Pemicu: Setelah penyaringan, tidak ada yang tersisa
    • Pesan: Tidak ada metode pembayaran yang memenuhi syarat ditemukan
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Pemicu: Upaya untuk mengatur masa berlaku pada kunci berbasis langganan
    • Pesan: Tidak dapat mengatur tanggal kedaluwarsa untuk kunci lisensi berbasis langganan
  • NOT_FOUND
    • Pemicu: 404 generik untuk sumber daya yang hilang
    • Pesan: Item tidak ditemukan (atau lebih spesifik)
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Pemicu: Pertukaran rencana tidak diizinkan untuk sesuai permintaan
    • Pesan: Mengubah rencana tidak didukung untuk langganan sesuai permintaan
  • ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED
    • Pemicu: Bisnis memiliki fitur yang dinonaktifkan
    • Pesan: Langganan sesuai permintaan tidak diaktifkan untuk bisnis ini
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Pemicu: Upaya untuk menggunakan sesuai permintaan dengan penagihan berbasis penggunaan
    • Pesan: Langganan Sesuai Permintaan tidak didukung untuk Penagihan Berbasis Penggunaan
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Pemicu: Harga hilang untuk produk PWYW
    • Pesan: Jumlah adalah wajib untuk produk bayar sesuai keinginan
  • PAYMENT_ALREADY_REFUNDED
    • Pemicu: Pengembalian dana duplikat
    • Pesan: Pembayaran ini telah dikembalikan sebelumnya
  • PAYMENT_HAS_BEEN_REFUNDED
    • Pemicu: Pembayaran telah sepenuhnya dikembalikan
    • Pesan: ID Pembayaran telah sepenuhnya dikembalikan.
  • PAYMENT_NOT_SUCCEEDED
    • Pemicu: Upaya untuk mengembalikan/memproses pembayaran yang tidak berhasil
    • Pesan: Pembayaran yang diberikan tidak berhasil
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Pemicu: Perubahan rencana yang dicoba pada langganan yang dijadwalkan untuk dibatalkan
    • Pesan: Langganan dijadwalkan untuk dibatalkan
  • PREVIOUS_PAYMENT_PENDING
    • Pemicu: Upaya untuk membuat biaya saat sebelumnya dalam status non-terminal
    • Pesan: Tidak dapat membuat biaya baru karena pembayaran sebelumnya belum berhasil
  • PRODUCT_CART_EMPTY
    • Pemicu: Keranjang produk kosong yang diajukan
    • Pesan: keranjang_produk kosong
  • PRODUCT_IS_DELETED
    • Pemicu: Produk dihapus secara lunak
    • Pesan: Tidak ada pesan
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Pemicu: Jumlah pengembalian agregat > jumlah yang dibayar
    • Pesan: Jumlah pengembalian yang dihitung lebih besar dari jumlah yang dibayar
  • REFUND_WINDOW_EXPIRED
    • Pemicu: Di luar jendela pengembalian yang diizinkan
    • Pesan: Pengembalian tidak dapat dimulai hari setelah pembuatan pembayaran. Hubungi [email protected].
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Pemicu: Jumlah < minimum produk
    • Pesan: Jumlah tidak boleh kurang dari jumlah minimum yang ditentukan untuk produk
  • SUBSCRIPTION_EXPIRED
    • Pemicu: Penagihan melewati ends_at
    • Pesan: Langganan kedaluwarsa tidak dapat membuat biaya baru
  • SUBSCRIPTION_INACTIVE
    • Pemicu: Status ≠ ACTIVE
    • Pesan: Langganan tidak aktif
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Pemicu: Diharapkan sesuai permintaan tetapi mendapatkan interval tetap
    • Pesan: Langganan sudah tidak sesuai permintaan
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Pemicu: Upaya pembayaran langganan melebihi jumlah maksimum percobaan
    • Pesan: Batas percobaan maksimum 10 percobaan terlampaui untuk langganan ini
  • TOO_MANY_REQUESTS
    • Pemicu: 429 batas laju
    • Pesan: Tidak ada pesan
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Pemicu: Total keranjang gabungan < minimum gerbang
    • Pesan: Jumlah minimum diperlukan untuk memproses pembayaran
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Pemicu: Upaya untuk memperbarui merek utama melalui API biasa
    • Pesan: Merek utama tidak dapat diperbarui melalui endpoint API ini.
  • UNAUTHORIZED
    • Pemicu: Tidak ada kunci API atau token / ruang tidak valid
    • Pesan: Anda tidak diizinkan untuk melakukan tindakan ini
  • UNSUPPORTED_ACTION
    • Pemicu: Tindakan tidak didukung untuk jenis sumber daya
    • Pesan: Mengubah rencana untuk langganan berbasis penggunaan tidak didukung
  • UNSUPPORTED_BILLING_CURRENCY
    • Pemicu: Langganan dibatasi untuk USD
    • Pesan: Mata uang penagihan non-USD tidak didukung untuk langganan
  • UNSUPPORTED_COUNTRY
    • Pemicu: Geo belum didukung
    • Pesan: Negara saat ini tidak didukung
  • UNSUPPORTED_CURRENCY
    • Pemicu: Produk atau mata uang addon tidak valid
    • Pesan: Mata uang saat ini tidak didukung / Hanya produk USD dan INR yang didukung saat ini / Hanya USD dan INR yang didukung untuk harga addon / Hanya dapat meminta USD atau INR untuk billing_currency / Mata uang tidak didukung / Mata uang yang tidak terduga untuk langganan kartu India
  • UNSUPPORTED_DISCOUNT_TYPE
    • Pemicu: Diskon jumlah tetap, dll., belum aktif
    • Pesan: Hanya kode diskon persentase yang didukung untuk saat ini
  • UNSUPPORTED_PAYMENT_CURRENCY
    • Pemicu: Mata uang pembayaran diblokir untuk konektor
    • Pesan: Transaksi INR tidak didukung untuk transaksi ini
  • UNSUPPORTED_TAX_CATEGORY
    • Pemicu: String kategori pajak tidak dalam enum
    • Pesan: Kategori saat ini tidak didukung
  • UNSUCCESSFUL_PAYMENT_ID
    • Pemicu: ID Pembayaran merujuk pada pembayaran yang tidak berhasil
    • Pesan: ID Pembayaran memiliki status yang tidak berhasil.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Pemicu: Upaya untuk mengembalikan pembayaran dengan jumlah nol
    • Pesan: Tidak dapat mengembalikan pembayaran dengan jumlah mata uang nol

Praktik Terbaik

  1. Selalu tangani kesalahan dengan baik dalam aplikasi Anda
  2. Terapkan pencatatan kesalahan yang tepat
  3. Gunakan pesan kesalahan yang sesuai untuk pengguna akhir
  4. Terapkan logika pengulangan untuk kesalahan sementara
  5. Hubungi dukungan untuk masalah yang belum terpecahkan

Dukungan

Untuk bantuan tambahan dengan kode kesalahan atau masalah integrasi, silakan hubungi tim dukungan kami di [email protected].