Dokumentasi API

Base URL API
https://snpdigital.sanpay.id/api/h2h/

Endpoint utama: https://snpdigital.sanpay.id/api/h2h/transaksi_produk


1. Autentikasi & Keamanan

Untuk menjaga keamanan data dan transaksi, sistem kami menerapkan beberapa lapisan keamanan yang WAJIB dipatuhi:

Persyaratan Keamanan Wajib:
  1. HTTPS WAJIB: Semua request API HARUS menggunakan protokol HTTPS. Request yang menggunakan HTTP akan DITOLAK OTOMATIS oleh server.
  2. IP Whitelist WAJIB: IP Address server Anda HARUS terdaftar di "IP Address Yang Diizinkan". Jika tidak ada IP yang terdaftar, SEMUA akses akan ditolak.
  3. API Key & Signature: Setiap request harus menyertakan API Key dan X-Signature yang valid.
Headers yang Diperlukan:
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
Cara Membuat X-Signature (HMAC-SHA256):

X-Signature dibuat menggunakan algoritma HMAC-SHA256 dengan format:

HMAC-SHA256(json_string, api_key)

Langkah-langkah:

  1. Konversi request body menjadi JSON string (tanpa whitespace tambahan, tanpa escape slash)
  2. Gunakan API Key sebagai secret key
  3. Hitung HMAC-SHA256 dari JSON string menggunakan API Key
  4. Hasil hex string adalah X-Signature
Contoh Implementasi:

2. Endpoint: Beli Produk

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

Request Body:
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"
}
Response Sukses (HTTP 200):
{
  "success": true,
  "data": {
    "ref_id": "SP-1234567890-5678",
    "kode_produk": "DN05",
    "tujuan": "081234567890",
    "status": "sukses",
    "sn": "SN123456789",
    "pesan": "Transaksi berhasil",
    "harga": 5300
  }
}

3. Kategori Produk

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.

A. Produk Prabayar (Nominal Tetap)

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 dibeli
  • tujuan - 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.

B. Produk Pascabayar (Nominal Bebas)

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 dibeli
  • tujuan - 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.

C. Produk Pascabayar (Tagihan)

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 dibeli
  • tujuan - Nomor tujuan (nomor pelanggan, ID pelanggan, dll)
  • tipe - Tipe transaksi: "CEK" untuk cek tagihan (gratis) atau "BYR" untuk pembayaran (default: "BYR")
1. Cek Tagihan (CEK) - Gratis

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)

2. Pembayaran (BYR)

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.

Panduan Penggunaan:
  • Produk Prabayar (Nominal Tetap): Hanya perlu kode_produk dan tujuan. Parameter nominal TIDAK perlu dikirim karena nominal sudah ditentukan
  • Produk Pascabayar (Nominal Bebas): Perlu kode_produk, tujuan, dan nominal. Parameter nominal WAJIB diisi sesuai kebutuhan Anda
  • Produk Pascabayar (Tagihan): Perlu kode_produk, tujuan, dan tipe (CEK/BYR). Parameter nominal TIDAK perlu dikirim
  • CEK (Cek Tagihan): Gratis, tidak memotong saldo. Hanya mengecek informasi tagihan. Gunakan untuk melihat detail tagihan sebelum melakukan pembayaran
  • BYR (Pembayaran): Melakukan inquiry dan pembayaran. Total yang dipotong = Tagihan + Denda + Harga Jual (biaya admin sistem). Pastikan saldo mencukupi
  • Anda dapat melihat kategori produk di halaman "List Produk" di dashboard
  • Pastikan format request sesuai dengan kategori produk agar transaksi berhasil
  • Jika format salah, transaksi akan gagal dan saldo akan dikembalikan otomatis
  • Untuk produk pascabayar tagihan dengan tipe BYR, pastikan saldo Anda mencukupi untuk membayar: Tagihan + Denda + Harga Jual

4. Callback - Notifikasi Real-time

Callback adalah fitur yang memungkinkan sistem kami mengirim notifikasi real-time ke server Anda setiap kali status transaksi berubah.

Format Data Callback (JSON):
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"
}

5. Contoh Implementasi Lengkap

Lihat contoh implementasi lengkap di halaman Dokumentasi API setelah login.


6. API List Kategori & Produk

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}


7. Catatan Penting

  • Saldo: Pastikan saldo Anda mencukupi sebelum melakukan transaksi
  • Ref ID: Harus unik. Jika tidak diisi, sistem akan generate otomatis
  • Status Transaksi: Status dapat berubah dari "pending" ke "sukses" atau "gagal" melalui callback
Peringatan Keamanan Wajib:
  • HTTPS WAJIB: Semua request API HARUS menggunakan HTTPS
  • IP Whitelist WAJIB: IP Address server Anda HARUS terdaftar
  • Jangan pernah membagikan API Key Anda kepada siapapun