Dokumentasi API & Integrasi

Panduan lengkap integrasi payment gateway QRIS untuk developer.

https://pay.yobase.me//api.php

1 Otentikasi

Setiap request API wajib menyertakan parameter apikey. Anda bisa mendapatkan key ini dengan mendaftar dan membuat proyek di dashboard.

?apikey=YOUR_API_KEY_HERE

2 Create Payment

GET

Endpoint untuk membuat transaksi baru.

https://pay.yobase.me//api.php?action=createpayment&apikey={APIKEY}&amount={NOMINAL}

Parameter Tambahan (Opsional)

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.
Contoh Kode PHP
Download
<?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']);
}
?>

Contoh Respon JSON (Sukses)

{
  "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"
  }
}

3 Snap / Popup Integration

Terima pembayaran tanpa redirect halaman (In-Context Checkout).

1

Backend: Dapatkan Payment URL

Panggil API createpayment dari server Anda untuk mendapatkan payment_url.
Gunakan parameter template=mobile agar tampilan optimal di dalam popup.

PHP (Server-Side)
<?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']; 
?>
2

Frontend: Tampilkan Popup

Pasang library snap.js dan panggil fungsi snap.pay() ketika tombol bayar diklik.

HTML / Javascript (Client-Side)
<!-- 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>
3

Contoh Integrasi & Template

Berikut adalah contoh penerapan Snap.js pada berbagai kasus penggunaan. Anda dapat melihat demo langsung atau mendownload source code-nya.

POS / Kasir Template

Template sistem kasir sederhana dengan integrasi pembayaran QRIS popup.

Game Topup Template

Template website topup game dengan UI modern dan pembayaran instan.


4 Check Status

GET

Endpoint untuk mengecek status transaksi.

https://pay.yobase.me//api.php?action=checkstatus&apikey={APIKEY}&trxid={TRX_ID}
Contoh Kode PHP
Download
<?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);
?>

Jika Sukses / Pending

{
  "status": true,
  "data": {
    "status": "SUCCESS",
    "trx_id": "NQ-...",
    "amount": 10000,
    "payment_url": "...",
    "qr_image": "..."
  }
}

Jika Expired

{
  "status": true,
  "data": {
    "status": "EXPIRED",
    "qris_image": "https://.../expired.png"
  }
}

5 Cancel Transaction

POST

Endpoint untuk membatalkan transaksi yang masih berstatus PENDING.

https://pay.yobase.me//api.php?action=cancel_transaction&apikey={APIKEY}

Body Parameter (JSON)

Parameter Tipe Deskripsi
trx_id String ID Transaksi internal (Contoh: NQ-ABC12345).
Contoh Kode PHP (cURL)
<?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));
?>

Contoh Respon JSON

{
  "status": true,
  "message": "Transaction cancelled successfully",
  "data": {
    "trx_id": "NQ-ABC12345",
    "status": "CANCELLED",
    "cancelled_at": "2026-01-01 12:10:00"
  }
}


6 Webhook (Callback)

POST

Notifikasi otomatis ke server Anda saat pembayaran SUCCESS, CANCELLED atau EXPIRED.

Wajib: Verifikasi header X-YoBasePay-Signature menggunakan Secret Anda.

Contoh Handler PHP
Download
<?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);
?>

Payload Sukses (POST)

{
  "merchant_code": "SLUG",
  "trx_id": "NQ-ABC...",
  "amount": 10123,
  "status": "SUCCESS", 
  "customer": {
      "name": "Guest",
      "phone": "-"
  },
  "description": "Transaction",
  "timestamp": "2026-01-01 12:05:00"
}

Payload Cancelled (POST)

{
  "merchant_code": SLUG,
  "trx_id": "NQ-ABC...",
  "amount": 10123,
  "status": "CANCELLED", 
  "customer": { ... },
  "description": "Transaction",
  "timestamp": null
}

Payload Expired (POST)

{
  "merchant_code": "SLUG",
  "trx_id": "NQ-ABC...",
  "amount": 10123,
  "status": "EXPIRED", 
  "customer": { ... },
  "description": "Transaction",
  "timestamp": null
}