Payment gateway menjadi komponen krusial dalam kesuksesan bisnis e-commerce. Artikel ini akan membahas cara mengintegrasikan berbagai payment gateway lokal populer ke website e-commerce Anda secara detail.
Payment Gateway Populer di Indonesia
- Midtrans (Dulu VERITRANS)
- Xendit
- Doku
- iPaymu
- Nicepay
1. Persiapan Integrasi
Sebelum memulai integrasi, siapkan hal-hal berikut:
- Dokumen legalitas bisnis
- Rekening bank aktif
- Website yang sudah online
- SSL Certificate (HTTPS)
2. Contoh Integrasi Midtrans
Berikut langkah-langkah integrasi Midtrans:
2.1 Instalasi Library
# PHP composer require midtrans/midtrans-php # Node.js npm install midtrans-client
2.2 Konfigurasi Dasar
// PHP require_once 'vendor/autoload.php'; \Midtrans\Config::$serverKey = 'YOUR-SERVER-KEY'; \Midtrans\Config::$isProduction = false; \Midtrans\Config::$isSanitized = true; \Midtrans\Config::$is3ds = true;
2.3 Membuat Transaksi
$params = array( 'transaction_details' => array( 'order_id' => rand(), 'gross_amount' => 10000, ), 'customer_details' => array( 'first_name' => 'Customer', 'email' => '[email protected]', 'phone' => '08111222333', ), ); $snapToken = \Midtrans\Snap::getSnapToken($params);
3. Integrasi Xendit
Langkah-langkah integrasi Xendit:
3.1 Instalasi
# PHP composer require xendit/xendit-php # Node.js npm install xendit-node
3.2 Konfigurasi Xendit
require 'vendor/autoload.php'; Xendit::setApiKey('YOUR-API-KEY'); $params = [ 'external_id' => 'demo_147580196270', 'amount' => 50000, 'description' => 'Invoice Demo #123', 'invoice_duration' => 86400, 'customer' => [ 'given_names' => 'John', 'email' => '[email protected]', 'mobile_number' => '08123123123', ] ]; $createInvoice = \Xendit\Invoice::create($params);
Tips Keamanan!
- Selalu validasi callback dengan signature
- Simpan API key di environment variables
- Gunakan HTTPS untuk semua transaksi
- Implementasi fraud detection
4. Implementasi Callback
Contoh implementasi callback handler:
// PHP - Midtrans Callback $notif = new \Midtrans\Notification(); $transaction = $notif->transaction_status; $fraud = $notif->fraud_status; if ($transaction == 'capture') { if ($fraud == 'challenge') { // TODO Set payment status in merchant's database to 'challenge' } else if ($fraud == 'accept') { // TODO Set payment status in merchant's database to 'success' } } else if ($transaction == 'cancel') { // TODO Set payment status in merchant's database to 'failure' }
5. Testing dan Debugging
Langkah-langkah testing payment gateway:
- Gunakan sandbox environment
- Test semua metode pembayaran
- Verifikasi callback handling
- Cek laporan transaksi
6. Best Practices
Rekomendasi Implementasi
- Implementasi sistem retry untuk transaksi gagal
- Logging semua transaksi
- Monitoring real-time
- Backup data transaksi secara berkala
7. Optimasi Conversion Rate
Tips meningkatkan conversion rate pembayaran:
- Tampilkan semua metode pembayaran di halaman checkout
- Implementasi one-click payment
- Optimalkan UX form pembayaran
- Sediakan panduan pembayaran yang jelas
8. Troubleshooting
Masalah Umum dan Solusi:
- Transaction Failed
- Cek koneksi internet
- Verifikasi API key
- Pe