โ† Kembali ke Beranda Utama

Official Zakkistore SDKs

Tingkatkan kecepatan dan kenyamanan integrasi sistem Anda dengan pustaka klien (SDK) resmi Bank Zakki Store. Mendukung paritas penuh **37 Metode Native** untuk perbankan digital, payment gateway QRIS dinamis, transaksi H2H, dan OTP virtual.

โšก 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.

๐Ÿ“ฆ
Node.js (NPM)
npm install zakkistore-sdk
๐Ÿ
Python (PyPI)
pip install zakkistore-sdk
๐Ÿ˜
composer require zakkistore/zakkistore-sdk
๐Ÿน
go get github.com/MrLow12/zakkistore-sdk-go@v1.0.5
๐ŸŸฃ
dotnet add package zakkistore-sdk
๐Ÿ’™
Flutter / Dart
flutter pub add zakkistore_sdk
๐Ÿ’Ž
gem install zakkistore-sdk
๐Ÿฆ€
Rust (crates.io)
cargo add zakkistore-sdk
โ˜•
Java (Gradle / Maven)
implementation 'com.github.MrLow12:zakkistore-sdk-java:1.0.5'

๐Ÿ’ป 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.

๐Ÿฆ
1. Pembayaran VA Masuk
Konsumen membayar via Virtual Account, saldo VA Bank Anda bertambah.
โšก
โš™๏ธ
2. Pemicu checkbank()
SDK mendeteksi saldo VA bank > Rp 0, memicu penarikan internal otomatis.
โšก
๐Ÿ’ฐ
3. Saldo Utama Zakki Store
Dana berhasil ditarik instan, saldo utama aplikasi bertambah otomatis.

๐Ÿ›ก๏ธ 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).
Powered by ZakkiXD