Ringkasan
Scalev menggunakan OAuth 2.0 Authorization Code dengan PKCE. Alur ini terbagi ke dua permukaan:- langkah otorisasi yang menghadap merchant dimulai di halaman authorize frontend Scalev
- endpoint token, introspection, revocation, dan installation berada di permukaan API
/v3/oauth/*
- Daftarkan aplikasi Anda ke Scalev
- Buat parameter PKCE
- Redirect browser merchant ke halaman authorize Scalev
- Merchant masuk dan menyetujui aplikasi Anda
- Backend Anda menerima authorization code
- Backend Anda menukar code tersebut dengan token
- Backend Anda menggunakan access token untuk memanggil API Scalev
/v3 - Backend Anda melakukan refresh, introspection, atau revoke token sesuai kebutuhan
Halaman authorize adalah rute frontend, bukan endpoint API untuk mesin. Halaman ini sengaja dipisahkan dari kontrak API /v3.
URL
URL Otorisasi Frontend
Base URL API
Langkah 0: Daftarkan dan Siapkan Aplikasi Anda
Sebelum merchant dapat menginstal aplikasi Anda, buat dan konfigurasi aplikasi OAuth Anda di Scalev. Field aplikasi penting meliputi:client_idclient_secretredirect_urimanage_urlopsional- scope yang diminta
- pengaturan webhook opsional
- tag billing opsional
- IP allowlist opsional
redirect_uriharus sama persisclient_secretharus tetap berada di sisi server- jika aplikasi Anda menggunakan event webhook, konfigurasi pengaturan webhook aplikasi dengan benar
- jika aplikasi Anda mendukung link launch merchant dari Scalev, atur
manage_url - instalasi merchant diblokir sampai aplikasi terverifikasi
Langkah 1: Buat Parameter PKCE
Sebelum me-redirect merchant, buat:code_verifiercode_challengeyang diturunkan dari verifier tersebut menggunakan SHA-256 dan encoding Base64 URL
Contoh Code Verifier (JavaScript)
Contoh Code Challenge (JavaScript)
code_verifier dengan aman. Anda akan membutuhkannya saat pertukaran token.
Langkah 2: Redirect Merchant ke Scalev
Redirect browser merchant ke:| Parameter | Wajib | Deskripsi |
|---|---|---|
client_id | Ya | Client ID aplikasi OAuth Anda |
redirect_uri | Ya | Harus sama persis dengan redirect URI yang dikonfigurasi |
response_type | Ya | Harus code |
state | Ya | Nilai acak perlindungan CSRF yang dibuat oleh aplikasi Anda |
code_challenge | Ya | Hash SHA-256 dari code verifier yang di-encode dengan Base64 URL |
code_challenge_method | Ya | Harus S256 |
- PKCE wajib digunakan
- hanya
S256yang diterima - entrypoint authorize adalah URL frontend, bukan API
/v3 - jika merchant belum masuk, Scalev akan membawa mereka melalui login lalu mengembalikannya ke halaman authorize dengan parameter query OAuth yang sama
Opsional: Ambil Metadata Aplikasi Publik Sebelum Redirect
Jika Anda ingin melakukan preflight atau menampilkan metadata aplikasi dari backend, panggil:client_idnamedescriptionlogo_urlhomepage_urlredirect_uri
Langkah 3: Merchant Meninjau dan Menyetujui Aplikasi
Di halaman authorize Scalev, merchant dapat meninjau dan menyetujui:- identitas aplikasi
- scope yang diminta
- izin webhook, jika berlaku
- persetujuan tag billing, jika berlaku
redirect_uri yang Anda konfigurasi.
Langkah 4: Terima Authorization Code
Setelah disetujui, callback backend Anda menerima:- verifikasi
stateyang dikembalikan - segera tukarkan code tersebut
- hanya alur authorization-code
- TTL code adalah 10 menit
- setiap code hanya dapat ditukar satu kali
Langkah 5: Tukarkan Code dengan Token
Dari backend Anda, tukarkan code di:| Field | Deskripsi |
|---|---|
access_token | Token yang digunakan untuk permintaan API /v3 terautentikasi |
refresh_token | Token yang digunakan untuk memperoleh access token baru |
token_type | Selalu Bearer |
expires_in | Masa berlaku access token dalam detik |
Langkah 6: Gunakan Access Token
Gunakan access token di headerAuthorization:
/v3 yang diotorisasi merchant dan sesuai dengan scope yang diberikan.
Pemeriksaan Awal yang Berguna
Token Introspection
Snapshot Status Instalasi
authorized_business_idclient_idis_activeis_enabledgranted_scopeswebhook_statusgranted_webhook_eventsapproved_billing_tagsmanage_launch_availableupdated_at
Langkah 7: Refresh Access Token
Ketika access token kedaluwarsa, gunakan refresh token:- selalu ganti access token dan refresh token setelah refresh berhasil
- pertukaran refresh-token adalah bagian dari alur
/v3/oauth/token - jika instalasi dinonaktifkan atau dicabut, refresh dapat gagal
Siklus Hidup Token
Perilaku saat ini:- TTL access token: 1 jam
- TTL refresh token: 30 hari
Revocation Token
Untuk mencabut token:token_type saat ini adalah:
accessrefresh
- HTTP
204 No Content
Opsional: Alur Merchant Manage Launch
Jika aplikasi Anda mendefinisikanmanage_url, Scalev dapat meluncurkan merchant ke aplikasi Anda dengan launch_token yang berumur singkat.
Tukarkan token tersebut dari backend Anda dengan:
/v3/oauth/installation/status.
Catatan penting:
launch_tokenbersifat sekali pakai dan berumur singkat- token ini bukan access token
- tidak ada secret manage-link bersama; backend Anda mengautentikasi pertukaran dengan
client_iddanclient_secret
Praktik Terbaik
- Redirect merchant ke halaman authorize frontend, bukan ke endpoint API backend
/v2. - Buat PKCE verifier dan challenge baru untuk setiap percobaan instalasi.
- Validasi
statepada setiap callback. - Simpan
client_secret, access token, dan refresh token hanya di server. - Gunakan hanya scope, event webhook, dan tag billing yang benar-benar dibutuhkan aplikasi Anda.
- Perlakukan
redirect_urisebagai nilai yang harus sama persis. - Gunakan
/v3/oauth/installation/statussaat Anda membutuhkan snapshot instalasi merchant yang otoritatif. - Gunakan
/v3/oauth/introspectuntuk diagnostik token runtime. - Tangani instalasi yang dinonaktifkan secara terpisah dari instalasi yang dicabut.
Penanganan Error
Endpoint OAuth dapat mengembalikan error seperti:| Kode Error | Deskripsi |
|---|---|
invalid_request | Parameter permintaan hilang atau formatnya salah |
invalid_client | Autentikasi client gagal |
invalid_grant | Authorization code, refresh token, atau PKCE verifier tidak valid atau kedaluwarsa |
unauthorized_client | Client tidak diizinkan menggunakan grant type yang diminta |
server_error | Kegagalan sisi server yang tidak terduga |
invalid_grantketika code verifier tidak cocokinvalid_requestketika parameter PKCE wajib hilang atau formatnya salah

