Dokumentasi API

Integrasikan layanan AraaXZ OTP ke aplikasi Anda

Autentikasi: Semua endpoint memerlukan api-id dan api-key yang bisa Anda dapatkan di halaman Akun setelah login.
GET /api/get-country Daftar negara

Mengembalikan daftar negara yang tersedia.

{ "status": true, "data": [ { "id": "id", "name": "Indonesia" }, { "id": "my", "name": "Malaysia" } ] }
GET /api/get-service Daftar layanan

Mengembalikan daftar layanan yang tersedia.

{ "status": true, "data": [ { "id": "wa", "name": "WhatsApp" }, { "id": "tg", "name": "Telegram" } ] }
POST /api/create-order Buat order nokos
ParameterWajibDeskripsi
api-idYaAPI ID Anda
api-keyYaAPI Key Anda
countryYaKode negara (contoh: id)
serviceYaKode layanan (contoh: wa)
reff-idYaReferensi unik dari Anda
{ "status": true, "data": { "reff-id": "order-123", "phone": "+628123456789", "status": "pending" } }
GET /api/check-status Cek status order
ParameterWajibDeskripsi
reff-idYaReferensi order
{ "status": true, "data": { "reff-id": "order-123", "status": "received", "otp": "123456", "phone": "+628123456789" } }
POST /api/cancel Batalkan order
ParameterWajibDeskripsi
reff-idYaReferensi order
{ "status": true, "message": "Order berhasil dibatalkan" }
POST /api/create-deposit Buat deposit
ParameterWajibDeskripsi
api-idYaAPI ID Anda
api-keyYaAPI Key Anda
amountYaNominal saldo yang ingin masuk ke wallet (minimal Rp1.000). Fee 3% ditambahkan saat membuat QRIS.
reff-idYaReferensi unik
{ "status": true, "message": "Qris sudah dibuat, silahkan bayar kak", "data": { "reff-id": "dep-123", "amount": 1000, "metode": "qris", "qr-url": "https://...", "expired": 1234567 } }
GET /api/check-deposit Cek status deposit
ParameterWajibDeskripsi
reff-idYaReferensi deposit
{ "status": true, "data": { "reff-id": "dep-123", "status": "success", "amount": 1000 } }
POST /api/cancel-deposit Batalkan deposit
ParameterWajibDeskripsi
reff-idYaReferensi deposit
{ "status": true, "message": "Deposit dibatalkan" }

Panduan integrasi lengkap

Base URL: https://araaxz.ciparage.web.id. Semua endpoint mengembalikan JSON. Simpan api-id dan api-key di backend/server, jangan pernah menaruhnya di JavaScript frontend, aplikasi mobile, atau repository publik.

Contoh alur pembelian OTP

  1. GET /api/get-service untuk mengambil daftar aplikasi.
  2. GET /api/get-country?app=wa&server=server1 untuk daftar negara. Gunakan ID aplikasi dan negara yang benar-benar dikembalikan API.
  3. GET /api/get-prices?app=wa&country=6&server=server1 untuk mengecek harga dan stok terbaru.
  4. POST /api/create-order dengan api-id, api-key, country, service, dan reff-id yang unik.
  5. GET /api/check-status?reff-id=REF_UNIK atau GET /api/check-otp?reff-id=REF_UNIK untuk memeriksa status/OTP.
  6. POST /api/cancel dengan reff-id untuk membatalkan pesanan yang memenuhi syarat. Pembatalan tersedia setelah 3 menit dan sebelum OTP diterima.

Contoh PHP: membuat pesanan OTP

<?php
$base = 'https://araaxz.ciparage.web.id';
$payload = [
  'api-id' => getenv('ARAAXZ_API_ID'),
  'api-key' => getenv('ARAAXZ_API_KEY'),
  'country' => '6',       // ganti dengan ID negara dari API
  'service' => 'wa',      // ganti dengan ID aplikasi dari API
  'reff-id' => 'otp-' . bin2hex(random_bytes(8))
];
$ch = curl_init($base . '/api/create-order.php');
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded'],
  CURLOPT_POSTFIELDS => http_build_query($payload),
  CURLOPT_TIMEOUT => 25
]);
$raw = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($raw === false) { throw new RuntimeException(curl_error($ch)); }
curl_close($ch);
$result = json_decode($raw, true);
if ($http < 200 || $http >= 300 || empty($result['status'])) {
  throw new RuntimeException($result['message'] ?? 'Order OTP gagal');
}
print_r($result['data']); // reff-id, phone, status, price
?>

Deposit QRIS dan fee 3%

Parameter amount adalah nominal saldo yang akan dikreditkan. Fee dihitung sebesar ceil(amount × 0,03), lalu jumlah pembayaran QRIS = nominal saldo + fee (belum termasuk kode unik yang mungkin diterapkan gateway). Contoh: saldo Rp10.000, fee Rp300, total dasar Rp10.300. Saldo hanya ditambahkan setelah status pembayaran terverifikasi.

Contoh PHP (server-side)

<?php
$base = 'https://araaxz.ciparage.web.id';
$payload = [
  'api-id' => getenv('ARAAXZ_API_ID'),
  'api-key' => getenv('ARAAXZ_API_KEY'),
  'amount' => 10000,
  'reff-id' => 'dep-' . bin2hex(random_bytes(8))
];
$ch = curl_init($base . '/api/create-deposit.php');
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded'],
  CURLOPT_POSTFIELDS => http_build_query($payload),
  CURLOPT_TIMEOUT => 20
]);
$raw = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($raw === false) { throw new RuntimeException(curl_error($ch)); }
curl_close($ch);
$result = json_decode($raw, true);
if ($http < 200 || $http >= 300 || empty($result['status'])) {
  throw new RuntimeException($result['message'] ?? 'Permintaan deposit gagal');
}
print_r($result['data']); // qr-url, qr-string, amount, fee, total-amount, expired
?>

Contoh JavaScript Node.js (backend bot/app)

const base = 'https://araaxz.ciparage.web.id';
const form = new URLSearchParams({
  'api-id': process.env.ARAAXZ_API_ID,
  'api-key': process.env.ARAAXZ_API_KEY,
  amount: '10000',
  'reff-id': `dep-${Date.now()}-${Math.random().toString(16).slice(2, 8)}`
});
const response = await fetch(`${base}/api/create-deposit.php`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: form
});
const result = await response.json();
if (!response.ok || !result.status) throw new Error(result.message || 'Deposit gagal');
console.log(result.data); // Kirim QRIS dan total pembayaran ke pengguna

Catatan kompatibilitas: gunakan endpoint dengan ekstensi .php untuk kompatibilitas shared hosting; rewrite URL tanpa ekstensi hanya bekerja jika konfigurasi server mendukungnya. Contoh nilai aplikasi/negara di atas hanya contoh—ambil ID terbaru dari katalog API. Polling status secara wajar (misalnya setiap 3–5 detik), hentikan setelah status final, dan jangan membuat referensi transaksi yang sama untuk pembayaran baru.

Halaman 1 — Integrasi Bot Telegram (Node.js)

Gunakan Node.js 18+ agar fetch tersedia. Jalankan kode di backend bot, bukan di browser. Buat environment variable ARAAXZ_API_ID dan ARAAXZ_API_KEY dari menu akun. Jangan kirim API key ke pengguna.

Helper request yang menangani HTTP error

const BASE = 'https://araaxz.ciparage.web.id';
const auth = {
  'api-id': process.env.ARAAXZ_API_ID,
  'api-key': process.env.ARAAXZ_API_KEY,
};

async function araaxz(path, { method = 'GET', params = {}, body } = {}) {
  const url = new URL(path, BASE);
  if (method === 'GET') {
    for (const [k, v] of Object.entries({ ...auth, ...params })) {
      if (v !== undefined && v !== null) url.searchParams.set(k, String(v));
    }
  }
  const options = { method, headers: { Accept: 'application/json' } };
  if (method !== 'GET') {
    options.headers['Content-Type'] = 'application/json';
    options.body = JSON.stringify({ ...auth, ...body });
  }
  const response = await fetch(url, options);
  const raw = await response.text();
  let data;
  try { data = JSON.parse(raw); }
  catch { throw new Error(`Respons bukan JSON (HTTP ${response.status}): ${raw.slice(0, 160)}`); }
  if (!response.ok || data.status !== true) {
    throw new Error(data.message || `Request gagal (HTTP ${response.status})`);
  }
  return data;
}

// Daftar layanan
const services = await araaxz('/api/get-service.php');
console.log(services.data);

// Negara untuk app dan server yang diambil dari daftar layanan
const countries = await araaxz('/api/get-country.php', {
  params: { app: 'ID_APLIKASI_DARI_RESPONS', server: 'SERVER_DARI_RESPONS' }
});
console.log(countries.data);

// Harga sebelum order
const prices = await araaxz('/api/get-prices.php', {
  params: { app: 'ID_APLIKASI', country: 'ID_NEGARA', server: 'SERVER' }
});
console.log(prices.data);

Buat order OTP

import crypto from 'node:crypto';
const order = await araaxz('/api/create-order.php', {
  method: 'POST',
  body: {
    country: 'ID_NEGARA',
    service: 'SERVER|ID_APLIKASI',
    'reff-id': `tg-${crypto.randomUUID()}`
  }
});
console.log('Order:', order.data['reff-id'], order.data.phone, order.data.price);

// Deposit QRIS; amount adalah saldo yang ingin dikreditkan
const deposit = await araaxz('/api/create-deposit.php', {
  method: 'POST',
  body: { amount: 10000, 'reff-id': `dep-${crypto.randomUUID()}` }
});
console.log(deposit.data['payment-url'], deposit.data['total-amount']);

Penting: ganti placeholder ID dengan nilai aktual dari respons katalog. API melakukan pembelian sungguhan dan memakai saldo akun; uji dengan nominal kecil. Endpoint order/deposit harus dipanggil dari server bot.

Halaman 2 — Integrasi Website PHP dan JavaScript

PHP (server-side, direkomendasikan)

<?php
$base = 'https://araaxz.ciparage.web.id';
$payload = [
  'api-id' => getenv('ARAAXZ_API_ID'),
  'api-key' => getenv('ARAAXZ_API_KEY'),
  'country' => 'ID_NEGARA',
  'service' => 'SERVER|ID_APLIKASI',
  'reff-id' => 'web-' . bin2hex(random_bytes(12)),
];
$ch = curl_init($base . '/api/create-order.php');
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'Accept: application/json'],
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_CONNECTTIMEOUT => 10,
  CURLOPT_TIMEOUT => 25,
]);
$raw = curl_exec($ch);
$http = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($raw === false) { $err = curl_error($ch); curl_close($ch); throw new RuntimeException($err); }
curl_close($ch);
$result = json_decode($raw, true);
if (!is_array($result) || $http < 200 || $http >= 300 || empty($result['status'])) {
  throw new RuntimeException($result['message'] ?? "AraaXZ request gagal (HTTP $http)");
}
echo htmlspecialchars((string)$result['data']['phone'], ENT_QUOTES, 'UTF-8');
?>

JavaScript di browser (panggil backend Anda sendiri)

// Jangan taruh api-key di kode frontend. /backend/order.php adalah endpoint milik website Anda.
document.querySelector('#buy').addEventListener('click', async () => {
  const response = await fetch('/backend/order.php', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ service: document.querySelector('#service').value,
                           country: document.querySelector('#country').value })
  });
  const result = await response.json();
  if (!response.ok || !result.success) {
    document.querySelector('#message').textContent = result.message || 'Order gagal';
    return;
  }
  document.querySelector('#message').textContent = `Nomor: ${result.phone}`;
});

Endpoint /backend/order.php pada contoh frontend adalah endpoint backend milik Anda sendiri, bukan endpoint bawaan AraaXZ. Backend harus memvalidasi input, membuat reff-id unik, lalu meneruskan request ke AraaXZ menggunakan API key dari environment server.

Troubleshooting HTTP 400

Halaman 1 — Integrasi Bot Telegram (Node.js)

Gunakan Node.js 18+ agar fetch tersedia. Jalankan kode di backend bot, bukan di browser. Buat environment variable ARAAXZ_API_ID dan ARAAXZ_API_KEY dari menu akun. Jangan kirim API key ke pengguna.

Helper request (JSON dan penanganan HTTP error)

const BASE = 'https://araaxz.ciparage.web.id';
const auth = { 'api-id': process.env.ARAAXZ_API_ID, 'api-key': process.env.ARAAXZ_API_KEY };
async function araaxz(path, { method = 'GET', params = {}, body } = {}) {
  const url = new URL(path, BASE);
  if (method === 'GET') for (const [k,v] of Object.entries({...auth,...params})) if (v != null) url.searchParams.set(k,String(v));
  const options = { method, headers: { Accept: 'application/json' } };
  if (method !== 'GET') { options.headers['Content-Type']='application/json'; options.body=JSON.stringify({...auth,...body}); }
  const response = await fetch(url, options); const raw = await response.text(); let data;
  try { data=JSON.parse(raw); } catch { throw new Error(`Respons bukan JSON (HTTP ${response.status}): ${raw.slice(0,160)}`); }
  if (!response.ok || data.status !== true) throw new Error(data.message || `Request gagal (HTTP ${response.status})`);
  return data;
}
const services = await araaxz('/api/get-service.php');
console.log(services.data);
const countries = await araaxz('/api/get-country.php', {params:{app:'ID_APLIKASI_DARI_RESPONS',server:'SERVER_DARI_RESPONS'}});
console.log(countries.data);
const prices = await araaxz('/api/get-prices.php', {params:{app:'ID_APLIKASI',country:'ID_NEGARA',server:'SERVER'}});
console.log(prices.data);

Buat order OTP dan deposit QRIS

import crypto from 'node:crypto';
const order = await araaxz('/api/create-order.php', { method:'POST', body:{country:'ID_NEGARA',service:'SERVER|ID_APLIKASI','reff-id':`tg-${crypto.randomUUID()}`} });
console.log('Order:', order.data['reff-id'], order.data.phone, order.data.price);
const deposit = await araaxz('/api/create-deposit.php', { method:'POST', body:{amount:10000,'reff-id':`dep-${crypto.randomUUID()}`} });
console.log('QRIS:', deposit.data['payment-url'], deposit.data['total-amount']);

Ganti placeholder dengan ID aktual dari respons katalog. API melakukan transaksi sungguhan dan memakai saldo akun; uji nominal kecil.

Halaman 2 — Integrasi Website PHP dan JavaScript

PHP (server-side)

<?php
$base='https://araaxz.ciparage.web.id';
$payload=['api-id'=>getenv('ARAAXZ_API_ID'),'api-key'=>getenv('ARAAXZ_API_KEY'),'country'=>'ID_NEGARA','service'=>'SERVER|ID_APLIKASI','reff-id'=>'web-'.bin2hex(random_bytes(12))];
$ch=curl_init($base.'/api/create-order.php');
curl_setopt_array($ch,[CURLOPT_POST=>true,CURLOPT_RETURNTRANSFER=>true,CURLOPT_HTTPHEADER=>['Content-Type: application/json','Accept: application/json'],CURLOPT_POSTFIELDS=>json_encode($payload),CURLOPT_CONNECTTIMEOUT=>10,CURLOPT_TIMEOUT=>25]);
$raw=curl_exec($ch);$http=(int)curl_getinfo($ch,CURLINFO_HTTP_CODE);
if($raw===false){$err=curl_error($ch);curl_close($ch);throw new RuntimeException($err);}curl_close($ch);
$result=json_decode($raw,true);
if(!is_array($result)||$http<200||$http>=300||empty($result['status']))throw new RuntimeException($result['message']??"AraaXZ gagal (HTTP $http)");
echo htmlspecialchars((string)$result['data']['phone'],ENT_QUOTES,'UTF-8');
?>

JavaScript frontend (panggil backend website Anda)

// Jangan pernah taruh API key di JavaScript browser.
document.querySelector('#buy').addEventListener('click', async () => {
  const response = await fetch('/backend/order.php', {method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({service:document.querySelector('#service').value,country:document.querySelector('#country').value})});
  const result = await response.json();
  if(!response.ok || !result.success){document.querySelector('#message').textContent=result.message||'Order gagal';return;}
  document.querySelector('#message').textContent=`Nomor: ${result.phone}`;
});

/backend/order.php adalah endpoint backend milik website Anda, bukan endpoint bawaan AraaXZ. Backend harus memvalidasi input, membuat reff-id unik, dan meneruskan request ke AraaXZ menggunakan API key dari environment server.

Troubleshooting HTTP 400