Panduan lengkap integrasi payment gateway QRIS untuk developer.
Setiap request API wajib menyertakan parameter apikey. Anda bisa mendapatkan key ini dengan mendaftar dan membuat proyek di dashboard.
?apikey=YOUR_API_KEY_HERE
Endpoint untuk membuat transaksi baru.
| Parameter | Tipe | Deskripsi |
|---|---|---|
| expiry | Integer | Waktu kedaluwarsa dalam menit (Min: 5). Default: 60. |
| redirect_url | String (URL) | URL tujuan setelah pembayaran sukses (harus di-urlencode). |
| template | String | Tema halaman pembayaran. Opsi: default, simple, premium. |
<?php
$apiKey = 'YOUR_API_KEY';
$amount = 10000;
// Opsional: Custom Expiry (30 menit) & Template Premium
$url = 'https://pay.yobase.me//api.php?action=createpayment&apikey=' . $apiKey . '&amount=' . $amount . '&expiry=30&template=premium';
$res = file_get_contents($url);
$data = json_decode($res, true);
if ($data['status']) {
print_r($data['data']);
}
?>
{
"status": true,
"data": {
"trx_id": "NQ-ABC12345",
"amount": 10123,
"payment_url": "https://domain.com/pay/...",
"qr_image": "https://domain.com/assets/...",
"expired_at": "2026-01-01 12:00:00",
"environment": "sandbox"
}
}
Terima pembayaran tanpa redirect halaman (In-Context Checkout).
Backend + Frontend Integration
Pure Javascript Implementation
Panggil API createpayment dari server Anda untuk mendapatkan payment_url.
Gunakan parameter template=mobile agar tampilan optimal di dalam popup.
<?php $apiKey = 'YOUR_API_KEY'; $amount = 100000; // Tambahkan parameter 'template=mobile' & 'return_url' (opsional) $apiUrl = 'https://pay.yobase.me//api.php?action=createpayment&apikey=' . $apiKey . '&amount=' . $amount . '&template=mobile'; $response = file_get_contents($apiUrl); $data = json_decode($response, true); // URL ini akan dikirim ke Frontend untuk dibuka oleh Snap.js $snapToken = $data['data']['payment_url']; ?>
Pasang library snap.js dan panggil fungsi snap.pay() ketika tombol bayar diklik.
<!-- 1. Load Library -->
<script src="https://YoBasePay.com/assets/js/snap.js"></script>
<!-- 2. Tombol Bayar -->
<button id="pay-btn">Bayar Sekarang</button>
<script>
var paymentUrl = "<?= $snapToken ?>"; // Didapat dari Backend (Step 1)
document.getElementById('pay-btn').onclick = function() {
snap.pay(paymentUrl, {
onSuccess: function(result) {
console.log('Sukses:', result);
alert('Pembayaran Berhasil!');
},
onPending: function(result) {
console.log('Pending:', result);
},
onError: function(result) {
console.log('Error:', result);
},
onClose: function() {
console.log('Popup ditutup oleh user');
}
});
};
</script>
Berikut adalah contoh penerapan Snap.js pada berbagai kasus penggunaan. Anda dapat melihat demo langsung atau mendownload source code-nya.
Template sistem kasir sederhana dengan integrasi pembayaran QRIS popup.
Template website topup game dengan UI modern dan pembayaran instan.
Endpoint untuk mengecek status transaksi.
<?php $apiKey = 'YOUR_API_KEY'; $trxId = 'NQ-EXAMPLE123'; $url = 'https://pay.yobase.me//api.php?action=checkstatus&apikey=' . $apiKey . '&trxid=' . $trxId; $res = file_get_contents($url); $data = json_decode($res, true); print_r($data); ?>
{
"status": true,
"data": {
"status": "SUCCESS",
"trx_id": "NQ-...",
"amount": 10000,
"payment_url": "...",
"qr_image": "..."
}
}
{
"status": true,
"data": {
"status": "EXPIRED",
"qris_image": "https://.../expired.png"
}
}
Endpoint untuk membatalkan transaksi yang masih berstatus PENDING.
| Parameter | Tipe | Deskripsi |
|---|---|---|
| trx_id | String | ID Transaksi internal (Contoh: NQ-ABC12345). |
<?php $apiKey = 'YOUR_API_KEY'; $url = 'https://pay.yobase.me//api.php?action=cancel_transaction&apikey=' . $apiKey; $data = ['trx_id' => 'NQ-ABC12345']; $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); print_r(json_decode($response, true)); ?>
{
"status": true,
"message": "Transaction cancelled successfully",
"data": {
"trx_id": "NQ-ABC12345",
"status": "CANCELLED",
"cancelled_at": "2026-01-01 12:10:00"
}
}
Notifikasi otomatis ke server Anda saat pembayaran SUCCESS, CANCELLED atau EXPIRED.
Wajib: Verifikasi header X-YoBasePay-Signature menggunakan Secret Anda.
<?php
$secret = 'YOUR_WEBHOOK_SECRET';
$json = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_YoBasePay_SIGNATURE'] ?? '';
// Verifikasi Signature
if (!hash_equals(hash_hmac('sha256', $json, $secret), $signature)) {
http_response_code(403); exit;
}
$data = json_decode($json, true);
// Logic Anda...
http_response_code(200);
?>
{
"merchant_code": "SLUG",
"trx_id": "NQ-ABC...",
"amount": 10123,
"status": "SUCCESS",
"customer": {
"name": "Guest",
"phone": "-"
},
"description": "Transaction",
"timestamp": "2026-01-01 12:05:00"
}
{
"merchant_code": SLUG,
"trx_id": "NQ-ABC...",
"amount": 10123,
"status": "CANCELLED",
"customer": { ... },
"description": "Transaction",
"timestamp": null
}
{
"merchant_code": "SLUG",
"trx_id": "NQ-ABC...",
"amount": 10123,
"status": "EXPIRED",
"customer": { ... },
"description": "Transaction",
"timestamp": null
}