Dokumentasi API & Gateway

Panduan integrasi lengkap untuk developer. Mendukung QRIS Tanpa KTP, MyPG (Gateway Pribadi), dan Bot Telegram.

Base URL: https://mail.yobasepay.net//api

1 Otentikasi & Keamanan

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

?apikey=YOUR_API_KEY_HERE

Domain Lock (Produksi)

Di lingkungan Production, sistem menerapkan pengamanan ketat. Request wajib berasal dari domain yang Anda daftarkan. Pastikan aplikasi Anda mengirimkan header Referer atau Origin yang sesuai saat memanggil API.


2 Create Payment

GET

Endpoint untuk membuat transaksi baru.

https://mail.yobasepay.net//api?action=createpayment&apikey={APIKEY}&amount={NOMINAL}
Contoh Kode PHP
Download
<?php
$apiKey = 'YOUR_API_KEY';
$amount = 10000;
$url = 'https://mail.yobasepay.net//api?action=createpayment&apikey=' . $apiKey . '&amount=' . $amount;

$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": "YO-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 Check Status (Private)

GET

Pengecekan status detail menggunakan API Key. Memberikan respon lengkap termasuk URL QRIS.

https://mail.yobasepay.net//api?action=checkstatus&apikey={APIKEY}&trxid={TRX_ID}

Jika Sukses / Pending

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

Jika Expired

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


4 API V3 Engine (Ultra Fast)

NEW

API Engine terbaru dengan dukungan multi-provider dan pengecekan mutasi otomatis yang lebih cepat.

https://mail.yobasepay.net//api_v3.php?action=create_order&apikey={APIKEY}

API V3 direkomendasikan untuk beban transaksi tinggi dan mendukung integrasi Bot Telegram secara otomatis.


5 MyPG (Personal Gateway)

PRO

Integrasikan QRIS pribadi Anda (Tokopay/Qiospay) untuk menikmati QRIS No MDR (0%). YoBasePay bertindak sebagai jembatan mutasi otomatis.

https://mail.yobasepay.net//api_my?apikey={APIKEY}

6 Webhook (Callback)

POST

Notifikasi otomatis ke server Anda saat pembayaran BERHASIL atau EXPIRED.

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

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 (Simpan ke DB dsb)
http_response_code(200);
?>

7 Webhook Node.js (Express / VPS)

NODEJS

Panduan integrasi untuk aplikasi berbasis Node.js yang berjalan di VPS (Ubuntu/Debian) menggunakan Express.

Tips Deployment VPS:

  • Gunakan 0.0.0.0 saat listen agar bisa diakses dari IP Publik.
  • Pastikan Port (misal: 3000) sudah dibuka di Security Group / Firewall panel VPS Anda.
  • Gunakan PM2 agar script tetap jalan meski terminal ditutup.
Contoh Script Express.js
const express = require('express');
const crypto = require('crypto');
const app = express();

app.use(express.json());

const WEBHOOK_SECRET = 'YOUR_WEBHOOK_SECRET'; // Ambil dari Dashboard

app.post('/yobasepay-webhook', (req, res) => {
    const signature = req.headers['x-yobasepay-signature'];
    const payload = JSON.stringify(req.body);

    // 1. Verifikasi Signature (Untuk Keamanan)
    const hmac = crypto.createHmac('sha256', WEBHOOK_SECRET);
    const expectedSignature = hmac.update(payload).digest('hex');

    if (signature !== expectedSignature) {
        console.error("Signature mismatch!");
        return res.status(403).send('Invalid Signature');
    }

    // 2. Proses Data Transaksi
    const { trxid, status, amount } = req.body;
    console.log(`Transaksi ${trxid} statusnya adalah ${status} sebesar ${amount}`);

    // Simpan ke Database Anda di sini...

    // 3. Kirim Respon 200 OK ke YoBasePay
    res.status(200).send('OK');
});

// PENTING: Gunakan 0.0.0.0 agar bisa diakses dari IP Publik VPS
const PORT = 3000;
app.listen(PORT, '0.0.0.0', () => {
    console.log(`Webhook Listener jalan di http://IP-VPS-ANDA:${PORT}/yobasepay-webhook`);
});