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
https://ramashop.my.id/api/public
Langkah Cepat Mulai
Dapatkan API Key
Daftar/Login ke Dashboard lalu buka menu API Key untuk menggenerate Kunci Rahasia Anda.
Header Authentication
Sertakan header X-API-Key pada setiap request endpoint yang dilindungi.
Integrasikan Endpoint
Gunakan endpoint Cek Saldo, Deposit QRIS, dan Cek Status di aplikasi Anda.
Autentikasi API
Semua request API membutuhkan autentikasi menggunakan HTTP Header khusus. Sistem menggunakan X-API-Key sebagai kredensial validasi.
X-API-Key: your_api_key_here
.env).
1. Mendapatkan Saldo Akun
Mengambil informasi detail akun serta sisa saldo saat ini.
Meminta informasi saldo dan profil merchant.
Header Request
| Parameter Header | Tipe | Status | Deskripsi |
|---|---|---|---|
| X-API-Key | string | Wajib | API Key akun merchant Anda |
Contoh Response (200 OK)
{
"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
Sistem akan merespon dengan URL gambar QRIS dan String QRIS yang dapat di-scan pengguna.
Header Request
| Header | Tipe | Status | Deskripsi |
|---|---|---|---|
| X-API-Key | string | Wajib | API Key merchant Anda |
| Content-Type | string | Wajib | Harus application/json |
Request Body (JSON)
| Parameter Body | Tipe | Status | Deskripsi |
|---|---|---|---|
| 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)
{
"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.
Path Parameter
| Parameter | Tipe | Status | Deskripsi |
|---|---|---|---|
| depositId | string | Wajib | ID deposit (contoh: DEP1234567890) |
Varian Status Response
{
"status": true,
"data": {
"status": "success",
"depositId": "DEP1789212377709",
"amount": 10000,
"totalAmount": 10073,
"createdAt": "2026-01-08T12:20:00Z",
"paidAt": "2026-01-08T12:30:00Z"
}
}
{
"status": true,
"data": {
"status": "pending",
"depositId": "DEP1789212377709",
"amount": 10000,
"totalAmount": 10073,
"createdAt": "2026-01-08T12:20:00Z"
}
}
{
"status": true,
"data": {
"status": "expired",
"depositId": "DEP1789212377709",
"amount": 10000,
"totalAmount": 10073,
"createdAt": "2026-01-08T12:20:00Z"
}
}
{
"status": true,
"data": {
"status": "already",
"depositId": "DEP1789212377709",
"amount": 10000,
"totalAmount": 10073,
"createdAt": "2026-01-08T12:20:00Z"
}
}
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).
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);
}
})();
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);
});
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
$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);
?>
# 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"