Payment Gateway Brainxiex adalah sistem pembayaran menggunakan metode QRIS. Sistem ini memungkinkan aplikasi pihak ketiga untuk membuat transaksi pembayaran dan memantau statusnya.
Pembayaran dengan QRIS yang mendukung berbagai e-wallet dan mobile banking
Transaksi otomatis kadaluarsa dalam 10 menit jika tidak dibayar
Notifikasi otomatis saat pembayaran berhasil
API Key authentication untuk keamanan transaksi
Base URL untuk mengakses semua endpoint Payment Gateway Brainxiex:
https://brainxiex.com/api/brainxiex
| Endpoint | Method | Description |
|---|---|---|
/buat-transaksi |
POST | Membuat transaksi pembayaran baru |
/cek-transaksi |
GET | Mengecek status transaksi |
Semua endpoint Payment Gateway memerlukan API Key untuk autentikasi. API Key dapat disertakan melalui parameter apikey di request body atau query parameter.
{
"apikey": "YOUR_API_KEY",
"jumlah": 10000
}
API Key dapat diperoleh dengan mengunjungi Dashboard Brainxiex dan membuat API Key baru.
Endpoint ini digunakan untuk membuat transaksi pembayaran baru. Transaksi akan menghasilkan QR code yang dapat dipindai oleh user untuk melakukan pembayaran.
/api/brainxiex/buat-transaksi
| Parameter | Type | Required | Description |
|---|---|---|---|
apikey |
string | Yes | API Key untuk autentikasi |
jumlah |
number | Yes | Nominal pembayaran (minimal 10.000) |
prefix |
string | No | Prefix untuk ID transaksi (opsional) |
webhook |
string | No | URL webhook untuk notifikasi pembayaran |
user |
string | No | Username user (untuk auto topup) |
email |
string | No | Email user (untuk verifikasi auto topup) |
wa |
string | No | Nomor WhatsApp (untuk notifikasi) |
curl -X POST 'https://brainxiex.com/api/brainxiex/buat-transaksi' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"jumlah": 10000,
"webhook": "https://your-app.com/webhook",
"user": "username",
"email": "[email protected]",
"wa": "6281234567890"
}'
<?php
$data = array(
"apikey" => "YOUR_API_KEY",
"jumlah" => 10000,
"webhook" => "https://your-app.com/webhook",
"user" => "username",
"email" => "[email protected]",
"wa" => "6281234567890"
);
$options = array(
"http" => array(
"header" => "Content-Type: application/json\r\n",
"method" => "POST",
"content" => json_encode($data),
),
);
$context = stream_context_create($options);
$response = file_get_contents('https://brainxiex.com/api/brainxiex/buat-transaksi', false, $context);
echo $response;
?>
const data = {
apikey: "YOUR_API_KEY",
jumlah: 10000,
webhook: "https://your-app.com/webhook",
user: "username",
email: "[email protected]",
wa: "6281234567890"
};
fetch('https://brainxiex.com/api/brainxiex/buat-transaksi', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(result => console.log(result))
.catch(error => console.error('Error:', error));
const axios = require('axios');
const data = {
apikey: "YOUR_API_KEY",
jumlah: 10000,
webhook: "https://your-app.com/webhook",
user: "username",
email: "[email protected]",
wa: "6281234567890"
};
axios.post('https://brainxiex.com/api/brainxiex/buat-transaksi', data)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
import requests
import json
url = "https://brainxiex.com/api/brainxiex/buat-transaksi"
headers = {
"Content-Type": "application/json"
}
data = {
"apikey": "YOUR_API_KEY",
"jumlah": 10000,
"webhook": "https://your-app.com/webhook",
"user": "username",
"email": "[email protected]",
"wa": "6281234567890"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
{
"ok": true,
"id": "abc123xyz",
"status": "pending",
"nominal": 10250,
"biaya_admin": 50,
"biaya_transaksi": 250,
"total": 10000,
"qris_string": "00020101021226580016ID.CO.QRIS.WWW01189360052002100000000000303UMI51440014ID.CO.QRIS.WWW0215ID102002000000000303UMI5204581253033605802ID5910Barqah_Xiex6007Jakarta6105101106304A3B2",
"qris_image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
"date": 1731234567890,
"expired": 1731238167890,
"webhook": "https://your-app.com/webhook",
"user": "username",
"email": "[email protected]",
"wa": "6281234567890"
}
| Field | Type | Description |
|---|---|---|
ok |
boolean | Status success/failure |
id |
string | ID transaksi unik |
status |
string | Status transaksi (pending/sukses/expired) |
nominal |
number | Nominal total termasuk biaya |
biaya_admin |
number | Biaya admin dari payment gateway |
biaya_transaksi |
number | Biaya transaksi (2.5%) |
total |
number | Nominal yang diterima setelah potongan |
qris_string |
string | String QR code untuk pembayaran |
qris_image |
string | Base64 image QR code |
date |
number | Timestamp pembuatan transaksi |
expired |
number | Timestamp kadaluarsa (10 menit) |
{
"ok": false,
"error": "apikey salah"
}
Endpoint ini digunakan untuk mengecek status transaksi berdasarkan ID transaksi.
/api/brainxiex/cek-transaksi
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | ID transaksi yang ingin dicek |
curl -X GET 'https://brainxiex.com/api/brainxiex/cek-transaksi?id=abc123xyz'
<?php
$id = "abc123xyz";
$response = file_get_contents("https://brainxiex.com/api/brainxiex/cek-transaksi?id=$id");
echo $response;
?>
const id = "abc123xyz";
fetch(`https://brainxiex.com/api/brainxiex/cek-transaksi?id=${id}`)
.then(response => response.json())
.then(result => console.log(result))
.catch(error => console.error('Error:', error));
import requests
id = "abc123xyz"
url = f"https://brainxiex.com/api/brainxiex/cek-transaksi?id={id}"
response = requests.get(url)
print(response.json())
{
"ok": true,
"id": "abc123xyz",
"status": "pending",
"nominal": 10250,
"biaya_admin": 50,
"biaya_transaksi": 250,
"total": 10000,
"qris_string": "...",
"qris_image": "data:image/png;base64,...",
"date": 1731234567890,
"expired": 1731238167890
}
{
"ok": true,
"id": "abc123xyz",
"status": "sukses",
"nominal": 10250,
"biaya_admin": 50,
"biaya_transaksi": 250,
"total": 10000,
"qris_string": "...",
"qris_image": "data:image/png;base64,...",
"date": 1731234567890,
"expired": 1731238167890
}
{
"ok": true,
"id": "abc123xyz",
"status": "expired",
"nominal": 10250,
"biaya_admin": 50,
"biaya_transaksi": 250,
"total": 10000,
"qris_string": "...",
"qris_image": "data:image/png;base64,...",
"date": 1731234567890,
"expired": 1731238167890
}
{
"ok": false,
"error": "data tidak ada"
}
Webhook digunakan untuk menerima notifikasi otomatis ketika pembayaran berhasil. Sistem akan mengirim POST request ke URL webhook yang Anda set saat membuat transaksi.
Your Webhook URL
Sistem akan mengirim data berikut ke webhook URL Anda saat pembayaran berhasil:
{
"ok": true,
"id": "abc123xyz",
"status": "sukses",
"nominal": 10250,
"biaya_admin": 50,
"biaya_transaksi": 250,
"total": 10000,
"qris_string": "...",
"qris_image": "data:image/png;base64,...",
"date": 1731234567890,
"expired": 1731238167890,
"webhook": "https://your-app.com/webhook",
"user": "username",
"email": "[email protected]",
"wa": "6281234567890"
}
const express = require('express');
const app = express();
app.use(express.json());
app.post('/webhook', (req, res) => {
const { id, status, nominal, user, email } = req.body;
// Validasi data
if (!id || !status) {
return res.status(400).json({ error: 'Invalid payload' });
}
// Cek status pembayaran
if (status === 'sukses') {
console.log(`Pembayaran sukses: ${id}, Amount: ${nominal}`);
// Update database, kirim notifikasi, dll
// Contoh: tambahkan saldo user
if (user && email) {
// Verifikasi dan tambahkan saldo
}
}
// Response ke server
res.status(200).json({ success: true });
});
app.listen(3000, () => {
console.log('Webhook server running on port 3000');
});
Berikut adalah alur lengkap pembayaran menggunakan Payment Gateway Brainxiex:
Aplikasi Anda memanggil endpoint /buat-transaksi dengan parameter yang diperlukan (apikey, jumlah, webhook, user, email, dll).
const response = await fetch('https://brainxiex.com/api/brainxiex/buat-transaksi', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
apikey: 'YOUR_API_KEY',
jumlah: 10000,
webhook: 'https://your-app.com/webhook',
user: 'username',
email: '[email protected]'
})
});
const transaction = await response.json();
Dari response, tampilkan QR code (qris_image) kepada user untuk dipindai menggunakan aplikasi e-wallet atau mobile banking.
<img src="${transaction.qris_image}" alt="QRIS Payment" />
User memindai QR code menggunakan aplikasi e-wallet (GoPay, OVO, Dana, dll) atau mobile banking dan melakukan pembayaran.
Aplikasi Anda dapat melakukan polling status transaksi setiap beberapa detik menggunakan endpoint /cek-transaksi untuk mengecek apakah pembayaran sudah berhasil.
// Polling setiap 5 detik
const interval = setInterval(async () => {
const response = await fetch(`https://brainxiex.com/api/brainxiex/cek-transaksi?id=${transaction.id}`);
const status = await response.json();
if (status.status === 'sukses') {
clearInterval(interval);
console.log('Pembayaran berhasil!');
// Proses pembayaran sukses
} else if (status.status === 'expired') {
clearInterval(interval);
console.log('Transaksi kadaluarsa');
// Handle expired
}
}, 5000);
Saat pembayaran berhasil, sistem akan mengirim POST request ke webhook URL yang Anda set dengan data transaksi lengkap.
Jika parameter user dan email disertakan dan cocok dengan database, saldo user akan otomatis ditambahkan setelah pembayaran berhasil.
Berikut adalah rincian biaya yang dikenakan untuk setiap transaksi:
| Jenis Biaya | Persentase | Contoh (Rp 10.000) |
|---|---|---|
| Biaya Transaksi | 2.5% | Rp 250 |
| Biaya Admin | Bervariasi | Rp 50 (contoh) |
| Total Biaya | ~3% | Rp 300 |
Minimal nominal transaksi adalah Rp 10.000.
class BrainxiexPayment {
constructor(apikey) {
this.apikey = apikey;
this.baseUrl = 'https://brainxiex.com/api/brainxiex';
}
// Buat transaksi baru
async createTransaction(options) {
const { jumlah, webhook, user, email, wa, prefix } = options;
const response = await fetch(`${this.baseUrl}/buat-transaksi`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
apikey: this.apikey,
jumlah,
webhook,
user,
email,
wa,
prefix
})
});
return await response.json();
}
// Cek status transaksi
async checkTransaction(id) {
const response = await fetch(`${this.baseUrl}/cek-transaksi?id=${id}`);
return await response.json();
}
// Polling status sampai sukses atau expired
async waitForPayment(id, options = {}) {
const { interval = 5000, maxAttempts = 120 } = options;
let attempts = 0;
return new Promise((resolve, reject) => {
const poll = setInterval(async () => {
attempts++;
if (attempts > maxAttempts) {
clearInterval(poll);
reject(new Error('Payment timeout'));
return;
}
const status = await this.checkTransaction(id);
if (status.status === 'sukses') {
clearInterval(poll);
resolve(status);
} else if (status.status === 'expired') {
clearInterval(poll);
reject(new Error('Transaction expired'));
}
}, interval);
});
}
}
// Penggunaan
const payment = new BrainxiexPayment('YOUR_API_KEY');
// Buat transaksi
const transaction = await payment.createTransaction({
jumlah: 10000,
webhook: 'https://your-app.com/webhook',
user: 'username',
email: '[email protected]'
});
if (transaction.ok) {
console.log('Transaksi dibuat:', transaction.id);
console.log('QR Code:', transaction.qris_image);
// Tampilkan QR code ke user...
// Tunggu pembayaran (opsional)
try {
const result = await payment.waitForPayment(transaction.id);
console.log('Pembayaran berhasil!', result);
} catch (error) {
console.error('Error:', error.message);
}
} else {
console.error('Gagal membuat transaksi:', transaction.error);
}
| Error Message | Cause | Solution |
|---|---|---|
apikey salah |
API Key tidak valid | Periksa API Key Anda di dashboard |
apikey telah habis saldo |
Saldo API Key habis | Topup saldo API Key |
Tidak ada parameter jumlah |
Parameter jumlah tidak disertakan | Sertakan parameter jumlah dalam request |
jumlah is NaN |
Parameter jumlah bukan angka | Pastikan parameter jumlah adalah number |
jumlah Kurang dari 10000 |
Nominal kurang dari minimal | Gunakan nominal minimal Rp 10.000 |
data tidak ada |
ID transaksi tidak ditemukan | Periksa ID transaksi yang benar |
© 2026 Brainxiex Development. All rights reserved.