Ingin terima pembayaran online di website PHP-mu? Simak panduan lengkap cara integrasi Xendit menggunakan API. Mulai dari setup akun, generate API key, sampai contoh kode PHP untuk QRIS dan Virtual Account.
Punya website berbasis PHP untuk toko online, layanan digital, atau sistem pemesanan? Tapi masih repot urus pembayaran manual? Sudah saatnya kamu mengotomatisasi proses pembayaran dengan integrasi Xendit, salah satu payment gateway lokal terbaik di Indonesia.
Berbeda dengan plugin WordPress atau WooCommerce, mengintegrasikan Xendit ke website PHP murni memang butuh sedikit sentuhan teknis—karena kamu akan bekerja langsung dengan API (Application Programming Interface). Tapi tenang, meskipun terdengar menyeramkan, prosesnya sebenarnya cukup terstruktur dan bisa dipelajari, bahkan oleh developer pemula.
Di artikel ini, saya akan bimbing kamu langkah demi langkah, dari nol sampai website PHP-mu bisa terima pembayaran otomatis via transfer bank, QRIS, atau e-wallet. Saya juga sertakan contoh kode siap pakai yang bisa kamu modifikasi sesuai kebutuhan.
Kenapa Pilih Xendit untuk Website PHP?
Sebelum masuk ke kode, kenapa Xendit layak jadi pilihan?
- ✅ API yang stabil dan dokumentasi lengkap dalam Bahasa Indonesia
- ✅ Dukungan berbagai metode bayar: Virtual Account, QRIS, GoPay, OVO, DANA, kartu kredit
- ✅ Server lokal, jadi respons cepat dan minim latency
- ✅ Cocok untuk custom website, aplikasi SaaS, atau sistem internal
- ✅ Gratis daftar, hanya bayar fee transaksi (tanpa biaya bulanan)
Jadi, kalau kamu punya website PHP custom (bukan pakai CMS), Xendit adalah solusi yang fleksibel dan andal.
Syarat & Persiapan Awal
Sebelum mulai coding, pastikan kamu sudah siapkan:
- Website PHP yang aktif
Bisa di localhost (untuk uji coba) atau di hosting publik. - Akun Xendit bisnis yang sudah diverifikasi
Belum punya? Daftar dulu di https://xendit.co, lengkapi dokumen (NIB, NPWP, KTP), dan tunggu verifikasi (1–3 hari kerja). - API Key dari Xendit
Setelah login ke dashboard.xendit.co, klik Developers > API Keys.
Kamu akan dapat:- Secret Key (Live): untuk produksi
- Secret Key (Test): untuk uji coba (wajib pakai ini dulu!)
- PHP dengan cURL aktif
Pastikan ekstensicurl
di server PHP-mu sudah aktif. Hampir semua hosting sudah menyediakannya. - Pengetahuan dasar PHP dan HTTP Request
Tidak perlu jago, tapi paham dasarPOST
,GET
, danjson_encode()
akan sangat membantu.
Langkah 1: Setup Mode Uji Coba (Sandbox)
Jangan langsung pakai mode live! Gunakan mode test dulu agar tidak ada transaksi sungguhan.
- Di dashboard Xendit, aktifkan Test Mode.
- Gunakan Test Secret Key di kode PHP kamu.
- Semua pembayaran di mode test tidak akan memotong dana sungguhan.
Langkah 2: Buat Halaman Checkout Sederhana
Contoh: kita buat form checkout untuk produk “Paket Kursus Online – Rp150.000”.
<!-- checkout.php -->
<form action="proses_bayar.php" method="POST">
<h3>Paket Kursus Online</h3>
<p>Harga: Rp150.000</p>
<input type="hidden" name="amount" value="150000">
<input type="hidden" name="product" value="Paket Kursus Online">
<button type="submit" name="pay_qris">Bayar dengan QRIS</button>
<button type="submit" name="pay_va" value="bca">Bayar dengan BCA Virtual Account</button>
</form>
Langkah 3: Proses Pembayaran via API Xendit (Contoh: QRIS)
Buat file proses_bayar.php
:
<?php
// proses_bayar.php
// Ganti dengan Test Secret Key kamu
$secretKey = "xnd_development_your_test_secret_key_here";
// Ambil data dari form
$amount = $_POST['amount'];
$externalId = "INV-" . time(); // ID unik untuk setiap transaksi
// Konfigurasi QRIS
$data = [
'external_id' => $externalId,
'type' => 'STATIC',
'callback_url' => 'https://websitekamu.com/callback.php',
'amount' => $amount
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.xendit.co/qr_codes");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_USERPWD, $secretKey . ":");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$result = json_decode($response, true);
if ($httpCode == 200) {
// Berhasil, redirect ke halaman QRIS
$qrCodeUrl = $result['qr_string'];
echo "<h2>Scan QRIS untuk Bayar</h2>";
echo "<p>Total: Rp" . number_format($amount) . "</p>";
echo "<img src='https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=" . $qrCodeUrl . "' alt='QRIS Code'>";
echo "<p>ID Transaksi: $externalId</p>";
// Simpan $externalId ke database untuk cek status nanti
} else {
echo "Gagal membuat QRIS: " . $response;
}
?>
Langkah 4: Terima Notifikasi Pembayaran (Callback)
Agar status pembayaran otomatis terupdate, kamu harus buat callback URL (webhook).
Buat file callback.php
:
<?php
// callback.php
$secretKey = "xnd_development_your_test_secret_key_here";
$json = file_get_contents('php://input');
$data = json_decode($json, true);
// Simpan log untuk debugging
file_put_contents('callback.log', $json . "\n", FILE_APPEND);
// Cek apakah pembayaran sukses
if ($data['status'] == 'SUCCESS') {
$externalId = $data['external_id'];
// Update status pesanan di database kamu
// updateStatusPesanan($externalId, 'lunas');
http_response_code(200); // Konfirmasi Xendit bahwa callback diterima
}
?>
🔐 Tips Keamanan:
- Validasi signature dari Xendit (cek dokumentasi resmi)
- Jangan langsung percaya data callback, selalu verifikasi ulang ke API Xendit
Langkah 5: Uji Coba & Go Live
- Jalankan proses pembayaran di mode test.
- Gunakan aplikasi e-wallet (DANA, GoPay) untuk scan QRIS test.
- Pastikan callback diterima dan status pesanan terupdate.
- Jika semua berjalan lancar, ganti ke Live Secret Key dan matikan mode test.
Metode Lain yang Bisa Diintegrasikan
Selain QRIS, kamu juga bisa integrasikan:
- Virtual Account (BCA, BNI, Mandiri, dll)
- E-Wallet (GoPay, OVO, DANA)
- Kartu Kredit
- Payment Links (link bayar otomatis)
Semua dokumentasi API lengkap tersedia di:
👉 https://docs.xendit.co
Penutup: PHP + Xendit = Kombinasi Andal untuk Bisnis Online
Mengintegrasikan Xendit ke website PHP memang butuh sedikit usaha, tapi hasilnya sangat sepadan. Kamu bisa membuat sistem pembayaran yang otomatis, aman, dan profesional, tanpa bergantung pada platform pihak ketiga.
Yang terpenting:
✅ Mulai dari mode test
✅ Simpan log untuk debugging
✅ Selalu verifikasi pembayaran via callback
✅ Update API key dan ikuti changelog Xendit
Dengan ini, website PHP-mu bukan cuma sekadar brosur online—tapi mesin penjualan otomatis yang bekerja 24 jam sehari.
Jadi, sudah siap upgrade sistem pembayaran bisnismu?
Ambil laptop, buka kode, dan mulai integrasi hari ini juga.
📌 Artikel ini diperbarui per Agustus 2025. Selalu rujuk ke dokumentasi resmi Xendit untuk update API terbaru.