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