โก Fitur Utama & Keunggulan
๐งฉ Kompatibilitas Penuh
Mendukung validasi tipe data statis, penanganan error transparan, dan autocomplete IntelliSense di 9 bahasa pemrograman terpopuler.
โก 37 Native Methods
Akses langsung tanpa perlu request manual HTTP: QRIS Top Up, H2H Prabayar/Pascabayar, Perbankan VA, Noktel OTP, Mining, dan Gacha.
๐ก๏ธ Auto-Withdraw Bank
Sistem penarikan saldo Virtual Account otomatis ke saldo utama aplikasi zakki store saat monitoring checkbank() aktif.
๐ Quick Installation
Salin dan jalankan perintah di bawah ini untuk menginstal SDK secara instan pada platform pengembangan Anda.
๐ป Inisialisasi & Setup Klien
Klik tab di bawah untuk melihat sintaks inisialisasi minimal di masing-masing bahasa pemrograman.
const ZakkiStore = require('zakkistore-sdk');
const zakki = new ZakkiStore({
baseUrl: 'https://qris.zakki.store', // URL API Server Zakki Store
token: '9d6e27f09e65d3...', // Token API Anda
iduser: 'IBO6', // ID User member Anda
email: 'member@gmail.com', // Email member Anda
pin: '123456', // PIN transaksi (Wajib untuk tabung & tarik)
autoWithdraw: true // Aktifkan auto-withdrawal saldo bank!
});
import ZakkiStore from 'zakkistore-sdk';
const zakki = new ZakkiStore({
baseUrl: 'https://qris.zakki.store',
token: '9d6e27f09e65d3...',
iduser: 'IBO6',
email: 'member@gmail.com',
pin: '123456',
autoWithdraw: true
});
import ZakkiStore from 'zakkistore-sdk';
const zakki: ZakkiStore = new ZakkiStore({
baseUrl: 'https://qris.zakki.store',
token: '9d6e27f09e65d3...',
iduser: 'IBO6',
email: 'member@gmail.com',
pin: '123456',
autoWithdraw: true
});
from zakkistore_sdk import ZakkiStore
zakki = ZakkiStore(
base_url='https://qris.zakki.store',
token='9d6e27f09e65d3...',
iduser='IBO6',
email='member@gmail.com',
pin='123456',
auto_withdraw=True
)
'https://qris.zakki.store',
'token' => '9d6e27f09e65d3...',
'iduser' => 'IBO6',
'email' => 'member@gmail.com',
'pin' => '123456',
'autoWithdraw' => true
]);
package main
import (
"log"
zakkistore "github.com/MrLow12/zakkistore-sdk-go"
)
func main() {
zakki, err := zakkistore.NewWithConfig(zakkistore.Config{
BaseURL: "https://qris.zakki.store",
Token: "9d6e27f09e65d3...",
IDUser: "IBO6",
Email: "member@gmail.com",
PIN: "123456",
AutoWithdraw: true,
})
if err != nil {
log.Fatalf("Gagal inisialisasi: %v", err)
}
}
using ZakkiStore;
var zakki = new ZakkiStoreClient(
baseUrl: "https://qris.zakki.store",
token: "9d6e27f09e65d3...",
iduser: "IBO6",
email: "member@gmail.com",
pin: "123456",
autoWithdraw: true
);
import 'package:zakkistore_sdk/zakkistore_sdk.dart';
final zakki = ZakkiStore(
'9d6e27f09e65d3...',
baseUrl: 'https://qris.zakki.store',
iduser: 'IBO6',
email: 'member@gmail.com',
pin: '123456',
isAutoWithdraw: true,
);
require 'zakkistore-sdk'
zakki = ZakkiStore.new(
"https://qris.zakki.store",
"9d6e27f09e65d3...",
"IBO6",
"member@gmail.com",
"123456",
true
)
import store.zakki.sdk.ZakkiStore;
ZakkiStore zakki = new ZakkiStore(
"https://qris.zakki.store",
"9d6e27f09e65d3...",
"IBO6",
"member@gmail.com",
"123456",
true
);
use zakkistore_sdk::ZakkiStore;
let zakki = ZakkiStore::new(
Some("https://qris.zakki.store"),
Some("9d6e27f09e65d3..."),
Some("IBO6"),
Some("member@gmail.com"),
Some("123456"),
true, // auto_withdraw
)?;
๐ Full B2B Integration Examples (Skenario Riil)
Di bawah ini adalah contoh implementasi B2B alur penuh secara riil untuk memantau server, mendeteksi whitelist IP, memproses pembayaran QRIS Topup, melakukan transfer & mutasi VA, menguji penyetoran/penarikan dengan jeda 5 detik, serta mengelola webhook.
const ZakkiStore = require('zakkistore-sdk');
const zakki = new ZakkiStore({
baseUrl: 'https://qris.zakki.store',
token: 'API_TOKEN_MEMBER_ANDA',
iduser: 'ID_USER_ANDA',
email: 'member@gmail.com',
pin: '123456', // Wajib untuk tarik & tabung
autoWithdraw: false
});
async function runB2BFlow() {
console.log('๐งช Memulai B2B Integration Flow...');
try {
// 1. Cek Kesehatan Sistem & Status CPU
const system = await zakki.status();
console.log('๐ Status Server:', system.message);
// 2. Deteksi IP Publik Server Anda
const ipInfo = await zakki.cekmyip();
console.log('๐ IP Terbaca:', ipInfo.data?.ip);
// 3. Monitoring Saldo VA Bank
const bank = await zakki.checkbank();
console.log('๐ Info Bank VA:', bank.data?.bank_detail?.va_number);
// 4. Verifikasi Pemilik VA Tujuan Sebelum Transfer
const verifyName = await zakki.checkname('888000000xxxxx');
console.log('๐ Verifikasi VA Tujuan:', verifyName.data?.name);
// 5. Membuat Tiket QRIS Topup Dinamis
const qris = await zakki.topup(50000);
console.log('๐ Tiket QRIS ID:', qris.data?.idtopup);
// 6. Transfer Saldo VA Antar-Member
const tf = await zakki.transfer({ to: '888000000xxxxx', amount: 10000 });
console.log('๐ Status Transfer Saldo:', tf.message);
// 7. Tabung & Tarik Saldo VA (Jeda Transaksi 5 Detik)
console.log('โฑ๏ธ Menunggu 5 detik...');
await new Promise(r => setTimeout(r, 5000));
const tabungRes = await zakki.tabung(3); // Setor Rp 3 ke VA terhubung
console.log('๐ Respon Tabung:', tabungRes.message);
await new Promise(r => setTimeout(r, 5000));
const tarikRes = await zakki.tarik(1); // Tarik Rp 1 dari VA terhubung
console.log('๐ Respon Tarik:', tarikRes.message);
// 8. Cek Ketersediaan Nomor Virtual (Noktel)
const noktel = await zakki.noktelStok();
console.log('๐ Stok Noktel Aktif:', noktel.data?.length);
// 9. Kelola Webhook Callback Transaksi H2H
const webhook = await zakki.setcallback('https://domain-anda.com/callback');
console.log('๐ Webhook Status:', webhook.message);
} catch (err) {
console.error('โ Terjadi kesalahan pada flow:', err.message);
}
}
runB2BFlow();
import time
from zakkistore_sdk import ZakkiStore
zakki = ZakkiStore(
base_url="https://qris.zakki.store",
token="API_TOKEN_MEMBER_ANDA",
iduser="ID_USER_ANDA",
email="member@gmail.com",
pin="123456",
auto_withdraw=False
)
def run_b2b_flow():
print("๐งช Memulai B2B Integration Flow (Python)...")
try:
# 1. Cek Kesehatan Sistem
system = zakki.status()
print(f"๐ Status Server: {system.get('message')}")
# 2. Deteksi IP Publik Server
ip_info = zakki.cekmyip()
print(f"๐ IP Terbaca: {ip_info.get('data', {}).get('ip')}")
# 3. Cek VA Bank
bank = zakki.checkbank()
print(f"๐ Info Bank VA: {bank.get('data', {}).get('bank_detail', {}).get('va_number')}")
# 4. Verifikasi VA Tujuan
verify = zakki.checkname("888000000xxxxx")
print(f"๐ Verifikasi VA Tujuan: {verify.get('data', {}).get('name')}")
# 5. QRIS Topup
qris = zakki.topup(50000)
print(f"๐ Tiket QRIS ID: {qris.get('data', {}).get('idtopup')}")
# 6. Transfer Saldo VA
tf = zakki.transfer("888000000xxxxx", 10000)
print(f"๐ Status Transfer Saldo: {tf.get('message')}")
# 7. Tabung & Tarik Saldo VA (Jeda Transaksi 5 Detik)
print("โฑ๏ธ Menunggu 5 detik...")
time.sleep(5)
tabung_res = zakki.tabung(3)
print(f"๐ Respon Tabung: {tabung_res.get('message')}")
time.sleep(5)
tarik_res = zakki.tarik(1)
print(f"๐ Respon Tarik: {tarik_res.get('message')}")
# 8. Cek Stok Noktel
noktel = zakki.noktelStok()
print(f"๐ Stok Noktel Aktif: {len(noktel.get('data', []))}")
except Exception as e:
print(f"โ Terjadi kesalahan pada flow: {e}")
run_b2b_flow()
'https://qris.zakki.store',
'token' => 'API_TOKEN_MEMBER_ANDA',
'iduser' => 'ID_USER_ANDA',
'email' => 'member@gmail.com',
'pin' => '123456',
'autoWithdraw' => false
]);
echo "๐งช Memulai B2B Integration Flow (PHP)...
";
try {
// 1. Cek Kesehatan Sistem
$system = $zakki->status();
echo "๐ Status Server: " . $system['message'] . "
";
// 2. Deteksi IP Publik Server
$ipInfo = $zakki->cekmyip();
echo "๐ IP Terbaca: " . $ipInfo['data']['ip'] . "
";
// 3. Cek VA Bank
$bank = $zakki->checkbank();
echo "๐ Info Bank VA: " . $bank['data']['bank_detail']['va_number'] . "
";
// 4. Verifikasi VA Tujuan
$verify = $zakki->checkname('888000000xxxxx');
echo "๐ Verifikasi VA Tujuan: " . $verify['data']['name'] . "
";
// 5. QRIS Topup
$qris = $zakki->topup(50000);
echo "๐ Tiket QRIS ID: " . $qris['data']['idtopup'] . "
";
// 6. Transfer Saldo VA
$tf = $zakki->transfer(['to' => '888000000xxxxx', 'amount' => 10000]);
echo "๐ Status Transfer Saldo: " . $tf['message'] . "
";
// 7. Tabung & Tarik Saldo VA (Jeda Transaksi 5 Detik)
echo "โฑ๏ธ Menunggu 5 detik...
";
sleep(5);
$tabungRes = $zakki->tabung(3);
echo "๐ Respon Tabung: " . $tabungRes['message'] . "
";
sleep(5);
$tarikRes = $zakki->tarik(1);
echo "๐ Respon Tarik: " . $tarikRes['message'] . "
";
} catch (\Exception $e) {
echo "โ Terjadi kesalahan pada flow: " . $e->getMessage() . "
";
}
package main
import (
"fmt"
"log"
"time"
zakkistore "github.com/MrLow12/zakkistore-sdk-go"
)
func main() {
fmt.Println("๐งช Memulai B2B Integration Flow (Go)...")
zakki, err := zakkistore.NewWithConfig(zakkistore.Config{
BaseURL: "https://qris.zakki.store",
Token: "API_TOKEN_MEMBER_ANDA",
IDUser: "ID_USER_ANDA",
Email: "member@gmail.com",
PIN: "123456",
AutoWithdraw: false,
})
if err != nil {
log.Fatalf("Gagal inisialisasi SDK: %v", err)
}
// 1. Cek Kesehatan Sistem
system, err := zakki.Status()
if err == nil {
fmt.Printf("๐ Status Server: %v\n", system["message"])
}
// 2. Deteksi IP Publik Server
ipInfo, err := zakki.Cekmyip()
if err == nil {
fmt.Printf("๐ IP Terbaca: %v\n", ipInfo["data"].(map[string]interface{})["ip"])
}
// 3. Cek VA Bank
bank, err := zakki.CheckBank()
if err == nil {
vaNum := bank["data"].(map[string]interface{})["bank_detail"].(map[string]interface{})["va_number"]
fmt.Printf("๐ Info Bank VA: %v\n", vaNum)
}
// 4. Verifikasi VA Tujuan
verify, err := zakki.CheckName("888000000xxxxx")
if err == nil {
fmt.Printf("๐ Verifikasi VA Tujuan: %v\n", verify["data"].(map[string]interface{})["name"])
}
// 5. QRIS Topup
qris, err := zakki.Topup(50000)
if err == nil {
fmt.Printf("๐ Tiket QRIS ID: %v\n", qris["data"].(map[string]interface{})["idtopup"])
}
// 6. Tabung & Tarik Saldo VA (Jeda Transaksi 5 Detik)
fmt.Println("โฑ๏ธ Menunggu 5 detik...")
time.Sleep(5 * time.Second)
tabungRes, err := zakki.Tabung(3)
if err == nil {
fmt.Printf("๐ Respon Tabung: %v\n", tabungRes["message"])
}
time.Sleep(5 * time.Second)
tarikRes, err := zakki.Tarik(1)
if err == nil {
fmt.Printf("๐ Respon Tarik: %v\n", tarikRes["message"])
}
}
using System;
using System.Threading.Tasks;
using ZakkiStore;
class Program {
static async Task Main(string[] args) {
Console.WriteLine("๐งช Memulai B2B Integration Flow (C#)...");
var zakki = new ZakkiStoreClient(
baseUrl: "https://qris.zakki.store",
token: "API_TOKEN_MEMBER_ANDA",
iduser: "ID_USER_ANDA",
email: "member@gmail.com",
pin: "123456",
autoWithdraw: false
);
try {
// 1. Cek Kesehatan Sistem
var system = await zakki.StatusAsync();
Console.WriteLine($"๐ Status Server: {system["message"]}");
// 2. Deteksi IP Publik Server
var ipInfo = await zakki.CekmyipAsync();
Console.WriteLine($"๐ IP Terbaca: {ipInfo["data"]["ip"]}");
// 3. Cek VA Bank
var bank = await zakki.CheckbankAsync();
Console.WriteLine($"๐ Info Bank VA: {bank["data"]["bank_detail"]["va_number"]}");
// 4. Verifikasi VA Tujuan
var verify = await zakki.ChecknameAsync("888000000xxxxx");
Console.WriteLine($"๐ Verifikasi VA Tujuan: {verify["data"]["name"]}");
// 5. QRIS Topup
var qris = await zakki.TopupAsync(50000);
Console.WriteLine($"๐ Tiket QRIS ID: {qris["data"]["idtopup"]}");
// 6. Tabung & Tarik Saldo VA (Jeda Transaksi 5 Detik)
Console.WriteLine("โฑ๏ธ Menunggu 5 detik...");
await Task.Delay(5000);
var tabungRes = await zakki.TabungAsync(3);
Console.WriteLine($"๐ Respon Tabung: {tabungRes["message"]}");
await Task.Delay(5000);
var tarikRes = await zakki.TarikAsync(1);
Console.WriteLine($"๐ Respon Tarik: {tarikRes["message"]}");
} catch (Exception ex) {
Console.WriteLine($"โ Terjadi kesalahan pada alur B2B: {ex.Message}");
}
}
}
import 'package:zakkistore_sdk/zakkistore_sdk.dart';
void main() async {
print("๐งช Memulai B2B Integration Flow (Flutter)...");
final zakki = ZakkiStore(
"API_TOKEN_MEMBER_ANDA",
baseUrl: "https://qris.zakki.store",
iduser: "ID_USER_ANDA",
email: "member@gmail.com",
pin: "123456",
isAutoWithdraw: false,
);
try {
// 1. Cek Kesehatan Sistem
final system = await zakki.status();
print("๐ Status Server: ${system['message']}");
// 2. Deteksi IP Publik Server
final ipInfo = await zakki.cekmyip();
print("๐ IP Terbaca: ${ipInfo['data']['ip']}");
// 3. Cek VA Bank
final bank = await zakki.checkbank();
print("๐ Info Bank VA: ${bank['data']['bank_detail']['va_number']}");
// 4. Verifikasi VA Tujuan
final verify = await zakki.checkname("888000000xxxxx");
print("๐ Verifikasi VA Tujuan: ${verify['data']['name']}");
// 5. QRIS Topup
final qris = await zakki.topup(50000);
print("๐ Tiket QRIS ID: ${qris['data']['idtopup']}");
// 6. Tabung & Tarik Saldo VA (Jeda Transaksi 5 Detik)
print("โฑ๏ธ Menunggu 5 detik...");
await Future.delayed(Duration(seconds: 5));
final tabungRes = await zakki.tabung(3);
print("๐ Respon Tabung: ${tabungRes['message']}");
await Future.delayed(Duration(seconds: 5));
final tarikRes = await zakki.tarik(1);
print("๐ Respon Tarik: ${tarikRes['message']}");
} catch (e) {
print("โ Terjadi kesalahan pada alur B2B: $e");
}
}
use zakkistore_sdk::ZakkiStore;
use std::error::Error;
use std::thread;
use std::time::Duration;
fn main() -> Result<(), Box> {
println!("๐งช Memulai B2B Integration Flow (Rust)...");
let zakki = ZakkiStore::new(
Some("https://qris.zakki.store"),
Some("API_TOKEN_MEMBER_ANDA"),
Some("ID_USER_ANDA"),
Some("member@gmail.com"),
Some("123456"),
false, // auto_withdraw
)?;
// 1. Cek Kesehatan Sistem
let system = zakki.status()?;
println!("๐ Status Server: {:?}", system["message"]);
// 2. Deteksi IP Publik Server
let ip_info = zakki.cekmyip()?;
println!("๐ IP Terbaca: {:?}", ip_info["data"]["ip"]);
// 3. Cek VA Bank
let bank = zakki.checkbank()?;
println!("๐ Info Bank VA: {:?}", bank["data"]["bank_detail"]["va_number"]);
// 4. Verifikasi VA Tujuan
let verify = zakki.checkname("888000000xxxxx")?;
println!("๐ Verifikasi VA Tujuan: {:?}", verify["data"]["name"]);
// 5. QRIS Topup
let qris = zakki.topup(50000)?;
println!("๐ Tiket QRIS ID: {:?}", qris["data"]["idtopup"]);
// 6. Tabung & Tarik Saldo VA (Jeda Transaksi 5 Detik)
println!("โฑ๏ธ Menunggu 5 detik...");
thread::sleep(Duration::from_secs(5));
let tabung_res = zakki.tabung(3)?;
println!("๐ Respon Tabung: {:?}", tabung_res["message"]);
thread::sleep(Duration::from_secs(5));
let tarik_res = zakki.tarik(1)?;
println!("๐ Respon Tarik: {:?}", tarik_res["message"]);
Ok(())
}
require 'zakkistore-sdk'
puts "๐งช Memulai B2B Integration Flow (Ruby)..."
zakki = ZakkiStore.new(
"https://qris.zakki.store",
"API_TOKEN_MEMBER_ANDA",
"ID_USER_ANDA",
"member@gmail.com",
"123456",
false
)
begin
# 1. Cek Kesehatan Sistem
system = zakki.status
puts "๐ Status Server: #{system['message']}"
# 2. Deteksi IP Publik Server
ip_info = zakki.cekmyip
puts "๐ IP Terbaca: #{ip_info['data']['ip']}"
# 3. Cek VA Bank
bank = zakki.checkbank
puts "๐ Info Bank VA: #{bank['data']['bank_detail']['va_number']}"
# 4. Verifikasi VA Tujuan
verify = zakki.checkname("888000000xxxxx")
puts "๐ Verifikasi VA Tujuan: #{verify['data']['name']}"
# 5. QRIS Topup
qris = zakki.topup(50000)
puts "๐ Tiket QRIS ID: #{qris['data']['idtopup']}"
# 6. Tabung & Tarik Saldo VA (Jeda Transaksi 5 Detik)
puts "โฑ๏ธ Menunggu 5 detik..."
sleep 5
tabung_res = zakki.tabung(3)
puts "๐ Respon Tabung: #{tabung_res['message']}"
sleep 5
tarik_res = zakki.tarik(1)
puts "๐ Respon Tarik: #{tarik_res['message']}"
rescue => e
puts "โ Terjadi kesalahan pada flow: #{e.message}"
end
import store.zakki.sdk.ZakkiStore;
public class Main {
public static void main(String[] args) {
System.out.println("๐งช Memulai B2B Integration Flow (Java)...");
ZakkiStore zakki = new ZakkiStore(
"https://qris.zakki.store",
"API_TOKEN_MEMBER_ANDA",
"ID_USER_ANDA",
"member@gmail.com",
"123456",
false
);
try {
// 1. Cek Kesehatan Sistem
System.out.println("๐ Status Server: " + zakki.status().get("message"));
// 2. Deteksi IP Publik Server
System.out.println("๐ IP Terbaca: " + zakki.cekmyip().get("data"));
// 3. Cek VA Bank
System.out.println("๐ Info Bank VA: " + zakki.checkbank().get("data"));
// 4. Verifikasi VA Tujuan
System.out.println("๐ Verifikasi VA Tujuan: " + zakki.checkname("888000000xxxxx").get("data"));
// 5. QRIS Topup
System.out.println("๐ Tiket QRIS ID: " + zakki.topup(50000).get("data"));
// 6. Tabung & Tarik Saldo (Jeda Transaksi 5 Detik)
System.out.println("โฑ๏ธ Menunggu 5 detik...");
Thread.sleep(5000);
System.out.println("๐ Respon Tabung: " + zakki.tabung(3).get("message"));
Thread.sleep(5000);
System.out.println("๐ Respon Tarik: " + zakki.tarik(1).get("message"));
} catch (Exception e) {
System.out.println("โ Terjadi kesalahan pada alur B2B: " + e.getMessage());
}
}
}
๐ Mekanisme Auto-Withdraw (Tarik Saldo Bank Otomatis)
Fitur eksklusif SDK yang sangat canggih. Jika diaktifkan, SDK akan memicu penarikan dana VA otomatis secara real-time tepat saat fungsi monitoring checkbank() dipanggil. Dana ditransfer instan menjadi saldo utama aplikasi zakki store.
๐ก๏ธ Protokol Penting Keamanan API
โ ๏ธ WARNING: Protokol Keamanan API Wajib (Server-Side Only!)
Jangan pernah menginstansiasi SDK dan menyertakan token API serta PIN Anda langsung di sisi frontend klien / browser publik pada aplikasi web Anda (seperti memanggilnya langsung di React, Vue, Svelte, Angular, atau vanilla JS browser).
โ ๏ธ Resiko Keamanan: Token API Rahasia dan PIN Anda akan mudah terlihat secara transparan oleh publik melalui tab Network Inspector browser, memungkinkan pihak luar mencuri seluruh saldo Anda.
โ
Rekomendasi Arsitektur Aman: Selalu jalankan SDK ini di sisi server backend (seperti API routes Next.js/Nuxt, atau backend mandiri Express/NestJS), lalu buat API endpoints khusus (contoh: /api/pay-qris) terenkripsi untuk dipanggil oleh frontend Anda.
๐ก Dual-Flow Pascabayar & Bebas Nominal H2H
๐ก Mekanisme Pemrosesan Transaksi H2H
- 1. Layanan Pascabayar (PLN/BPJS/PDAM): Menggunakan 2 langkah aman. Lakukan Cek Tagihan dengan kode inquiry (contoh:
INQPLN), lalu lakukan pembayaran resmi dengan format tujuan:[ID_Pelanggan].[Nominal_Tagihan](contoh:122345678901.150000). - 2. Layanan Bebas Nominal (E-Wallet Custom Amount): Anda dapat mengirim saldo E-Wallet dengan nominal kustom (Min Rp 10.000) menggunakan format tujuan:
[No_Tujuan].[Nominal](contoh:08123456789.25000).