REST API REFERENCE V1 — NODERA PAY

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.

Base Endpoint API
https://gateway.dgtlnetsolution.com/api/v1/noderapay

Gunakan endpoint ini sebagai awalan seluruh route pemanggilan API.

IP Server NODERA PAY (Outbound)
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:

Metode 1: Body Parameter
{
  "code_merchant": "NP-YOURMERCHANT",
  "api_key": "np_live_your_api_key"
}
Metode 2: HTTP Headers
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.

POST https://gateway.dgtlnetsolution.com/api/v1/noderapay/create-transaction

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.

GET https://gateway.dgtlnetsolution.com/api/v1/noderapay/get-status

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.

Formula Keamanan Signature (HMAC SHA-256)
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.