PayPal
Panduan menghubungkan PayPal Payment Gateway dengan Alusio untuk pembayaran internasional: Client ID, Client Secret, Webhook ID, dan mode Sandbox vs Live.
PayPal adalah salah satu payment gateway internasional tertua dan paling dikenal — mendukung pembayaran dari saldo PayPal user, kartu kredit/debit (tanpa perlu akun PayPal), serta cicilan PayPal Credit/Pay Later. Cocok untuk pembeli internasional yang sudah biasa pakai PayPal di marketplace global.
PayPal dipakai untuk pembayaran internasional (USD, EUR, GBP, dll). PayPal tidak mendukung IDR, jadi mata uang toko Alusio harus diset ke salah satu mata uang yang didukung PayPal.
Prasyarat
- Akun bisnis PayPal — daftar di paypal.com (pilih Business Account, bukan Personal).
- Akun developer di developer.paypal.com (otomatis tersedia setelah login dengan akun PayPal).
- Mata uang toko Alusio sudah diset ke mata uang yang didukung PayPal (USD, EUR, GBP, AUD, SGD, dll).
Langkah 1 — Buat Aplikasi di PayPal Developer
- Login ke developer.paypal.com.
- Buka Apps & Credentials. Toggle environment di atas: Sandbox (testing) atau Live (produksi).
- Klik Create App.
- Isi nama aplikasi (misal: Alusio Production), pilih Merchant sebagai type, lalu klik Create App.
Langkah 2 — Salin Client ID & Client Secret
- Di halaman detail aplikasi yang baru dibuat, salin:
- Client ID — string panjang yang aman dipakai di sisi frontend.
- Client Secret — klik Show lalu salin. Bersifat rahasia.
- Pastikan di section Features, opsi Accept payments tercentang (biasanya default aktif).
Catatan: Client ID/Secret Sandbox dan Live berbeda. Pastikan Anda menyalin dari environment yang sesuai dengan mode yang akan dipakai.
Langkah 3 — Atur Webhook
Webhook adalah notifikasi yang dikirim PayPal saat status pembayaran berubah (captured, denied). Tanpa ini, order tidak akan otomatis berubah ke status Paid.
- Masih di halaman detail aplikasi, scroll ke section Webhooks (atau tab Webhooks).
- Klik Add Webhook.
- Isi Webhook URL dengan (ganti
alus.iodengan domain instance Alusio Anda):https://alus.io/api/webhooks/paypal - Pilih events:
PAYMENT.CAPTURE.COMPLETEDPAYMENT.CAPTURE.DENIED
- Klik Save.
- Setelah webhook dibuat, salin Webhook ID yang muncul di daftar webhook. ID ini opsional tapi sangat disarankan untuk verifikasi signature.
- Ulangi langkah ini di environment Live setelah aplikasi Live dibuat.
Langkah 4 — Pasang Kredensial di Alusio
- Buka dashboard Alusio, masuk ke Settings → Payments.
- Pilih tab PayPal.
- Isi form:
- Client ID — dari Langkah 2.
- Client Secret — dari Langkah 2.
- Webhook ID — dari Langkah 3 (opsional, jika kosong verifikasi signature dilewati).
- Mode Live — biarkan off untuk Sandbox; aktifkan saat siap menerima pembayaran sungguhan.
- Klik Simpan Pengaturan PayPal.
Langkah 5 — Uji Transaksi Sandbox
- Pastikan Mode Live di Alusio masih off dan kredensial yang dipasang adalah Sandbox.
- Buat akun buyer Sandbox: di developer.paypal.com, buka Sandbox → Accounts dan gunakan salah satu Personal Account default (atau buat baru). Salin email + password buyer.
- Buka site Anda, tambahkan produk (mata uang USD/EUR/dll) ke cart, lanjut ke checkout, dan pilih PayPal.
- Anda akan diarahkan ke halaman PayPal Sandbox. Login dengan akun buyer Sandbox dari langkah 2 dan setujui pembayaran.
- Kembali ke Alusio, buka Orders — status order harus berubah menjadi Paid (via webhook capture).
Langkah 6 — Naik ke Mode Live
- Di developer.paypal.com, toggle ke Live, lalu ulangi Langkah 1–3 untuk membuat aplikasi Live + webhook Live.
- Pastikan akun PayPal Business Anda sudah Confirmed dan rekening bank settlement sudah ditambahkan.
- Di Alusio, ganti Client ID, Client Secret, dan Webhook ID dengan kredensial Live, lalu aktifkan toggle Mode Live.
- Simpan dan lakukan satu transaksi kecil sebagai verifikasi.
Troubleshooting
Gejala | Penyebab & Solusi |
|---|---|
Tab PayPal tidak muncul di checkout | Mata uang toko diset IDR. PayPal hanya bekerja dengan USD, EUR, GBP, AUD, SGD, dll. Ubah di Settings → Currency. |
Order tetap Pending setelah customer bayar | Webhook URL salah atau event yang dipilih tidak lengkap. Pastikan |
Error "Invalid client credentials" | Client ID/Secret tidak match dengan environment. Kredensial Sandbox tidak bisa dipakai di Live (dan sebaliknya). |
Webhook diterima tapi signature gagal diverifikasi | Webhook ID salah atau dari aplikasi yang berbeda. Pastikan Webhook ID yang dipasang berasal dari webhook yang URL-nya menunjuk ke Alusio. Atau, kosongkan field Webhook ID (Alusio akan skip verifikasi). |
Customer dibawa balik ke checkout tapi order kosong | Customer membatalkan di halaman PayPal. Cek log di Activity Dashboard PayPal untuk konfirmasi. |
Catatan Keamanan
- Client Secret bersifat rahasia — jangan tampilkan di repo publik atau frontend. Client ID aman dipakai di frontend.
- Jika Client Secret bocor: di developer.paypal.com, buka aplikasi terkait dan klik Generate New Secret, lalu update di Alusio.
- Verifikasi signature webhook PayPal (jika Webhook ID diisi) menggunakan API Verify Webhook Signature milik PayPal — Alusio menolak otomatis request yang gagal verifikasi.