Skip to main content
Scalev menangani pembayaran kursus (e-payment, transfer, webhook status). Dev lokal bisa pakai PAYMENT_PROVIDER=manual tanpa Scalev. Dashboard: app.scalev.id
Docs: docs.scalev.com · developers.scalev.id

Env di project

PAYMENT_PROVIDER=scalev          # atau manual untuk dev
SCALEV_API_KEY=sk_...
SCALEV_WEBHOOK_SECRET=...
SCALEV_STORE_UNIQUE_ID=store_...
SCALEV_VARIANT_UNIQUE_ID=variant_...           # opsional per produk
SCALEV_BUNDLE_PRICE_OPTION_UNIQUE_ID=bpo_...   # opsional bundle
SCALEV_BASE_URL=https://api.scalev.com

Setup

1

Akun bisnis Scalev

Daftar / login app.scalev.id — setup toko (store) dan produk/variant harga.
2

API key bisnis

Dashboard developer → buat Business API key (bearer token).
Docs auth: Authorization: Bearer <token> untuk route /v3/...
3

Ambil store unique id

Dari API list store atau dashboard — masukkan ke SCALEV_STORE_UNIQUE_ID
4

Webhook

  1. Di Scalev, subscribe event: order.payment_status_changed, order.status_changed, dll.
  2. URL webhook production: https://app.sertifikasitrainer.com/api/... (endpoint webhook di API)
  3. Simpan secret ke SCALEV_WEBHOOK_SECRET — verifikasi signature di handler
Docs: Webhook events
5

Mapping variant/bundle

Setiap tier/kelas di TrainerHub perlu variant_unique_id atau bundle_price_option_unique_id yang match produk di Scalev.
6

Dev tanpa Scalev

# .env.development.local
PAYMENT_PROVIDER=manual
MANUAL_PAYMENT_URL=https://...
./thub env merge → checkout manual tanpa hit API Scalev.

Alur order (ringkas)

Contoh URL pembayaran setelah order dibuat:
https://app.scalev.id/order/public/<secret_slug>/success
Docs: Membuat order · API v3 pendahuluan

Troubleshooting

MasalahSolusi
Pembayaran tidak updateCek webhook URL + SCALEV_WEBHOOK_SECRET
401 ke APISCALEV_API_KEY invalid atau expired
Harga minimum errorKonfigurasi tier di admin + mapping variant
Dev error ScalevOverride PAYMENT_PROVIDER=manual di dev
Ganti API key / DB baruTier masih pegang store lama → ./thub scalev resync — lihat DB baru + Scalev resync
Not Found saat ensure-scalevSCALEV_STORE_UNIQUE_ID di tier ≠ toko di key baru — resync