Skip to content

Third parties

Backend berbicara ke tiga layanan luar. Frontend tidak pernah memanggil mereka langsung. Setiap layanan juga memanggil balik masuk, lewat receiver webhook terpisah.

Cara halaman ini diverifikasi

Dibaca pada 2026-09-15 dari service client backend, index.js repo webhook, dan index.js simulator.

Tiga layanan

LayananPeranBackend clientEnv base-URLWebhook masuk (backend)
Biteshipdelivery / shipmentDeliveriesService (src/deliveries/services/deliveries.service.ts)DELIVERY_BITESHIP_BASE_URLwebhooks/deliveries
DOKUpaymentPaymentsService (src/payments/services/payments.service.ts)DOKU_BASEURLwebhooks/payments
PowerBiz (WMS)warehouse / stockWmsService (src/catalogs/services/wms.service.ts)WMS_ENDPOINT_BASE_URLwebhooks/wms

Ketiganya memakai @nestjs/axios. Detail setiap alur ada di halaman fitur: Delivery, Payment, Stock (WMS).

  • Biteship — Bearer DELIVERY_BITESHIP_API_KEY. Origin diset dari DELIVERY_WAREHOUSE_ZIPCODE dan var DELIVERY_ORIGIN_*. Memanggil /v1/couriers, /v1/rates/couriers, /v1/draft_orders (+ /confirm), /v1/trackings/:id.
  • DOKUDOKU_CLIENT_ID dan DOKU_SECRET_KEY, request ditandatangani dengan HMAC-SHA256 (HMACSHA256=<base64>). DOKU_PAYMENT_DUE_DATE_MINUTE mengatur jendela pembayaran. Backend dibuat dengan rawBody: true supaya bisa memverifikasi signature webhook DOKU.
  • WMS (PowerBiz) — login saat boot (WMS_USERNAME / WMS_PASSWORD) untuk bearer token dan login ulang saat 401. Di-scope oleh WMS_BUSINESS_ID dan WMS_WAREHOUSE_ID. Method: inventory lookup, order detail, create/cancel/update order.

Simulator duduk di depan mereka di dev

Di dev, .env backend mengarahkan ketiga base URL ke https://proxy.exsport.bdt.dev/{biteship,doku,wms}. Proxy itu adalah def-exsport-3rdparty-simulator: ia meneruskan ke API asli dan bisa memaksa error per layanan.

  • Route: /biteship/*api.biteship.com, /wms/*open-api.powerbiz.asia, /doku/*api-sandbox.doku.com (masing-masing bisa di-override oleh env).
  • Toggle in-memory per layanan, dibalik di POST /simulate/:service {enable} dan ditampilkan di dashboard EJS di GET /. Saat menyala, endpoint kuncinya mengembalikan HTTP 500: Biteship /v1/draft_orders, WMS /order/create, DOKU panggilan apa pun.

Jadi "payment / delivery / WMS gagal di dev" mungkin cuma berarti simulasi error sedang menyala. Cek dashboard simulator sebelum men-debug backend.

Receiver webhook fan-out ke SNS

Callback masuk tidak mengenai backend langsung di produksi; mereka mengenai def-exsport-webhook, app Express kecil yang menerbitkan ulang setiap payload ke topic SNS:

CallbackRouteEnv topic SNS
WMS / stockPOST /inventorySNS_TOPIC_WMS_ARN
BiteshipPOST /deliverySNS_TOPIC_DELIVERY_ARN
DOKUPOST /paymentSNS_TOPIC_PAYMENT_ARN

Topic dan subscription SNS didefinisikan di stack webhook Pulumi. Route REST webhooks/* milik backend sendirilah handler yang pada akhirnya memproses event ini (langsung di dev, lewat SNS di prod).