Membangun toko online belum lengkap tanpa sistem pembayaran otomatis yang handal. Di tutorial ini, kita akan membongkar arsitektur dasar cara menghubungkan aplikasi PHP Native Anda dengan Payment Gateway terbesar di Indonesia, yaitu Midtrans.
Konsep Snap API Midtrans
Sebagai pengembang, Anda tidak perlu lagi dipusingkan dengan sertifikasi keamanan kartu kredit (PCI-DSS) yang rumit atau berurusan dengan mutasi bank secara manual. Midtrans telah merangkum semua kompleksitas itu melalui antarmuka yang dinamakan Snap API. Snap adalah popup halaman pembayaran siap pakai (hosted payment page) yang sangat intuitif, elegan, dan mendukung puluhan metode pembayaran seperti transfer Virtual Account (BCA, BNI, Mandiri), GoPay, ShopeePay, hingga QRIS.
Alur kerjanya sangat sederhana. Pertama, aplikasi PHP Anda harus mengirimkan detail transaksi (seperti nomor invoice, total harga, dan nama pelanggan) ke server Midtrans menggunakan Server Key yang dirahasiakan. Setelah itu, Midtrans akan membalas dengan sebuah Snap Token. Token sakti inilah yang nantinya kita lemparkan ke JavaScript di sisi Frontend untuk memunculkan modal pembayaran secara ajaib tanpa meninggalkan halaman website Anda!
"Kepercayaan pelanggan e-commerce sangat bergantung pada kelancaran proses checkout. Proses pembayaran yang lambat atau error adalah resep pasti untuk cart abandonment (pembatalan keranjang belanja)."
Lead E-Commerce Developer
Retail Tech Forum
Menghasilkan Token Transaksi
Berikut adalah contoh mutakhir cara mengenerate Snap Token menggunakan library resmi midtrans-php via Composer. Pastikan Anda sudah membuat akun Sandbox di portal Midtrans untuk mendapatkan Server Key pengujian.
<?php
require_once dirname(__FILE__) . '/vendor/autoload.php';
// Konfigurasi Kunci API (Gunakan file .env pada mode Production)
\Midtrans\Config::$serverKey = 'SB-Mid-server-KODE_RAHASIA_ANDA';
\Midtrans\Config::$isProduction = false;
\Midtrans\Config::$isSanitized = true;
\Midtrans\Config::$is3ds = true;
// Persiapan Detail Order
$params = array(
'transaction_details' => array(
'order_id' => 'ORDER-' . rand(),
'gross_amount' => 150000, // Rp 150.000
),
'customer_details' => array(
'first_name' => 'Budi',
'last_name' => 'Pratama',
'email' => 'budi@example.com',
'phone' => '08111222333',
),
);
try {
// Mendapatkan Token Ajaib dari Midtrans
$snapToken = \Midtrans\Snap::getSnapToken($params);
echo "Snap Token Anda: " . $snapToken;
} catch (Exception $e) {
echo "Terjadi Error: " . $e->getMessage();
}
?>
Pentingnya Webhook: Mendapatkan Snap Token belum berarti transaksi berhasil. Anda WAJIB membuat endpoint Webhook (Notification URL) di server Anda agar Midtrans dapat memberitahu sistem Anda (via POST Request HTTP) ketika pelanggan benar-benar sudah mentransfer uangnya.
Komentar
Posting Komentar