Skip to content

Delivery (Biteship)

Delivery adalah Biteship. Backend mengambil rate courier, membuat draft shipment, dan melacaknya; storefront hanya menampilkan opsi courier yang dikembalikan backend.

Cara halaman ini diverifikasi

Dibaca pada 2026-09-15 dari module deliveries backend.

Backend

Module deliveries memiliki tabel deliveries (plus model non-entity couriers / shipping-methods). Ia REST-only (tidak ada di include GraphQL).

DeliveriesService (src/deliveries/services/deliveries.service.ts) adalah client Biteship. Base URL DELIVERY_BITESHIP_BASE_URL, Bearer DELIVERY_BITESHIP_API_KEY. Origin (gudang) datang dari DELIVERY_WAREHOUSE_ZIPCODE dan var DELIVERY_ORIGIN_*; courier yang tersedia dari DELIVERY_COURIER_AVAILABLE. Endpoint yang dipanggilnya:

  • /v1/couriers, /v1/rates/couriers — opsi dan harga courier (dipakai frontCouriers saat checkout).
  • /v1/draft_orders dan /v1/draft_orders/:id/confirm — membuat dan mengonfirmasi shipment.
  • /v1/trackings/:id — tracking.

Draft dibuat selama createOrder() (lihat Cart and checkout).

Callback tracking

webhook-deliveries.service.ts handleEvent memetakan status tracking Biteship ke state delivery shipped / delivered; saat delivered ia mengeset order ke completed (lihat Orders). Route masuknya adalah webhooks/deliveries; di production callback tiba lewat webhook receiver → SNS.

Storefront

Customer memilih courier di checkout lewat frontCouriers(memberCartId) (name, code, service, price, duration) lalu frontUpdateCartCourier (src/modules/shipping/components/shipping-form.tsx, src/lib/shipping/). Biteship tidak pernah disebut di frontend — opsinya adalah apa pun yang dikembalikan backend.

Hal yang perlu diwaspadai

  • Rate bergantung pada env origin. DELIVERY_ORIGIN_* atau DELIVERY_WAREHOUSE_ZIPCODE yang salah memberi opsi courier yang salah atau kosong.
  • Di dev, Biteship adalah simulator, yang bisa memaksa /v1/draft_orders jadi 500 — jadi order yang gagal di langkah delivery di dev bisa jadi toggle-nya.