Skip to main content

Daftar Produk

Endpoint untuk mengambil daftar produk yang tersedia berdasarkan tipe: prepaid, game, atau pascabayar.

Endpoint: POST /v1/products

Parameter Request

ParameterTipeWajibKeterangan
api_idstringAPI ID dari pengaturan akun
timestampintegerUnix timestamp saat request dikirim
signaturestringHMAC-SHA256
cmdstringTipe produk: prepaid, game, atau pasca

Nilai cmd

NilaiKeterangan
prepaidPulsa dan paket data (Telkomsel, Indosat, XL, Axis, Tri, Smartfren)
gameVoucher game dan top-up (Mobile Legends, Free Fire, PUBG, dll)
pascaTagihan pascabayar (PLN, BPJS, PDAM, Telkom, dll)

Contoh Request

<?php
$api_id = 'your_api_id';
$api_key = 'your_api_key';
$secret_key = 'your_secret_key';
$timestamp = time();

// Business params
$businessParams = ['cmd' => 'prepaid']; // prepaid | game | pasca

// Urutkan A ke Z (ksort)
ksort($businessParams);

$canonicalBody = json_encode($businessParams, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$bodyHash = hash('sha256', $canonicalBody);
$stringToSign = implode('|', [$api_id, $api_key, $timestamp, $bodyHash]);
$signature = hash_hmac('sha256', $stringToSign, $secret_key);

$payload = array_merge($businessParams, [
'api_id' => $api_id,
'timestamp' => $timestamp,
'signature' => $signature,
]);

$ch = curl_init('https://api.isikuota.com/v1/products');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

Contoh Response

{
"success": true,
"code": "SUCCESS",
"message": "Ditemukan 2911 produk",
"data": [
{
"code": "TSEL10",
"name": "Telkomsel 10.000",
"brand": "TELKOMSEL",
"category": "Pulsa",
"type": "Umum",
"price": 11500,
"is_active": true,
"description": ""
},
{
"code": "AIGO2",
"name": "Voucher AIGO 2 GB 30 Hari",
"brand": "AXIS",
"category": "Voucher",
"type": "Umum",
"price": 22510,
"is_active": true,
"description": "AIGO Bronet 2GB + Kuota di Kota-mu 30hr"
}
],
"errors": null,
"meta": null
}

Field Response

Prepaid & Game (cmd=prepaid / cmd=game)

FieldTipeKeterangan
codestringKode unik produk — dipakai saat order
namestringNama lengkap produk
brandstringBrand/operator produk
categorystringKategori produk (Pulsa, Data, Voucher, dll)
typestringTipe produk (Umum, diamond)
priceintegerHarga jual dalam rupiah
is_activebooleantrue = produk aktif
descriptionstringCara penggunaan / info tambahan

Pascabayar (cmd=pasca)

FieldTipeKeterangan
codestringKode produk — dipakai saat inquiry & pembayaran
namestringNama lengkap produk
brandstringBrand/operator
categorystringKategori (PLN, BPJS, PDAM, dll)
typestringTipe produk
adminintegerBiaya admin per transaksi dalam rupiah
is_activebooleantrue = produk aktif
descriptionstringCatatan tambahan
Best Practice
  • Cache daftar produk dan update setiap 6–12 jam
  • Hanya tampilkan produk dengan is_active: true ke user
  • Tampilkan description jika tidak kosong — biasanya berisi petunjuk penggunaan
  • Untuk pascabayar, gunakan code dari endpoint ini saat inquiry tagihan
Alur Transaksi Pascabayar

Produk pascabayar tidak langsung dibeli — harus melalui inquiry dulu:

  1. Ambil daftar produk pascabayar (cmd=pasca)
  2. Lakukan inquiry tagihan
  3. Konfirmasi ke user
  4. Bayar tagihan