https://snpdigital.sanpay.id/api/h2h/
Endpoint utama: https://snpdigital.sanpay.id/api/h2h/transaksi_produk
Untuk menjaga keamanan data dan transaksi, sistem kami menerapkan beberapa lapisan keamanan yang WAJIB dipatuhi:
| Header | Deskripsi | Contoh |
|---|---|---|
X-API-Key |
API Key unik Anda (dapat dilihat di halaman Pengaturan Integrasi) | abc123def456... |
X-Signature |
Signature HMAC-SHA256 dari request body | a1b2c3d4e5f6... |
Content-Type |
Format data yang dikirim | application/json |
X-Signature dibuat menggunakan algoritma HMAC-SHA256 dengan format:
HMAC-SHA256(json_string, api_key)
Langkah-langkah:
<?php
$api_key = 'YOUR_API_KEY';
$data = [
'kode_produk' => 'DN05',
'tujuan' => '081234567890'
];
$json_string = json_encode($data, JSON_UNESCAPED_SLASHES);
$signature = hash_hmac('sha256', $json_string, $api_key);
echo "X-Signature: " . $signature;
?>
const crypto = require('crypto');
const apiKey = 'YOUR_API_KEY';
const data = {
kode_produk: 'DN05',
tujuan: '081234567890'
};
const jsonString = JSON.stringify(data);
const signature = crypto
.createHmac('sha256', apiKey)
.update(jsonString)
.digest('hex');
console.log('X-Signature:', signature);
import hmac
import hashlib
import json
api_key = 'YOUR_API_KEY'
data = {
'kode_produk': 'DN05',
'tujuan': '081234567890'
}
json_string = json.dumps(data, separators=(',', ':'))
signature = hmac.new(
api_key.encode('utf-8'),
json_string.encode('utf-8'),
hashlib.sha256
).hexdigest()
print(f'X-Signature: {signature}')
Endpoint ini digunakan untuk membeli produk yang tersedia di sistem. Anda bisa membeli produk prabayar (seperti pulsa, e-wallet) maupun pascabayar (seperti tagihan listrik, transfer bank).
URL: POST https://snpdigital.sanpay.id/api/h2h/transaksi_produk
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
kode_produk |
string | Ya | Kode produk yang terlihat di dashboard Anda |
tujuan |
string | Ya | Nomor tujuan (nomor HP, rekening, dll sesuai produk) |
nominal |
integer | Kondisional | Nominal transaksi (wajib diisi untuk produk pascabayar seperti transfer bank dan tagihan, tidak diperlukan untuk produk prabayar seperti pulsa dan token listrik) |
ref_id |
string | Tidak | Ref ID custom (unik, jika tidak diisi akan auto-generate) |
{
"kode_produk": "DN05",
"tujuan": "081234567890",
"nominal": 10000,
"ref_id": "CUSTOM-REF-123"
}
{
"success": true,
"data": {
"ref_id": "SP-1234567890-5678",
"kode_produk": "DN05",
"tujuan": "081234567890",
"status": "sukses",
"sn": "SN123456789",
"pesan": "Transaksi berhasil",
"harga": 5300
}
}
Di sistem kami, produk dibagi menjadi tiga kategori utama berdasarkan cara pembeliannya: Prabayar (Nominal Tetap), Pascabayar (Nominal Bebas), dan Pascabayar (Tagihan). Setiap kategori memiliki format request yang berbeda.
Produk prabayar adalah produk yang sudah memiliki nominal tetap dan tidak dapat diubah. Contoh produk: Pulsa, Token Listrik, Paket Data, dll.
Parameter yang diperlukan:
kode_produk - Kode produk yang ingin dibelitujuan - Nomor tujuan (nomor HP, ID pelanggan, dll)Contoh Request:
{
"kode_produk": "PLNT5",
"tujuan": "081234567890"
}
Contoh produk prabayar: Pulsa (Telkomsel, Indosat, XL, dll), Token Listrik (PLN), Paket Data, Voucher Game, dll.
Produk pascabayar dengan nominal bebas memungkinkan Anda menentukan nominal sendiri sesuai kebutuhan. Contoh produk: Transfer Bank, Top-up E-Wallet, dll.
Parameter yang diperlukan:
kode_produk - Kode produk yang ingin dibelitujuan - Nomor tujuan (nomor rekening, nomor pelanggan, dll)nominal - Nominal transaksi (wajib diisi)Contoh Request:
{
"kode_produk": "DANAP",
"tujuan": "081234567890",
"nominal": 10000
}
Contoh produk pascabayar (nominal bebas): Transfer Bank (BCA, Mandiri, BRI, dll), Top-up E-Wallet (DANA, OVO, GoPay, dll), Transfer E-Wallet, dll.
Produk pascabayar tagihan adalah produk yang memerlukan pengecekan tagihan terlebih dahulu sebelum pembayaran. Untuk produk ini, Anda dapat melakukan cek tagihan terlebih dahulu (gratis, tidak memotong saldo) atau langsung melakukan pembayaran. Contoh produk: PDAM, BPJS Kesehatan, BPJS Ketenagakerjaan, PLN Pascabayar, Telkom, PGN, dll.
Parameter yang diperlukan:
kode_produk - Kode produk yang ingin dibelitujuan - Nomor tujuan (nomor pelanggan, ID pelanggan, dll)tipe - Tipe transaksi: "CEK" untuk cek tagihan (gratis) atau "BYR" untuk pembayaran (default: "BYR")Gunakan tipe "CEK" untuk mengecek informasi tagihan tanpa melakukan pembayaran. Tidak ada potongan saldo.
Contoh Request:
{
"kode_produk": "PLNPASC01",
"tujuan": "441420633686",
"tipe": "CEK"
}
Contoh Response:
{
"success": true,
"data": {
"ref_id": "SP-1234567890-5678",
"kode_produk": "PLNPASC01",
"tujuan": "441420633686",
"status": "inquiry",
"inquiry": {
"nama": "MANNA HUTAGALUNG",
"tag": 53939,
"admin": 3000,
"total": 56939,
"periode": "202412",
"reff": "",
"detail": {
"tarifDaya": "R1/450VA",
"lembar": 1,
"meter": "20438-20555",
"denda": 0
}
},
"tagihan": 53939,
"denda": 0,
"total_tagihan": 53939,
"harga_jual": 700,
"total_bayar": 54639
}
}
Keterangan: total_bayar = total_tagihan (tagihan + denda) + harga_jual (biaya admin sistem)
Gunakan tipe "BYR" atau tidak mengisi parameter tipe untuk melakukan pembayaran. Sistem akan otomatis melakukan inquiry, kemudian melakukan pembayaran jika saldo mencukupi.
Contoh Request:
{
"kode_produk": "PLNPASC01",
"tujuan": "441420633686",
"tipe": "BYR"
}
Contoh Response (Berhasil):
{
"success": true,
"data": {
"ref_id": "SP-1234567890-5678",
"kode_produk": "PLNPASC01",
"tujuan": "441420633686",
"status": "sukses",
"sn": "nama:MANNA HUTAGALUNG/periode:202412/tag:53939/admin:3000/total:56939/reff:3SOL21VS144580568BF2FD1701D5A65F",
"pesan": "nama:MANNA HUTAGALUNG/periode:202412/tag:53939/admin:3000/total:56939/reff:3SOL21VS144580568BF2FD1701D5A65F",
"harga": 700,
"inquiry": {
"nama": "MANNA HUTAGALUNG",
"tag": 53939,
"admin": 3000,
"total": 56939,
"periode": "202412",
"reff": "3SOL21VS144580568BF2FD1701D5A65F",
"detail": {
"tarifDaya": "R1/450VA",
"lembar": 1,
"meter": "20438-20555",
"denda": 0
}
},
"tagihan": 53939,
"denda": 0,
"total_tagihan": 53939,
"total_bayar": 54639
}
}
Contoh produk pascabayar (tagihan): PDAM, BPJS Kesehatan, BPJS Ketenagakerjaan, PLN Pascabayar, Telkom, PGN, Pertagas, Finance, dll.
kode_produk dan tujuan. Parameter nominal TIDAK perlu dikirim karena nominal sudah ditentukankode_produk, tujuan, dan nominal. Parameter nominal WAJIB diisi sesuai kebutuhan Andakode_produk, tujuan, dan tipe (CEK/BYR). Parameter nominal TIDAK perlu dikirimCallback adalah fitur yang memungkinkan sistem kami mengirim notifikasi real-time ke server Anda setiap kali status transaksi berubah.
POST [URL_CALLBACK_ANDA]
Content-Type: application/json
{
"ref_id": "SP-1234567890-5678",
"kode_produk": "DN05",
"tujuan": "081234567890",
"status": "sukses",
"sn": "SN123456789",
"pesan": "Transaksi berhasil",
"harga": 5300,
"timestamp": "2024-01-15 10:30:00"
}
Lihat contoh implementasi lengkap di halaman Dokumentasi API setelah login.
List Kategori: GET https://snpdigital.sanpay.id/api/h2h/list_kategori
List Produk: GET https://snpdigital.sanpay.id/api/h2h/list_produk?kategori={id_kategori}