Pengenalan API

Selamat datang di dokumentasi resmi Rama Shop Payment Gateway API. Layanan REST API ini memungkinkan pengembang mengintegrasikan pembayaran otomatis (Payment Gateway) menggunakan fitur deposit dan check deposit. Penggunaan yang cukup simple dan mudah difahami yang bisa digunakan untuk berbagai bank indonesia, bank malaysia, E-wallet, dll

Base URL Endpoint API:
https://ramashop.my.id/api/public

Langkah Cepat Mulai

1

Dapatkan API Key

Daftar/Login ke Dashboard lalu buka menu API Key untuk menggenerate Kunci Rahasia Anda.

2

Header Authentication

Sertakan header X-API-Key pada setiap request endpoint yang dilindungi.

3

Integrasikan Endpoint

Gunakan endpoint Cek Saldo, Deposit QRIS, dan Cek Status di aplikasi Anda.

Keunggulan API: Auto mutasi QRIS real-time, fee terjangkau, proteksi keamanan tingkat tinggi, dan uptime server 99.9%.

Autentikasi API

Semua request API membutuhkan autentikasi menggunakan HTTP Header khusus. Sistem menggunakan X-API-Key sebagai kredensial validasi.

Format Header Autentikasi
X-API-Key: your_api_key_here
Peringatan Keamanan: Jangan pernah menyebarkan API Key Anda di repositori publik (seperti GitHub) atau di sisi client-side (Frontend JavaScript). Selalu simpan API Key di file konfigurasi server backend Anda (environment variable .env).

1. Mendapatkan Saldo Akun

Mengambil informasi detail akun serta sisa saldo saat ini.

GET /balance

Meminta informasi saldo dan profil merchant.

Header Request

Parameter HeaderTipeStatusDeskripsi
X-API-Key string Wajib API Key akun merchant Anda

Contoh Response (200 OK)

Application/JSON
{
  "success": true,
  "data": {
    "balance": 50000,
    "username": "john_doe",
    "email": "john@example.com"
  }
}

2. Membuat Deposit QRIS Baru

Membuat pembayaran otomatis via QRIS yang dapat anda gunakan sebagai Payment Gateway

POST /deposit/create

Sistem akan merespon dengan URL gambar QRIS dan String QRIS yang dapat di-scan pengguna.

Header Request

HeaderTipeStatusDeskripsi
X-API-Key string Wajib API Key merchant Anda
Content-Type string Wajib Harus application/json

Request Body (JSON)

Parameter BodyTipeStatusDeskripsi
amount number Wajib Nominal deposit dasar (Min: 100)
method string Opsional Metode pembayaran (Default: qris)

Contoh Request Body

{
  "amount": 10000,
  "method": "qris"
}

Contoh Response (200 OK)

JSON Response
{
  "success": true,
  "data": {
    "depositId": "DEP1234567890",
    "amount": 10000,
    "uniqueCode": 73,
    "totalAmount": 10073,
    "fee": 0,
    "getBalance": 10000,
    "qrImage": "https://api.qrserver.com/v1/create-qr-code/?data=...",
    "qrString": "00020101021126670016...",
    "status": "pending",
    "expiredAt": "2026-01-08T13:00:00.000Z"
  },
  "message": "Silakan bayar Rp 10.073 (10.000 + kode unik 73)"
}

3. Cek Status Deposit QRIS

Mengecek status pembayaran deposit secara real-time. Sistem secara otomatis memverifikasi Pembayaran QRIS yang diterima.

GET /deposit/status/{depositId}

Path Parameter

ParameterTipeStatusDeskripsi
depositId string Wajib ID deposit (contoh: DEP1234567890)

Varian Status Response

Status: success
{
  "status": true,
  "data": {
   "status": "success",
    "depositId": "DEP1789212377709",
     "amount": 10000,
    "totalAmount": 10073,
     "createdAt": "2026-01-08T12:20:00Z",
    "paidAt": "2026-01-08T12:30:00Z"
  }
}
Status: pending
{
  "status": true,
  "data": {
    "status": "pending",
      "depositId": "DEP1789212377709",
     "amount": 10000,
    "totalAmount": 10073,
     "createdAt": "2026-01-08T12:20:00Z"
  }
}
Status: expired
{
  "status": true,
  "data": {
    "status": "expired",
      "depositId": "DEP1789212377709",
     "amount": 10000,
    "totalAmount": 10073,
     "createdAt": "2026-01-08T12:20:00Z"
  }
}
Status: already
{
  "status": true,
  "data": {
    "status": "already",
      "depositId": "DEP1789212377709",
     "amount": 10000,
    "totalAmount": 10073,
     "createdAt": "2026-01-08T12:20:00Z"
  }
}
Catatan Status:
  • pending: Pembayaran belum masuk ke mutasi.
  • success: Pembayaran cocok & saldo baru saja ditambahkan.
  • already: Pembayaran sudah berhasil diproses sebelumnya.
  • expired: Pembayaran Yang sudah mencapai batas waktu.
  • Rate Limit: Sistem memiliki jeda cache ~10 detik untuk mencegah spam request status.

Kode Status & Error HTTP

API Rama Shop menggunakan standar Kode HTTP Response untuk memberikan petunjuk status transaksi.

HTTP Code Status Name Keterangan Deskripsi
200 OK Permintaan berhasil dieksekusi tanpa kendala.
400 Bad Request Parameter request body kurang, invalid, atau nominal tidak sesuai.
401 Unauthorized Header X-API-Key hilang atau API Key yang dimasukkan salah/kadaluarsa.
404 Not Found Endpoint URL atau ID Resource (Deposit ID) tidak ditemukan.
500 Internal Server Error Terjadi kesalahan pada server backend. Hubungi Customer Service jika berlanjut.

Contoh Kode Penggunaan (Multi-Language)

Pilih bahasa pemrograman favorit Anda di bawah ini untuk melihat contoh integrasi alur lengkap (Cek Saldo, Buat Deposit, dan Polling Status Pembayaran).

Node.js ES6 Example
const API_KEY = 'YOUR_API_KEY_HERE';
const BASE_URL = 'https://ramashop.my.id/api/public';

// 1. Function Cek Saldo
async function getBalance() {
  const response = await fetch(`${BASE_URL}/balance`, {
    headers: { 'X-API-Key': API_KEY }
  });
  return await response.json();
}

// 2. Function Buat Deposit QRIS
async function createDeposit(amount) {
  const response = await fetch(`${BASE_URL}/deposit/create`, {
    method: 'POST',
    headers: {
      'X-API-Key': API_KEY,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ amount, method: 'qris' })
  });
  return await response.json();
}

// 3. Function Polling Status Deposit
async function pollDepositStatus(depositId) {
  const timer = setInterval(async () => {
    try {
      const res = await fetch(`${BASE_URL}/deposit/status/${depositId}`, {
        headers: { 'X-API-Key': API_KEY }
      });
      const data = await res.json();
      console.log('Status Terkini:', data);

      if (data.data && data.data.status === 'success') {
        console.log('✅ Pembayaran Berhasil Diisi!');
        clearInterval(timer);
      }
    } catch (err) {
      console.error('Error checking status:', err);
    }
  }, 10000); // Cek setiap 10 detik
}

// Eksekusi Contoh Alur
(async () => {
  const saldo = await getBalance();
  console.log('Saldo Akun:', saldo);

  const deposit = await createDeposit(10000);
  console.log('Deposit Terbuat:', deposit);

  if (deposit.success) {
    pollDepositStatus(deposit.data.depositId);
  }
})();
Vanilla JS (Promises)
const API_KEY = 'YOUR_API_KEY_HERE';

// 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);
  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.data.status === 'success') {
        console.log('✅ Deposit berhasil');
        clearInterval(interval);
      }
    });
  }, 10000);
});
Python (requests library)
import requests
import time

API_KEY = "YOUR_API_KEY_HERE"
BASE_URL = "https://ramashop.my.id/api/public"

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

# 1. Cek Saldo
def get_balance():
    res = requests.get(f"{BASE_URL}/balance", headers=headers)
    return res.json()

# 2. Buat Deposit
def create_deposit(amount):
    payload = {"amount": amount, "method": "qris"}
    res = requests.post(f"{BASE_URL}/deposit/create", headers=headers, json=payload)
    return res.json()

# 3. Cek Status Deposit
def check_status(deposit_id):
    res = requests.get(f"{BASE_URL}/deposit/status/{deposit_id}", headers=headers)
    return res.json()

# Contoh Jalankan
if __name__ == "__main__":
    print("Saldo Akun:", get_balance())
    
    dep = create_deposit(10000)
    print("Respon Deposit:", dep)
    
    if dep.get("success"):
        dep_id = dep["data"]["depositId"]
        print(f"Monitoring status deposit {dep_id}...")
        
        while True:
            time.sleep(10)
            st = check_status(dep_id)
            print("Status terkini:", st)
            if st.get("data", {}).get("status") == "success":
                print("✅ Deposit Berhasil Sukses!")
                break
PHP (cURL Native)
<?php
$apiKey = 'YOUR_API_KEY_HERE';
$baseUrl = 'https://ramashop.my.id/api/public';

// 1. Fungsi Cek Saldo
function getBalance($apiKey, $baseUrl) {
    $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);
    return json_decode($response, true);
}

// 2. Fungsi Buat Deposit QRIS
function createDeposit($apiKey, $baseUrl, $amount) {
    $ch = curl_init($baseUrl . '/deposit/create');
    $payload = json_encode(['amount' => $amount, 'method' => 'qris']);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "X-API-Key: $apiKey",
        "Content-Type: application/json"
    ]);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
    return json_decode($response, true);
}

// Uji Coba
$saldo = getBalance($apiKey, $baseUrl);
print_r($saldo);

$deposit = createDeposit($apiKey, $baseUrl, 10000);
print_r($deposit);
?>
cURL CLI Commands
# 1. Cek Saldo Akun
curl -X GET "https://ramashop.my.id/api/public/balance"   -H "X-API-Key: YOUR_API_KEY_HERE"

# 2. Buat Transaksi Deposit QRIS
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"}'

# 3. Cek Status Pembayaran Deposit
curl -X GET "https://ramashop.my.id/api/public/deposit/status/DEP1234567890"   -H "X-API-Key: YOUR_API_KEY_HERE"