← Kembali ke Beranda
API v1 · JSON · HTTPS

Dokumentasi API

Panduan integrasi pembayaran AraaXZ untuk website, aplikasi, dan bot Node.js.

Base URL: https://pg.ciparage.web.id/v1

Autentikasi: Authorization: Bearer YOUR_API_KEY

Simpan API key di backend atau environment variable bot. Jangan menaruh key di frontend, repository publik, atau membagikannya kepada pengguna.

1. Membuat pembayaran QRIS

POST /create-qris.php

Header: Content-Type: application/json dan Authorization: Bearer YOUR_API_KEY.

Request body

{
  "MERCHANT_ID": "merchant-anda",
  "JUMLAH": 10000,
  "REFERENSI": "INV-2026-0001",
  "KADALUARSA": 15
}

MERCHANT_ID dipertahankan untuk kompatibilitas API lama. JUMLAH adalah nominal dasar dalam rupiah, REFERENSI adalah referensi unik dari sistem pemanggil, dan KADALUARSA adalah menit masa berlaku (1–1440).

Respons sukses

{
  "status": "200",
  "message": "success",
  "data": [{
    "trx_id": "ARX0123456789ABCDEF",
    "merchant_ref": "INV-2026-0001",
    "qris_string": "000201...",
    "qris_url": "",
    "status": "pending",
    "amount": 10000,
    "fee": 300,
    "total_amount": 10317,
    "date": "2026-10-26",
    "time": "10:00:00",
    "expired": "2026-10-26 10:15:00",
    "payment_no": "provider-transaction-reference"
  }]
}

Nilai di atas hanya contoh format, bukan transaksi nyata. Gunakan qris_string dari respons untuk menampilkan QR Code. qris_url dapat kosong jika penyedia tidak mengembalikan URL gambar.

2. Memeriksa status

GET /cekstatus.php?trx_id=ARX0123456789ABCDEF

Gunakan header autentikasi yang sama. Endpoint melakukan sinkronisasi status ke sumber pembayaran saat status lokal masih menunggu.

{
  "status": "200",
  "message": "success",
  "data": [{
    "trx_id": "ARX0123456789ABCDEF",
    "status": "paid",
    "total_amount": 10317,
    "date": "2026-10-26",
    "time": "10:00:00",
    "expired_at": "2026-10-26 10:15:00",
    "paid_at": "2026-10-26 10:04:21"
  }]
}

Status yang mungkin: pending, paid, canceled, expired. Jangan mengirim produk atau saldo sebelum status terkonfirmasi paid.

3. Membatalkan transaksi

POST /cancel.php

Request body

{ "TRX_ID": "ARX0123456789ABCDEF" }

Transaksi hanya dapat dibatalkan dari status lokal pending. Respons gagal dikembalikan jika transaksi tidak ditemukan atau sudah diproses.

4. Contoh integrasi bot Node.js

Contoh menggunakan Node.js 18+ (built-in fetch). Simpan API key di environment variable ARAA_API_KEY.

const API_BASE = 'https://pg.ciparage.web.id/api';
const API_KEY = process.env.ARAA_API_KEY;

async function api(path, options = {}) {
  const response = await fetch(`${API_BASE}${path}`, {
    ...options,
    headers: {
      Authorization: `Bearer ${API_KEY}`,
      'Content-Type': 'application/json',
      ...(options.headers || {})
    }
  });
  const result = await response.json();
  if (!response.ok || result.status !== '200') {
    throw new Error(result.message || `HTTP ${response.status}`);
  }
  return result.data;
}

async function buatPembayaran({ merchantId, amount, reference }) {
  const rows = await api('/create-qris.php', {
    method: 'POST',
    body: JSON.stringify({
      MERCHANT_ID: merchantId,
      JUMLAH: amount,
      REFERENSI: reference,
      KADALUARSA: 15
    })
  });
  const trx = rows[0];
  return {
    id: trx.trx_id,
    total: trx.total_amount,
    qrString: trx.qris_string,
    expired: trx.expired,
    status: trx.status
  };
}

async function cekPembayaran(trxId) {
  const rows = await api(`/cekstatus.php?trx_id=${encodeURIComponent(trxId)}`);
  return rows[0];
}

// Contoh pemakaian di handler bot:
// const payment = await buatPembayaran({
//   merchantId: 'merchant-anda', amount: 10000,
//   reference: `ORDER-${Date.now()}`
// });
// Kirim payment.qrString sebagai QRIS yang dirender bot.
// Periksa status dengan cekPembayaran(payment.id).
// Berikan produk hanya ketika hasil.status === 'paid'.

Jangan tandai pembayaran lunas berdasarkan gambar QR, pesan pengguna, atau screenshot. Status harus berasal dari endpoint status terautentikasi.

5. Format error

400
Parameter hilang atau JSON tidak valid.
401
API key tidak valid atau tidak dikirim.
404
Transaksi tidak ditemukan untuk akun tersebut.
502
Layanan pembayaran gagal atau respons tidak valid.

6. Praktik keamanan dan operasional