Dokumentasi & Integrasi REST API
Integrasikan pembayaran otomatis QRIS dan Virtual Account ke dalam Mikhmon, billing hotspot, sistem e-commerce, atau aplikasi kustom Anda dengan cepat dan aman.
1. URL Dasar & IP Server Gateway
Base endpoint REST API dan alamat IP keluar resmi NODERA PAY.
https://gateway.dgtlnetsolution.com/api/v1/noderapay
Gunakan endpoint ini sebagai awalan seluruh route pemanggilan API.
195.88.211.243
Daftarkan IP ini pada whitelist firewall/WAF server Anda untuk webhook.
Autentikasi & Kredensial Request:
Metode autentikasi melalui Request Body atau HTTP Headers:
{
"code_merchant": "NP-YOURMERCHANT",
"api_key": "np_live_your_api_key"
}
X-Merchant-Code: NP-YOURMERCHANT
X-Api-Key: np_live_your_api_key
2. Buat Transaksi Pembayaran
Gunakan endpoint ini untuk membuat tagihan pembayaran QRIS dinamis & URL checkout.
Parameter Request (JSON Body)
| Parameter | Tipe | Status | Deskripsi | Contoh |
|---|---|---|---|---|
amount |
integer | Wajib | Nominal transaksi (minimal Rp 1.000) | 10000 |
ref_id |
string | Wajib | ID unik transaksi dari aplikasi Anda (maks 100 karakter) | HOTSPOT-123456 |
customer_name |
string | Opsional | Nama lengkap pembeli / pelanggan | Budi Santoso |
customer_phone |
string | Opsional | Nomor WhatsApp pembeli untuk kirim notifikasi/kuitansi | 081234567890 |
notes |
string | Opsional | Catatan transaksi / deskripsi produk / paket voucher | Voucher 1 Hari 5Mbps |
callback_url |
string | Opsional | Override URL webhook khusus untuk transaksi ini saja | https://domain.com/webhook |
fee_bearer |
string | Opsional | Penanggung fee: CUSTOMER (gross up) atau MERCHANT |
CUSTOMER |
expired_time |
integer | Opsional | Durasi kedaluwarsa QRIS dalam menit (default 15 menit) | 15 |
Contoh Kode Integrasi Multi-Bahasa:
<?php
$apiUrl = "https://gateway.dgtlnetsolution.com/api/v1/noderapay/create-transaction";
$merchantCode = "NP-YOURMERCHANT";
$apiKey = "np_live_your_api_key";
$data = [
'code_merchant' => $merchantCode,
'api_key' => $apiKey,
'amount' => 10000,
'ref_id' => 'HOTSPOT-' . time(),
'customer_name' => 'Pelanggan Hotspot',
'customer_phone' => '081234567890',
'notes' => 'Voucher 1 Hari 5Mbps',
'expired_time' => 15,
];
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Accept: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
if (isset($result['status']) && $result['status'] === 'success') {
$qrUrl = $result['data']['qr_url'];
$payUrl = $result['data']['checkout_url'];
echo "Scan QRIS di: " . $qrUrl;
} else {
echo "Gagal: " . ($result['message'] ?? 'Error');
}
curl -X POST "https://gateway.dgtlnetsolution.com/api/v1/noderapay/create-transaction" -H "Content-Type: application/json" -H "Accept: application/json" -d '{
"code_merchant": "NP-YOURMERCHANT",
"api_key": "np_live_your_api_key",
"amount": 10000,
"ref_id": "ORDER-987654",
"customer_name": "Budi Santoso",
"customer_phone": "081234567890",
"notes": "Pembayaran Tagihan Internet",
"expired_time": 15
}'
import axios from 'axios';
const createPayment = async () => {
try {
const res = await axios.post('https://gateway.dgtlnetsolution.com/api/v1/noderapay/create-transaction', {
code_merchant: 'NP-YOURMERCHANT',
api_key: 'np_live_your_api_key',
amount: 10000,
ref_id: `ORDER-${Date.now()}`,
customer_name: 'Budi Santoso',
customer_phone: '081234567890',
notes: 'Pembayaran Tagihan',
expired_time: 15
});
if (res.data.status === 'success') {
console.log('QR Code URL:', res.data.data.qr_url);
console.log('Checkout URL:', res.data.data.checkout_url);
}
} catch (err) {
console.error('API Error:', err.response?.data || err.message);
}
};
createPayment();
import requests
url = "https://gateway.dgtlnetsolution.com/api/v1/noderapay/create-transaction"
payload = {
"code_merchant": "NP-YOURMERCHANT",
"api_key": "np_live_your_api_key",
"amount": 10000,
"ref_id": "ORDER-123456",
"customer_name": "Budi Santoso",
"customer_phone": "081234567890",
"notes": "Langganan Bulanan",
"expired_time": 15
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json"
}
res = requests.post(url, json=payload, headers=headers)
data = res.json()
if res.status_code == 200 and data.get('status') == 'success':
print("QR Code URL:", data['data']['qr_url'])
print("Checkout URL:", data['data']['checkout_url'])
else:
print("Error:", data.get('message'))
3. Cek Status Transaksi
Periksa status pembayaran transaksi sewaktu-waktu menggunakan trx_reference atau ref_id.
Parameter Query
| Parameter | Tipe | Status | Deskripsi |
|---|---|---|---|
trx_reference |
string | Wajib (atau ref_id) | Nomor referensi transaksi dari NODERA PAY |
ref_id |
string | Wajib (atau trx_reference) | Kode referensi transaksi Anda saat create transaction |
code_merchant |
string | Wajib | Kode merchant akun Anda |
api_key |
string | Wajib | API key akun Anda (dapat dikirim di query atau header X-Api-Key) |
// Request URL
GET https://gateway.dgtlnetsolution.com/api/v1/noderapay/get-status?code_merchant=NP-YOURMERCHANT&api_key=np_live_your_api_key&trx_reference=NP-20261004-8912301
// Response (Lunas)
{
"status": "success",
"data": {
"trx_reference": "NP-20261004-8912301",
"ref_id": "HOTSPOT-123456",
"amount": 10000,
"fee": 70,
"status": "PAID",
"payment_method": "QRIS",
"paid_at": "2026-10-04 15:32:10"
}
}
4. Webhook Notifikasi & Verifikasi Signature
Notifikasi HTTP POST otomatis seketika pembayaran selesai diverifikasi.
signature = hash('sha256', $trx_reference . $ref_id . $amount . $api_key)
Contoh Handler Webhook (PHP):
<?php
$apiKey = "np_live_your_api_key";
$rawPayload = file_get_contents('php://input');
$payload = json_decode($rawPayload, true);
if (!$payload) {
http_response_code(400);
exit(json_encode(['status' => 'error', 'message' => 'Invalid JSON']));
}
$trxRef = $payload['trx_reference'] ?? '';
$refId = $payload['ref_id'] ?? '';
$amount = $payload['amount'] ?? 0;
$signature = $payload['signature'] ?? '';
$expectedSignature = hash('sha256', $trxRef . $refId . $amount . $apiKey);
if (!hash_equals($expectedSignature, $signature)) {
http_response_code(403);
exit(json_encode(['status' => 'error', 'message' => 'Invalid Signature']));
}
if (($payload['status'] ?? '') === 'paid') {
// Pembayaran Sukses! Aktifkan voucher atau perpanjang masa langganan pelanggan
}
http_response_code(200);
echo json_encode(['status' => 'ok']);
5. Syarat & Ketentuan Layanan (Terms of Service)
Ketentuan resmi pendaftaran merchant, skema biaya, penarikan dana, dan batasan penggunaan.
Pendaftaran & Akun Merchant (No-KYC Onboarding)
Pendaftaran akun merchant di NODERA PAY tidak memerlukan pengunggahan identitas pribadi (KTP/Passport) atau berkas legalitas perusahaan. Akun langsung aktif beserta kredensial Merchant Code dan API Key siap pakai.
Struktur Biaya Transaksi (Transparent Fee)
QRIS Dinamis: Biaya transaksi 0.7% per transaksi berhasil.
Virtual Account: Biaya transaksi Rp 2.500 per transaksi berhasil.
Biaya dipotong secara otomatis dari nominal transaksi masuk tanpa biaya bulanan.
Penarikan Saldo & Settlement (Payouts)
Merchant dapat mencairkan saldo hasil transaksi kapan saja ke seluruh rekening bank nasional dan dompet digital (e-wallet) di Indonesia melalui menu Penarikan Saldo di dashboard merchant.
Aktivitas & Bisnis yang Dilarang Keras
Dilarang keras untuk perjudian online, pornografi, penipuan/phishing, skema piramida/ponzi, narkotika, dan perdagangan senjata api. Pelanggaran berakibat pemblokiran permanen akun & saldo.