6.0 KiB
Berikut adalah Dokumentasi Teknis (API Documentation) lengkap untuk integrasi Middleware Payment Gateway Anda.
Dokumentasi ini ditujukan untuk developer (Frontend/Backend) yang akan menghubungkan aplikasi lain (seperti Billing System, Toko Online, Aplikasi Donasi) ke gateway ini.
📚 Dokumentasi API Payment Gateway
Version: 1.0.0
Base URL: http://ip-server-anda:5000 (Sesuaikan dengan IP/Domain VPS)
🔐 Autentikasi
Setiap request ke API ini wajib menyertakan kredensial otentikasi yang didapatkan dari Dashboard Admin (Menu App Keys).
Kredensial dikirim melalui HTTP Headers:
| Header Name | Value | Keterangan |
|---|---|---|
X-App-Code |
biling (contoh) |
Kode unik aplikasi klien |
X-Api-Key |
fb93... |
Secret Key aplikasi klien |
🚀 Endpoints
1. Buat Transaksi (Create Transaction)
Membuat token pembayaran dan link redirect Snap Midtrans.
- URL:
/charge - Method:
POST - Content-Type:
application/json
Parameter Body (JSON):
| Field | Tipe | Wajib? | Deskripsi |
|---|---|---|---|
order_id |
String | Ya | ID unik tagihan (misal: INV-1001) |
amount |
Integer | Ya | Nominal pembayaran (tanpa desimal) |
item_details |
Array | Tidak | Detail barang/jasa (lihat contoh) |
customer_details |
Object | Tidak | Data pelanggan (Nama, Email, HP) |
Contoh Request:
{
"order_id": "INV-2025-001",
"amount": 150000,
"customer_details": {
"first_name": "Budi",
"last_name": "Santoso",
"email": "budi@example.com",
"phone": "08123456789"
},
"item_details": [
{
"id": "VPS-01",
"price": 150000,
"quantity": 1,
"name": "Cloud VPS Basic"
}
]
}
Contoh Response Sukses (201 Created):
{
"redirect_url": "https://app.midtrans.com/snap/v4/redirection/0f8736b5-...",
"token": "0f8736b5-2f1f-40bd-b3ad-0ef0a06d3443"
}
Catatan: Gunakan
redirect_urluntuk mengarahkan user ke halaman pembayaran, atau gunakantokenjika Anda menggunakan Snap.js di frontend.
2. Cek Status Transaksi
Mengecek status pembayaran secara realtime ke Midtrans.
- URL:
/status/<order_id> - Method:
GET
Contoh Request:
GET /status/INV-2025-001
Contoh Response (200 OK):
{
"id": "e67a2012-3208-4b3e-...",
"transaction_status": "settlement",
"fraud_status": "accept",
"status_code": "200",
"status_message": "Success, transaction is found"
}
Status Penting:
settlement/capture: Pembayaran Sukses.pending: Menunggu pembayaran.expire: Kadaluarsa.cancel/deny: Gagal.
💻 Contoh Implementasi Code
Berikut adalah contoh cara menembak API ini menggunakan Python dan PHP.
A. Python (Requests)
import requests
import json
url = "http://localhost:5000/charge"
payload = {
"order_id": "TAGIHAN-001",
"amount": 50000,
"customer_details": {
"first_name": "Andri",
"email": "andri@indoweb.id",
"phone": "08123456789"
}
}
headers = {
'X-App-Code': 'biling',
'X-Api-Key': 'fb93b4e802314a189809f393d913bba6', # Ganti dengan API Key asli
'Content-Type': 'application/json'
}
try:
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 201:
data = response.json()
print("Link Bayar:", data['redirect_url'])
else:
print("Error:", response.text)
except Exception as e:
print(e)
B. PHP (cURL)
Cocok untuk diintegrasikan ke WHMCS atau Billing berbasis PHP.
<?php
$curl = curl_init();
$payload = [
"order_id" => "INV-" . time(),
"amount" => 100000,
"customer_details" => [
"first_name" => "Client",
"email" => "client@example.com"
]
];
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://localhost:5000/charge',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => array(
'X-App-Code: biling',
'X-Api-Key: fb93b4e802314a189809f393d913bba6',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($httpcode == 201) {
$data = json_decode($response, true);
echo "Silakan bayar di sini: " . $data['redirect_url'];
} else {
echo "Gagal membuat transaksi: " . $response;
}
?>
⚙️ Konfigurasi Server (Info Admin)
Informasi ini untuk Administrator Server Gateway.
1. File Konfigurasi (.env)
Lokasi: /opt/midtrans_flask/.env
Pastikan data berikut benar:
# Security App
SECRET_KEY=rahasia_negara_api_2025
# Midtrans Credentials (Dapat dari Dashboard Midtrans)
MIDTRANS_SERVER_KEY=Mid-server-YXLR8xjEkrISCXtlDvS7FDFX
MIDTRANS_CLIENT_KEY=Mid-client-j8BudqVadevtaNbQ
MIDTRANS_MERCHANT_ID=G996317131
# Mode Environment
# Ubah ke 'false' jika masih testing (Sandbox)
# Ubah ke 'true' jika sudah live (Production) - Uang Asli!
MIDTRANS_IS_PRODUCTION=true
2. Cara Restart Service
Jika Anda mengubah file .env, service harus direstart:
systemctl restart midtrans-gateway
3. Logs Untuk melihat log transaksi atau error:
journalctl -u midtrans-gateway -f
# Atau jika manual:
tail -f /opt/midtrans_flask/app.log
⚠️ Troubleshooting Common Errors
| Status Code | Pesan Error | Penyebab & Solusi |
|---|---|---|
401 |
Unauthorized | API Key/App Code salah. Cek kembali header request Anda. |
400 |
Bad Request | Data JSON tidak valid. Pastikan order_id unik dan amount berupa angka (integer). |
500 |
Internal Server Error | Masalah koneksi ke Midtrans. Cek koneksi internet server atau Server Key Midtrans di .env. |
404 |
Endpoint not found | Salah URL. Pastikan endpoint /charge atau /status benar. |