Checkout Storefront API memakai konsep checkout yang sama dengan storefront bawaan Scalev. Storefront browser dapat mengambil opsi pengiriman, menghitung summary checkout, membuat guest order, membaca public order, dan membuat atau memakai ulang instruksi payment tanpa backend merchant. Storefront API dirancang agar storefront Anda dapat merender payment page sendiri. Gunakan response public order dan payment untuk menampilkan instruksi pembayaran langsung di UI Anda.Documentation Index
Fetch the complete documentation index at: https://docs.scalev.com/llms.txt
Use this file to discover all available pages before exploring further.
payment_url tetap dikembalikan sebagai fallback hosted untuk storefront yang belum mengimplementasikan renderer per metode atau untuk flow provider yang memang harus membuka hosted payment page.
Alur guest checkout
- Baca atau buat guest cart dan simpan
X-Scalev-Guest-Token. - Minta lokasi pengiriman dan postal code jika cart berisi produk fisik.
- Panggil
POST /public/checkout/shipping-options. - Biarkan buyer memilih opsi pengiriman.
- Panggil
POST /public/checkout/summary. - Panggil
POST /public/guest-checkoutdengan detail buyer dan field checkout terpilih. - Baca order dengan
GET /public/orders/{secret_slug}. - Panggil
POST /public/orders/{secret_slug}/paymentdan render data payment yang dikembalikan di payment page Anda sendiri.
Shipping options
X-Scalev-Guest-Token menemukan guest cart yang tidak kosong, Scalev memakai cart tersebut. Jika tidak, kirim direct variant items:
items[] mendukung variant. Checkout bundle didukung melalui guest cart.
Response:
Checkout summary
shipping_cost dari client.
shipping_cost: "0".
Cek kode diskon
X-Scalev-Guest-Token mengarah ke cart yang tidak kosong, API memakai cart itu sebagai sumber item. Jika tidak, kirim items[]. Kode yang tidak ditemukan atau tidak eligible tetap mengembalikan response validasi normal dengan is_eligible: false dan discount_code: null.
Guest checkout
Buat order dengan:shipping_cost dari client sebagai sumber kebenaran.
Response berisi order_secret_slug, public_order_url, dan payment_url.
Instruksi payment
Setelah checkout, panggil:- Render instruksi per metode dari
payment_method,sub_payment_method,epayment_provider, danpg_payment_info. - Untuk metode hosted oleh provider, buka URL provider dari
pg_payment_infosaat provider memang membutuhkan redirect. - Gunakan
payment_urlhanya sebagai fallback ke payment page hosted Scalev jika storefront Anda belum mendukung metode atau bentuk response provider tersebut. - Poll public order saat metode payment memerlukan data gateway yang mungkin belum langsung tersedia.
Rendering per metode
Success page bawaan Scalev adalah reference implementation untuk rendering per metode. Storefront API storefront dapat menggantikan page tersebut dengan menerapkan mappingpg_payment_info yang sama di UI sendiri.
Success page bawaan terlebih dulu membuat display model kecil dari pg_payment_info Xendit/default yang dipakai saat ini. Ini bukan bentuk response API terpisah. Ini hanya referensi jika storefront Anda ingin punya satu renderer payment, bukan branching langsung ke field payload provider:
| Display value | Field sumber |
|---|---|
qrString | pg_payment_info.qr_string atau pg_payment_info.payment_method.qr_code.channel_properties.qr_string |
vaNumber | pg_payment_info.payment_method.virtual_account.channel_properties.virtual_account_number atau pg_payment_info.payment_method.over_the_counter.channel_properties.payment_code |
vaAccountHolder | pg_payment_info.payment_method.virtual_account.channel_properties.customer_name atau pg_payment_info.payment_method.over_the_counter.channel_properties.customer_name |
invoiceUrl | pg_payment_info.invoice_url atau pg_payment_info.redirect_url |
qrImageUrl | Buat QR image dari qrString di frontend saat Anda membutuhkan gambar QR yang bisa diunduh. |
gopay, dana, linkaja, shopeepay, dan ovo, pilih action URL dari pg_payment_info.actions: mobile memprioritaskan url_type WEB atau DEEPLINK; desktop memprioritaskan MOBILE atau DEEPLINK.
Set renderUrlAs menjadi button untuk invoice, card, dan semua tampilan mobile. Untuk tampilan desktop lainnya, render URL sebagai QR code.
bank_transfer:
Tampilkan total order, rekening manual bank transfer, expiry countdown jika aktif, dan link konfirmasi pembayaran ke /o/{secret_slug}?showPaymentConfirmation=true. Hosted page mengambil rekening dari payment_accounts store dengan method bank_transfer dan metode yang masih aktif. pg_payment_info bisa berupa {}.
cod:
Tampilkan body sukses COD dan jangan tampilkan countdown payment. Payment creation dapat mengembalikan pg_payment_info kosong.
Virtual account (va):
Render bank/channel virtual account dari sub_payment_method, vaNumber, dan vaAccountHolder jika tersedia. Tampilkan tombol copy dan link tutorial pembayaran. Bank code yang dikenal mencakup BRI, MANDIRI, PERMATA, BNI, BCA, MAYBANK, CIMB, BNC, DANAMON, BSI, AG, BJB, SAHABAT_SAMPOERNA, ARTAJASA, BMI, dan BTN.
QRIS (qris):
Render QR code dari qrString. Sediakan juga aksi download QR dari qrImageUrl dan instruksi mobile untuk menyimpan atau screenshot QR image sebelum membayar di aplikasi QRIS. Jika QR gagal dibuat atau qrString tidak ada, tampilkan retry action yang memanggil public payment endpoint lagi.
E-wallet kecuali OVO (gopay, dana, linkaja, shopeepay):
Gunakan invoiceUrl dari provider actions. Di mobile, buka sebagai button/deep link. Di desktop, render invoiceUrl sebagai QR code saat renderUrlAs bernilai qr_code; selain itu buka sebagai button. Jika URL tidak bisa dipetakan, arahkan buyer kembali ke public order page.
OVO (ovo):
Tampilkan instruksi untuk mengecek aplikasi OVO yang terhubung dengan nomor telepon buyer. Komponen success bawaan tidak merender OVO melalui komponen QR e-wallet yang sama.
Card (card) dan invoice/hosted payment (invoice):
Buka invoiceUrl hasil mapping sebagai button/redirect. Hosted success page otomatis redirect ketika invoiceUrl tersedia dan renderUrlAs bernilai button.
Alfamart dan Indomaret:
Render vaNumber sebagai No Pembayaran, tampilkan vaAccountHolder jika tersedia, dan sediakan aksi copy.
Polling dan cek status
Untuk metode e-payment (gopay, card, invoice, va, qris, ovo, dana, shopeepay, linkaja, alfamart, dan indomaret), success page bawaan menunggu pg_payment_info muncul dengan refetch public order sampai 15 kali dengan jeda 1,5 detik.
Untuk order pending unpaid dengan card, invoice, shopeepay, dana, qris, linkaja, gopay, bank_transfer, indomaret, dan alfamart, success page bawaan kemudian me-refresh public order setiap 5 detik sambil menunggu konfirmasi payment.
Untuk va, bank_transfer, qris, alfamart, dan indomaret, success page bawaan juga menampilkan aksi manual “cek status pembayaran”.
Authenticated customer checkout
Endpoint customer checkout berada di:Authorization: Bearer <customer_access_token>, bukan Storefront API key. Bentuk response runtime-nya mengikuti bentuk persiapan checkout yang sama untuk addresses, payment methods, shipping options, summary, dan confirm responses.
