Buat Order & Metode Pembayaran
Buat order lewat Public API dan pilih metode pembayaran lewat field payment.method (qris, virtual_account, manual_transfer, cod, snap/payment_link).
Buat order lewat `POST /orders`. Order mendukung field `payment.method` untuk memilih metode pembayaran, dan `payment.bank` opsional untuk virtual account. Nilai `billingType` dan `payment.method` bersifat sejajar — isi keduanya agar konsisten.
Metode pembayaran yang didukung
- `snap` / `payment_link` — Midtrans Snap / payment link
- `qris` — QRIS
- `virtual_account` — virtual account (butuh `payment.bank`, mis. `bni`; aktif sekarang: BNI, BRI, Permata, CIMB)
- `manual_transfer` — transfer manual ke rekening
- `cod` — bayar di tempat (cash on delivery)
Contoh QRIS
json{
"to": "+628123456789",
"billingType": "qris",
"payment": { "method": "qris" }
}Contoh Virtual Account
json{
"to": "+628123456789",
"billingType": "virtual_account",
"payment": { "method": "virtual_account", "bank": "bni" }
}Contoh COD
json{
"to": "+628123456789",
"billingType": "cod",
"payment": { "method": "cod" }
}Diskon ongkir
Body order menerima `shippingDiscount: { type, value }` untuk memotong biaya ongkir. `type` adalah `percentage` atau `fixed`. Ongkir bersih = `max(0, ongkir − diskon)` — diskon tidak pernah membuat ongkir negatif.
json{
"to": "+628123456789",
"billingType": "cod",
"payment": { "method": "cod" },
"shippingDiscount": { "type": "percentage", "value": 50 }
}Field payment.method
Field `payment.method` menormalkan metode pembayaran. Jika provider pembayaran (Midtrans) belum dikonfigurasi, response bisa berstatus `PENDING_CONFIGURATION` dengan `provider: stub` — lihat troubleshooting Midtrans belum dikonfigurasi.
BCA VA sengaja tidak menjadi opsi default karena merchant Midtrans saat ini mengembalikan 402 `Payment channel is not activated`. Setelah BCA VA aktif di Midtrans Dashboard, tambahkan `bca` ke `MIDTRANS_ENABLED_VA_BANKS`.