Docs API

Panduan lengkap untuk integrasi Payment Gateway API

Status API: Beroperasi

Pengenalan

Selamat datang di dokumentasi Payment Gateway API. API ini memungkinkan Anda untuk mengintegrasikan pemrosesan pembayaran, deposit, dan manajemen saldo ke dalam aplikasi Anda.

URL Dasar

https://ramashop.my.id/api/public

Mulai Cepat

1

Dapatkan API Key Anda

Login ke dashboard Anda dan buat API key unik dari bagian pengaturan API.

2

Autentikasi Permintaan

Sertakan API key Anda di header X-API-Key untuk semua permintaan API.

3

Mulai Mengintegrasikan

Gunakan endpoint di bawah ini untuk menerapkan pemrosesan pembayaran di aplikasi Anda.

Integrasi Cepat

Endpoint yang mudah digunakan dengan dokumentasi jelas untuk implementasi cepat

Aman

Keamanan tingkat bank dengan autentikasi API key dan data terenkripsi

Terpercaya

Uptime 99.9% dengan pemantauan real-time dan failover otomatis

Dukungan

Dukungan teknis 24/7 dan dokumentasi komprehensif

✅ Fitur:
  • Deposit via QRIS dengan kode unik
  • Manajemen saldo
  • Pemrosesan pembayaran
  • Riwayat transaksi
  • Pembaruan status real-time

Autentikasi

Semua permintaan API memerlukan autentikasi menggunakan API key. Anda dapat membuat API key dari dashboard setelah login.

Cara Autentikasi

Sertakan API key Anda di header permintaan:

X-API-Key: your_api_key_here
⚠️ Peringatan Keamanan: Jangan pernah membagikan API key Anda atau menyimpannya di repositori publik. Simpan dengan aman dan rahasia.

Mendapatkan API Key

  1. Login ke dashboard Anda
  2. Klik menu (☰) di kanan atas
  3. Pilih "API Key"
  4. Klik "Generate API Key"
  5. Salin dan simpan API key Anda dengan aman

Mendapatkan Saldo

GET /balance

Mengambil saldo akun Anda saat ini.

Headers
X-API-Key string wajib

API key Anda untuk autentikasi

Response (200 OK)
{
  "success": true,
  "data": {
    "balance": 50000,
    "username": "john_doe",
    "email": "john@example.com"
  }
}

Membuat Deposit

POST /deposit/create

Buat permintaan deposit baru. Anda akan menerima kode QR dengan jumlah unik untuk dibayar.

Headers
X-API-Key string wajib
Content-Type string wajib

Harus: application/json

Request Body
amount number wajib

Jumlah deposit (minimum: 100)

method string opsional

Metode pembayaran (default: "qris")

Contoh Request
{
  "amount": 10000,
  "method": "qris"
}
Response (200 OK)
{
  "success": true,
  "data": {
    "depositId": "DEP1234567890",
    "amount": 10000,
    "uniqueCode": 73,
    "totalAmount": 10073,
    "fee": 0,
    "getBalance": 10000,
    "qrImage": "https://api.qrserver.com/...",
    "qrString": "00020101021126670016...",
    "status": "pending",
    "expiredAt": "2024-01-01T13:00:00.000Z"
  },
  "message": "Silakan bayar Rp 10.073 (10.000 + kode unik 73)"
}

Cek Status Deposit

GET /api/public/deposit/status/{depositId}

Endpoint ini digunakan untuk mengecek status deposit QRIS secara real-time. Sistem akan mencocokkan nominal transfer dengan riwayat transaksi QRIS. Jika nominal sesuai, deposit akan otomatis dianggap berhasil.

Headers
X-API-Key string wajib

API Key akun Anda

Content-Type string opsional

Gunakan application/json

URL Parameter
depositId string wajib

ID deposit yang didapat saat membuat deposit

Contoh Request
fetch("https://ramashop.my.id/api/public/deposit/status/DEP123456", {
  headers: {
    "X-API-Key": "API_KEY_ANDA",
    "Content-Type": "application/json"
  }
})
.then(res => res.json())
.then(console.log)
        
Response (200 OK) - Berhasil
{
  "status": true,
  "data": {
    "status": "success",
    "paidAmount": 50000,
    "paidAt": "2026-01-08T12:30:00Z"
  }
}
Response (200 OK) - Pending
{
  "status": true,
  "data": {
    "status": "pending"
  }
}
Response (200 OK) - Sudah Diproses
{
  "status": true,
  "data": {
    "status": "already"
  }
}
Catatan Penting
  • Status pending berarti sistem belum menemukan transaksi QRIS yang cocok.
  • Status success berarti nominal QRIS sudah terverifikasi.
  • Status already berarti transaksi sudah pernah diproses sebelumnya.
  • Sistem memiliki cache ±5 detik untuk mencegah spam request.

Kode Error

API menggunakan kode status HTTP standar untuk menunjukkan keberhasilan atau kegagalan.

Kode Status Deskripsi
200 OK Permintaan berhasil
400 Bad Request Parameter tidak valid atau saldo tidak cukup
401 Unauthorized API key tidak valid atau tidak ada
404 Not Found Sumber daya tidak ditemukan
500 Internal Server Error Kesalahan server

Contoh Kode

JavaScript (Fetch API)

// Contoh penggunaan API tanpa async / await

// API Key
const API_KEY = 'YOUR_API_KEY';

// 1. Cek Saldo
fetch('https://ramashop.my.id/api/public/balance', {
  headers: {
    'X-API-Key': API_KEY
  }
})
.then(res => res.json())
.then(data => {
  console.log('Saldo:', data);
})
.catch(err => {
  console.error('Error cek saldo:', err);
});

// 2. Membuat Deposit QRIS
fetch('https://ramashop.my.id/api/public/deposit/create', {
  method: 'POST',
  headers: {
    'X-API-Key': API_KEY,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    amount: 10000,
    method: 'qris'
  })
})
.then(res => res.json())
.then(data => {
  console.log('Create Deposit:', data);

  // Ambil depositId untuk cek status
  const depositId = data.data.depositId;

  // 3. Cek Status Deposit setiap 10 detik
  const interval = setInterval(() => {
    fetch(
      `https://ramashop.my.id/api/public/deposit/status/${depositId}`,
      {
        headers: {
          'X-API-Key': API_KEY
        }
      }
    )
    .then(res => res.json())
    .then(status => {
      console.log('Status Deposit:', status);

      if (status.data.status === 'success') {
        console.log('✅ Deposit berhasil');
        clearInterval(interval);
      }

      if (status.data.status === 'already') {
        console.log('⚠️ Deposit sudah diproses');
        clearInterval(interval);
      }
    })
    .catch(err => {
      console.error('Error cek status:', err);
    });

  }, 10000);
})
.catch(err => {
  console.error('Error create deposit:', err);
});

cURL

# Mendapatkan Saldo
curl -H "X-API-Key: your_api_key_here" \
  https://ramashop.my.id/api/public/balance

# Membuat Deposit
curl -X POST https://ramashop.my.id/api/public/deposit/create \
  -H "X-API-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"amount": 10000, "method": "qris"}'


# Memeriksa Status Deposit
curl -H "X-API-Key: your_api_key_here" \
  https://ramashop.my.id/api/public/deposit/status/DEP1234567890

# Mendapatkan Riwayat Transaksi
curl -H "X-API-Key: your_api_key_here" \
  https://ramashop.my.id/api/public/history

Python (Requests)

import requests

API_KEY = 'your_api_key_here'
BASE_URL = 'https://ramashop.my.id/api/public'

headers = {
    'X-API-Key': API_KEY,
    'Content-Type': 'application/json'
}

// Mendapatkan Saldo
response = requests.get(f'{BASE_URL}/balance', headers=headers)
print(response.json())

// Membuat Deposit
data = {
    'amount': 10000,
    'method': 'qris'
}
response = requests.post(f'{BASE_URL}/deposit/create', 
                        headers=headers, 
                        json=data)
print(response.json())


// Memeriksa Status Deposit
deposit_id = "DEP1234567890"
response = requests.get(f'{BASE_URL}/deposit/status/{deposit_id}', headers=headers)
print(response.json())

// Mendapatkan Riwayat Transaksi
response = requests.get(f'{BASE_URL}/history', headers=headers)
print(response.json())

PHP

<?php
$apiKey = 'your_api_key_here';
$baseUrl = 'https://ramashop.my.id/api/public';

// Mendapatkan Saldo
$ch = curl_init($baseUrl . '/balance');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-API-Key: ' . $apiKey
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

// Membuat Deposit
$data = json_encode([
    'amount' => 10000,
    'method' => 'qris'
]);

$ch = curl_init($baseUrl . '/deposit/create');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-API-Key: ' . $apiKey,
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

// Membuat Pembayaran
$data = json_encode([
    'amount' => 5000,
    'description' => 'Topup Pulsa'
]);

$ch = curl_init($baseUrl . '/payment/create');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-API-Key: ' . $apiKey,
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

// Memeriksa Status Deposit
$depositId = "DEP1234567890";
$ch = curl_init($baseUrl . '/deposit/status/' . $depositId);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-API-Key: ' . $apiKey
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

// Mendapatkan Riwayat Transaksi
$ch = curl_init($baseUrl . '/history');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-API-Key: ' . $apiKey
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>