Lewati ke konten

Error handling

Semua provider melempar ShippingSDKError — jangan biarkan raw error/response provider bocor ke consumer.

import { isRetryable, isShippingSDKError } from '@ongkir-sdk/core'
try {
const rates = await provider.getRates({ origin, destination, items })
} catch (err) {
if (isShippingSDKError(err)) {
// err.code, err.message, err.provider, err.retryable, err.providerErrorCode
if (err.retryable) return retry(provider)
}
}

Kode error

ShippingErrorCodeArti
INVALID_ORIGINOrigin tidak valid / tidak bisa di-resolve
INVALID_DESTINATIONDestination tidak valid / tidak bisa di-resolve
RATE_NOT_AVAILABLETidak ada tarif untuk kombinasi yang diminta
TRACKING_NOT_FOUNDNomor resi tidak ditemukan
PROVIDER_AUTH_FAILEDAPI key ditolak provider
PROVIDER_RATE_LIMITEDKuota/rate limit provider habis
PROVIDER_UNAVAILABLEProvider down atau error internal
WEBHOOK_SIGNATURE_INVALIDSignature webhook tidak cocok
WEBHOOK_NOT_SUPPORTEDProvider/tier tidak menyediakan webhook
CREATE_SHIPMENT_NOT_SUPPORTEDProvider/tier tidak mendukung pembuatan order
CREATE_SHIPMENT_FAILEDProvider menolak order pengiriman
UNKNOWNError lain yang belum terklasifikasi

Helper

  • isShippingSDKError(err) — guard type untuk membedakan error SDK dari error lain.
  • isRetryable(err) — keputusan retry cepat (memeriksa err.retryable).
  • SHIPPING_ERROR_CODES — daftar lengkap kode error.