zakkistore-sdk 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -685
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -91,690 +91,58 @@ Pustaka `zakkistore-sdk` dirancang serbaguna dan fleksibel, menjadikannya piliha
|
|
|
91
91
|
|
|
92
92
|
---
|
|
93
93
|
|
|
94
|
-
## 📑 Daftar Referensi Metode Lengkap & Struktur
|
|
94
|
+
## 📑 Daftar Referensi Metode Lengkap & Struktur Pengelompokan (36 Fungsi Resmi)
|
|
95
|
+
|
|
96
|
+
Seluruh fungsi yang didukung oleh SDK ini dikelompokkan secara rapi ke dalam 7 kategori layanan utama demi mempermudah pemahaman dan integrasi:
|
|
97
|
+
|
|
98
|
+
### 1. ⚡ Layanan Payment Gateway (QRIS Topup) — [4 Fungsi]
|
|
99
|
+
* **`await zakki.topup(nominal)`** — Membuat tiket pembayaran QRIS dinamis instan dengan nominal kode unik.
|
|
100
|
+
* **`await zakki.cektopup(idtopup)`** — Mengecek status pembayaran tiket QRIS tertentu secara real-time.
|
|
101
|
+
* **`await zakki.mytopup()`** — Mengambil seluruh riwayat transaksi topup QRIS akun Anda.
|
|
102
|
+
* **`await zakki.cancel(id_transaksi, all_pending)`** — Membatalkan satu atau seluruh tiket topup pending.
|
|
103
|
+
|
|
104
|
+
### 2. 🏪 Layanan Transaksi Host-to-Host (H2H) — [4 Fungsi]
|
|
105
|
+
* **`await zakki.listkode(jenis, product_type)`** — Mengambil katalog produk prabayar/pascabayar aktif beserta daftar harga beli.
|
|
106
|
+
* **`await zakki.h2h(kode, tujuan, refID)`** — Mengirimkan order transaksi H2H (pulsa, paket data, PLN kustom, dll).
|
|
107
|
+
* **`await zakki.cekh2h(id_trx)`** — Mengecek status transaksi, Serial Number (SN), dan harga beli riil dari order H2H.
|
|
108
|
+
* **`await zakki.myh2h()`** — Mengambil 20 riwayat transaksi H2H terupdate milik akun Anda.
|
|
109
|
+
|
|
110
|
+
### 3. 🏦 Layanan Perbankan & Transfer Saldo VA — [8 Fungsi]
|
|
111
|
+
* **`await zakki.checkbank()`** — Memeriksa detail Virtual Account (VA), saldo bank VA, serta memicu Auto-Withdraw jika diaktifkan.
|
|
112
|
+
* **`await zakki.checkname(number)`** — Memverifikasi nama asli pemilik rekening Virtual Account tujuan sebelum melakukan transfer.
|
|
113
|
+
* **`await zakki.transfer(to, amount)`** — Mengirimkan saldo antar-VA member secara instan dan bebas biaya admin.
|
|
114
|
+
* **`await zakki.tabung(jumlah)`** — Menyetorkan saldo aktif aplikasi ke rekening bank Virtual Account terhubung Anda.
|
|
115
|
+
* **`await zakki.tarik(jumlah)`** — Menarik dana dari bank Virtual Account ke saldo aktif aplikasi Zakki Store Anda.
|
|
116
|
+
* **`await zakki.checkmutasi(mutasi_type)`** — Melihat riwayat mutasi tabung/tarik saldo bank VA (`all`, `tarik`, `tabung`).
|
|
117
|
+
* **`await zakki.checktransfer(idtransfer)`** — Mengecek status pengiriman dana transfer tertentu secara detail.
|
|
118
|
+
* **`await zakki.mytransfer(type)`** — Mengambil riwayat pengiriman dan penerimaan transfer saldo (`all`, `kirim`, `terima`).
|
|
119
|
+
|
|
120
|
+
### 4. 📱 Layanan Noktel Marketplace (OTP Virtual) — [5 Fungsi]
|
|
121
|
+
* **`await zakki.noktelStok()`** — Memeriksa ketersediaan stok nomor virtual aktif per kategori layanan/aplikasi.
|
|
122
|
+
* **`await zakki.noktelBuy(category)`** — Membeli nomor virtual baru untuk penerimaan kode verifikasi/OTP.
|
|
123
|
+
* **`await zakki.noktelGetOtp(account_id)`** — Mengambil kode verifikasi/OTP yang masuk ke nomor virtual secara real-time.
|
|
124
|
+
* **`await zakki.noktelCancel(invoice_id)`** — Membatalkan order nomor virtual yang pending OTP dan memicu auto-refund saldo.
|
|
125
|
+
* **`await zakki.noktelHistory()`** — Mengambil daftar riwayat lengkap pemesanan nomor virtual.
|
|
126
|
+
|
|
127
|
+
### 5. ⛏️ Layanan Reward Komputasi SHA-256 (Mining) & Game — [5 Fungsi]
|
|
128
|
+
* **`await zakki.miningStart()`** — Meminta challenge penambangan SHA-256 serta target kesulitan (difficulty) dari server.
|
|
129
|
+
* **`await zakki.miningSubmit(nonce, signature)`** — Mengirimkan hasil kerja hashing SHA-256 (Proof-of-Work) untuk mendapatkan koin.
|
|
130
|
+
* **`await zakki.cekmining(idmining)`** — Mengecek status audit dan persetujuan dari blok mining yang telah Anda selesaikan.
|
|
131
|
+
* **`await zakki.mymining()`** — Melihat riwayat penambangan koin dan total reward hashing akun Anda.
|
|
132
|
+
* **`await zakki.cekgacha()`** — Mengecek jumlah tiket gacha, riwayat kemenangan, dan detail koin keberuntungan Anda.
|
|
133
|
+
|
|
134
|
+
### 6. 🔒 Layanan Keamanan IP & Utilitas — [6 Fungsi]
|
|
135
|
+
* **`await zakki.whitelistip(ip)`** — Mendaftarkan IP server/host Anda agar diizinkan melakukan transaksi H2H via API (Maksimal 3 IP).
|
|
136
|
+
* **`await zakki.delwhitelistip(ip)`** — Menghapus alamat IP terdaftar dari whitelist API.
|
|
137
|
+
* **`await zakki.cekmyip()`** — Mendeteksi alamat IP publik host/server Anda saat ini yang terbaca oleh sistem.
|
|
138
|
+
* **`await zakki.cekip(ip)`** — Mengecek detail status IP whitelisting tertentu.
|
|
139
|
+
* **`await zakki.leaderboard(limit, period)`** — Melihat daftar Sultan topup teraktif secara global.
|
|
140
|
+
* **`await zakki.status()`** — Memeriksa beban CPU server, statistik finansial global, dan kesehatan sistem.
|
|
141
|
+
|
|
142
|
+
### 7. 🔗 Layanan Webhook Callback & Notifikasi Bot — [4 Fungsi]
|
|
143
|
+
* **`await zakki.setcallback(site)`** — Memasang URL callback real-time untuk menerima laporan status transaksi H2H.
|
|
144
|
+
* **`await zakki.delcallback()`** — Menghapus URL callback yang terpasang di sistem.
|
|
145
|
+
* **`await zakki.setnotifbot(telegramId)`** — Memasang ID Telegram Anda untuk menerima notifikasi otomatis transaksi sukses/gagal.
|
|
146
|
+
* **`await zakki.delnotifbot()`** — Menonaktifkan bot notifikasi Telegram.
|
|
95
147
|
|
|
96
|
-
Berikut adalah seluruh **22 fungsi resmi** yang didukung secara penuh oleh SDK beserta struktur respons JSON asli yang dikembalikan oleh API Server:
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
### 1. ⚡ Layanan Payment Gateway (QRIS Topup)
|
|
101
|
-
|
|
102
|
-
> [!TIP]
|
|
103
|
-
> **💡 Mengapa Memilih Payment Gateway QRIS Zakki Store?**
|
|
104
|
-
> - **⚡ Instant Settlement & Callback Real-time:** Setiap pembayaran QRIS diproses secara otomatis dalam milidetik. Begitu dana ditransfer oleh konsumen, saldo Anda langsung bertambah detik itu juga.
|
|
105
|
-
> - **🛡️ Sistem Validasi Kode Unik Berakurasi Tinggi:** Transaksi diverifikasi otomatis menggunakan nominal pencocokan kode unik tiga angka di akhir (contoh: nominal Rp 5.000 menjadi Rp 5.182), mencegah potensi kecurangan serta meniadakan proses verifikasi struk transfer manual.
|
|
106
|
-
> - **🧩 Fleksibilitas Integrasi Frontend Maksimal:** Server tidak hanya mengembalikan tautan gambar QR (`qris_image`), melainkan juga payload teks mentah (`qris_content` / raw string QRIS). Ini memberi Anda fleksibilitas luar biasa untuk merender QR code secara lokal di web/aplikasi Anda menggunakan pustaka Canvas, SVG, atau kustomisasi UI visual lainnya.
|
|
107
|
-
> - **💸 Bebas Setup Fee & Biaya Pemeliharaan:** Layanan gerbang pembayaran kelas enterprise ini dapat digunakan secara cuma-cuma tanpa ada biaya langganan bulanan tersembunyi bagi partner B2B.
|
|
108
|
-
|
|
109
|
-
#### A. Membuat Transaksi QRIS (`topup`)
|
|
110
|
-
Membuat QRIS dinamis untuk pembayaran atau pengisian saldo secara instan dan otomatis.
|
|
111
|
-
- **Sintaks:** `zakki.topup(nominal)`
|
|
112
|
-
- **Contoh:**
|
|
113
|
-
```javascript
|
|
114
|
-
const res = await zakki.topup(5000);
|
|
115
|
-
```
|
|
116
|
-
- **Struktur Output JSON Sukses (`code 201`):**
|
|
117
|
-
```json
|
|
118
|
-
{
|
|
119
|
-
"code": 201,
|
|
120
|
-
"status": "success",
|
|
121
|
-
"message": "Silakan bayar sesuai TOTAL dalam 5 menit.",
|
|
122
|
-
"data": {
|
|
123
|
-
"id_transaksi": "topup-0a1b2c3d-IBO99",
|
|
124
|
-
"rincian": {
|
|
125
|
-
"nominal_request": 5000,
|
|
126
|
-
"kode_unik": 182,
|
|
127
|
-
"total_bayar": 5182
|
|
128
|
-
},
|
|
129
|
-
"expired_at": "2026-05-31T17:15:00.000Z",
|
|
130
|
-
"qris_image": "https://qris.zakki.store/images/qris_sample.png",
|
|
131
|
-
"qris_content": "00020101021226670016COM.NOBUBANK.WWW...",
|
|
132
|
-
"cancel_url": "https://qris.zakki.store/cancel?id_transaksi=topup-0a1b2c3d-IBO99",
|
|
133
|
-
"cektopup_url": "https://qris.zakki.store/cektopup?idtopup=topup-0a1b2c3d-IBO99",
|
|
134
|
-
"petunjuk_cek": "Simpan ID 'topup-0a1b2c3d-IBO99' untuk cek status nanti."
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
#### B. Cek Status Pembayaran QRIS (`cektopup`)
|
|
140
|
-
Memeriksa status pembayaran dari ID topup QRIS.
|
|
141
|
-
- **Sintaks:** `zakki.cektopup(idtopup)`
|
|
142
|
-
- **Contoh:**
|
|
143
|
-
```javascript
|
|
144
|
-
const res = await zakki.cektopup('topup-0a1b2c3d-IBO99');
|
|
145
|
-
```
|
|
146
|
-
- **Struktur Output JSON (`code 200`):**
|
|
147
|
-
```json
|
|
148
|
-
{
|
|
149
|
-
"code": 200,
|
|
150
|
-
"status": "found",
|
|
151
|
-
"kategori_status": "SUCCESS",
|
|
152
|
-
"message": "Transaksi ditemukan di Riwayat SUCCESS.",
|
|
153
|
-
"file_id": "topup-0a1b2c3d-IBO99",
|
|
154
|
-
"data": {
|
|
155
|
-
"id_transaksi": "topup-0a1b2c3d-IBO99",
|
|
156
|
-
"id_user": "IBO99",
|
|
157
|
-
"tipe": "TOPUP",
|
|
158
|
-
"nominal_asli": 5000,
|
|
159
|
-
"kode_unik": 182,
|
|
160
|
-
"nominal_total": 5182,
|
|
161
|
-
"status": "SUCCESS",
|
|
162
|
-
"created_at": "2026-05-31T17:10:00.000Z",
|
|
163
|
-
"expired_at": "2026-05-31T17:15:00.000Z",
|
|
164
|
-
"BotNotif": "Sukses"
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
#### C. Membatalkan & Mengecek Transaksi Pending (`cancel`)
|
|
170
|
-
Fungsi `cancel` pada API nyata memiliki **3 Mode Operasi** yang sangat dinamis berdasarkan parameter yang dikirimkan:
|
|
171
|
-
|
|
172
|
-
- **Sintaks:** `zakki.cancel(id_transaksi, all)`
|
|
173
|
-
- **Parameter:**
|
|
174
|
-
- `id_transaksi` (String|null): ID transaksi spesifik (bisa ID penuh `'topup-0a1b2c3d-IBO99'` atau cukup ID tengahnya saja `'0a1b2c3d'`).
|
|
175
|
-
- `all` (Boolean): Jika `true`, membatalkan semua transaksi pending.
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
##### 🔹 MODE 1: Cek & Dapatkan Daftar Transaksi Pending Aktif (List Pending)
|
|
180
|
-
Jika Anda **tidak mengirimkan** `id_transaksi` dan mengisi parameter `all` sebagai `false` (atau mengosongkan keduanya).
|
|
181
|
-
- **Contoh Penggunaan:**
|
|
182
|
-
```javascript
|
|
183
|
-
const res = await zakki.cancel(); // Mengambil daftar transaksi pending aktif
|
|
184
|
-
```
|
|
185
|
-
- **Struktur Output JSON (`code 200`):**
|
|
186
|
-
```json
|
|
187
|
-
{
|
|
188
|
-
"code": 200,
|
|
189
|
-
"status": "success",
|
|
190
|
-
"message": "Berhasil memuat daftar transaksi pending aktif.",
|
|
191
|
-
"pending_list": [
|
|
192
|
-
{
|
|
193
|
-
"id_transaksi": "topup-0a1b2c3d-IBO99",
|
|
194
|
-
"total_bayar": 5182,
|
|
195
|
-
"expired_at": "2026-05-31T17:15:00.000Z",
|
|
196
|
-
"qris_image": "https://qris.zakki.store/images/qris_sample.png"
|
|
197
|
-
}
|
|
198
|
-
]
|
|
199
|
-
}
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
##### 🔹 MODE 2: Membatalkan Transaksi Tertentu (Specific Cancel)
|
|
203
|
-
Jika Anda mengisi `id_transaksi` (bisa ID penuh atau hanya bagian tengah UUID uniknya), dan `all` bernilai `false`.
|
|
204
|
-
- **Contoh Penggunaan:**
|
|
205
|
-
```javascript
|
|
206
|
-
// Membatalkan transaksi tertentu secara spesifik
|
|
207
|
-
const res = await zakki.cancel('topup-0a1b2c3d-IBO99');
|
|
208
|
-
// Atau menggunakan UUID tengah saja (sistem backend akan otomatis mencarikan filenya):
|
|
209
|
-
const res = await zakki.cancel('0a1b2c3d');
|
|
210
|
-
```
|
|
211
|
-
- **Struktur Output JSON (`code 200`):**
|
|
212
|
-
```json
|
|
213
|
-
{
|
|
214
|
-
"code": 200,
|
|
215
|
-
"status": "success",
|
|
216
|
-
"message": "Transaksi pending 'topup-0a1b2c3d-IBO99' berhasil dihapus."
|
|
217
|
-
}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
##### 🔹 MODE 3: Membatalkan Semua Transaksi Pending Sekaligus (Mass Cancel)
|
|
221
|
-
Membatalkan seluruh transaksi pending sekaligus secara praktis.
|
|
222
|
-
- **Contoh Penggunaan:**
|
|
223
|
-
```javascript
|
|
224
|
-
const res = await zakki.cancel(true); // Membatalkan masal seluruh transaksi pending
|
|
225
|
-
```
|
|
226
|
-
- **Struktur Output JSON (`code 200`):**
|
|
227
|
-
```json
|
|
228
|
-
{
|
|
229
|
-
"code": 200,
|
|
230
|
-
"status": "success",
|
|
231
|
-
"message": "Berhasil membatalkan 3 transaksi pending."
|
|
232
|
-
}
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
### 🛒 2. Layanan Transaksi H2H (Host-to-Host)
|
|
238
|
-
|
|
239
|
-
#### A. Membuka Katalog Produk (`listkode`)
|
|
240
|
-
Mencari daftar kode produk aktif, rincian keterangan, dan harga termurah.
|
|
241
|
-
- **Sintaks:** `zakki.listkode(jenis, type)`
|
|
242
|
-
- **Contoh:**
|
|
243
|
-
```javascript
|
|
244
|
-
const res = await zakki.listkode('pulsa', 'telkomsel');
|
|
245
|
-
```
|
|
246
|
-
- **Struktur Output JSON (`code 200`):**
|
|
247
|
-
```json
|
|
248
|
-
{
|
|
249
|
-
"code": 200,
|
|
250
|
-
"status": "success",
|
|
251
|
-
"data": [
|
|
252
|
-
{
|
|
253
|
-
"kode": "S5",
|
|
254
|
-
"produk": "Telkomsel",
|
|
255
|
-
"keterangan": "Telkomsel Rp 5.000",
|
|
256
|
-
"harga": 5350,
|
|
257
|
-
"kategori": "Pulsa Reguler",
|
|
258
|
-
"status": "1",
|
|
259
|
-
"active": true
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
"kode": "S10",
|
|
263
|
-
"produk": "Telkomsel",
|
|
264
|
-
"keterangan": "Telkomsel Rp 10.000",
|
|
265
|
-
"harga": 10250,
|
|
266
|
-
"kategori": "Pulsa Reguler",
|
|
267
|
-
"status": "1",
|
|
268
|
-
"active": true
|
|
269
|
-
}
|
|
270
|
-
]
|
|
271
|
-
}
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
#### B. Mengirim Order Transaksi (`h2h`)
|
|
275
|
-
Melakukan pengiriman pembelian pulsa, paket kuota, token, atau pembayaran tagihan pascabayar.
|
|
276
|
-
- **Sintaks:** `zakki.h2h({ kode, tujuan, refID })`
|
|
277
|
-
- **Contoh:**
|
|
278
|
-
```javascript
|
|
279
|
-
const res = await zakki.h2h({
|
|
280
|
-
kode: 'S5',
|
|
281
|
-
tujuan: '081234567890',
|
|
282
|
-
refID: 'PARTNER-TRX-00199'
|
|
283
|
-
});
|
|
284
|
-
```
|
|
285
|
-
- **Struktur Output JSON (`code 200`):**
|
|
286
|
-
```json
|
|
287
|
-
{
|
|
288
|
-
"code": 200,
|
|
289
|
-
"status": "success",
|
|
290
|
-
"message": "Transaksi H2H diproses.",
|
|
291
|
-
"data": {
|
|
292
|
-
"id_transaksi": "H2H-20260531-99882",
|
|
293
|
-
"refID": "PARTNER-TRX-00199",
|
|
294
|
-
"kode_produk": "S5",
|
|
295
|
-
"tujuan": "081234567890",
|
|
296
|
-
"status": "PROCESS",
|
|
297
|
-
"harga": 5350
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
> [!IMPORTANT]
|
|
303
|
-
> **💡 DUAL-FLOW TRANSAKSI PASCABAYAR (CEK vs BAYAR TAGIHAN):**
|
|
304
|
-
> Layanan Pascabayar H2H (seperti PLN Tagihan, BPJS, PDAM, Indihome) menggunakan alur dua langkah yang sangat aman dan presisi:
|
|
305
|
-
>
|
|
306
|
-
> 1. **Langkah 1: Cek Tagihan / Inquiry (Lookup)**
|
|
307
|
-
> Gunakan kode produk cek/inquiry (biasanya berawalan `INQ`, `REV`, atau `C`, contoh: `INQPLN`). Pada langkah ini, **cukup kirimkan ID Pelanggan saja** pada parameter `tujuan`.
|
|
308
|
-
> * *Contoh:* `zakki.h2h({ kode: 'INQPLN', tujuan: '122345678901', refID: 'TRX-01' })` -> *Mengembalikan jumlah tagihan asli dari server.*
|
|
309
|
-
>
|
|
310
|
-
> 2. **Langkah 2: Eksekusi Pembayaran Tagihan (Payment)**
|
|
311
|
-
> Setelah mendapatkan jumlah nominal tagihan asli dari Langkah 1 (contoh: `Rp 125.000`), untuk mengeksekusi pembayaran resmi, Anda **wajib** menggabungkan ID Pelanggan dengan nominal tagihan tersebut menggunakan pemisah titik: **`[ID_Pelanggan].[Nominal_Tagihan]`** agar pemotongan saldo aman dan akurat di awal.
|
|
312
|
-
> * *Contoh:* `zakki.h2h({ kode: 'BPLN', tujuan: '122345678901.125000', refID: 'TRX-02' })` -> *Pembayaran diproses, saldo dipotong presisi.*
|
|
313
|
-
>
|
|
314
|
-
> ---
|
|
315
|
-
>
|
|
316
|
-
> **💡 FORMAT TRANSAKSI PRODUK BEBAS NOMINAL (CUSTOM AMOUNT):**
|
|
317
|
-
> Khusus untuk produk kategori **Bebas Nominal** (seperti Topup kustom saldo E-Wallet DANA, OVO, atau Gopay dengan nominal bebas yang ditentukan sendiri), Anda wajib menggabungkan nomor/ID tujuan dengan nominal transfer menggunakan pemisah tanda titik: **`[Tujuan].[Nominal]`** (Minimal Rp 10.000).
|
|
318
|
-
> - **Contoh:** `zakki.h2h({ kode: 'DANA_BEBAS', tujuan: '081234567890.25000', refID: 'TRX-03' })`
|
|
319
|
-
|
|
320
|
-
#### C. Cek Status Transaksi H2H (`cekh2h`)
|
|
321
|
-
Memeriksa status pengisian, serial number (SN), serta detail harga beli.
|
|
322
|
-
- **Sintaks:** `zakki.cekh2h(id)`
|
|
323
|
-
- **Contoh:**
|
|
324
|
-
```javascript
|
|
325
|
-
const res = await zakki.cekh2h('PARTNER-TRX-00199');
|
|
326
|
-
```
|
|
327
|
-
- **Struktur Output JSON (`code 200`):**
|
|
328
|
-
```json
|
|
329
|
-
{
|
|
330
|
-
"code": 200,
|
|
331
|
-
"status": "success",
|
|
332
|
-
"data": {
|
|
333
|
-
"id_transaksi": "H2H-20260531-99882",
|
|
334
|
-
"refID": "PARTNER-TRX-00199",
|
|
335
|
-
"kode_produk": "S5",
|
|
336
|
-
"tujuan": "081234567890",
|
|
337
|
-
"status": "SUCCESS",
|
|
338
|
-
"sn": "629981882772927299",
|
|
339
|
-
"harga": 5350
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
#### D. Riwayat Transaksi H2H Pribadi (`myh2h`)
|
|
345
|
-
Membuka daftar 20 riwayat pembelian H2H terupdate milik Anda.
|
|
346
|
-
- **Sintaks:** `zakki.myh2h()`
|
|
347
|
-
- **Struktur Output JSON (`code 200`):**
|
|
348
|
-
```json
|
|
349
|
-
{
|
|
350
|
-
"code": 200,
|
|
351
|
-
"status": "success",
|
|
352
|
-
"total": 1,
|
|
353
|
-
"data": [
|
|
354
|
-
{
|
|
355
|
-
"id_transaksi": "H2H-20260531-99882",
|
|
356
|
-
"refID": "PARTNER-TRX-00199",
|
|
357
|
-
"kode": "S5",
|
|
358
|
-
"tujuan": "081234567890",
|
|
359
|
-
"status": "SUCCESS",
|
|
360
|
-
"sn": "629981882772927299",
|
|
361
|
-
"harga": 5350
|
|
362
|
-
}
|
|
363
|
-
]
|
|
364
|
-
}
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
---
|
|
368
|
-
|
|
369
|
-
### 🏦 3. Layanan Perbankan & Transfer Saldo
|
|
370
|
-
|
|
371
|
-
#### A. Cek Detail Saldo & Bank VA (`checkbank`)
|
|
372
|
-
Melihat sisa saldo aktif, no Virtual Account unik member, serta 20 riwayat mutasi.
|
|
373
|
-
|
|
374
|
-
> [!IMPORTANT]
|
|
375
|
-
> **🚀 FITUR UNGGULAN: Auto-Withdraw / Tarik Saldo Otomatis**
|
|
376
|
-
> SDK ini dilengkapi dengan sistem auto-withdraw yang sangat fleksibel dan efisien. Jika Anda mengaktifkan opsi `autoWithdraw: true` saat inisialisasi (atau memanggil `zakki.enableAutoWithdraw(true)`), maka setiap kali fungsi `checkbank()` dipanggil:
|
|
377
|
-
> 1. SDK akan otomatis mendeteksi jika saldo rekening virtual bank Anda lebih dari Rp 0 (`bank_detail.balance > 0`).
|
|
378
|
-
> 2. Tanpa perlu dipanggil manual oleh pengembang, SDK akan langsung memicu eksekusi internal fungsi `tarik()` di latar belakang untuk menarik seluruh dana bank tersebut masuk ke saldo utama aplikasi zakki store.
|
|
379
|
-
> 3. Hasil akhirnya, objek respon `checkbank()` akan disisipkan bendera sukses `auto_withdraw_executed: true` beserta jumlah yang ditarik, membuat siklus transaksi menjadi instan dan otomatis secara total!
|
|
380
|
-
|
|
381
|
-
- **Sintaks:** `zakki.checkbank()`
|
|
382
|
-
- **Mengaktifkan Secara Dinamis via Fungsi:** `zakki.enableAutoWithdraw(true)` (mengaktifkan) atau `zakki.enableAutoWithdraw(false)` (menonaktifkan).
|
|
383
|
-
- **Struktur Output JSON Biasa (`code 200`):**
|
|
384
|
-
```json
|
|
385
|
-
{
|
|
386
|
-
"code": 200,
|
|
387
|
-
"status": "success",
|
|
388
|
-
"data": {
|
|
389
|
-
"bank_detail": {
|
|
390
|
-
"bank_name": "BANK ZAKKI STORE",
|
|
391
|
-
"account_holder": "zakkiXD",
|
|
392
|
-
"virtual_account": "888000000IBO99",
|
|
393
|
-
"balance": 150000,
|
|
394
|
-
"currency": "IDR",
|
|
395
|
-
"status": "ACTIVE"
|
|
396
|
-
},
|
|
397
|
-
"user_detail": {
|
|
398
|
-
"telegram_id": "1125495152",
|
|
399
|
-
"nama": "B2B Partner",
|
|
400
|
-
"email": "b2b_partner@example.com",
|
|
401
|
-
"poin": 25,
|
|
402
|
-
"total_h2h": 142
|
|
403
|
-
},
|
|
404
|
-
"riwayat_transaksi": [
|
|
405
|
-
{
|
|
406
|
-
"id_transaksi": "topup-0a1b2c3d-IBO99",
|
|
407
|
-
"tipe": "TOPUP",
|
|
408
|
-
"nominal_total": 5182,
|
|
409
|
-
"status": "SUCCESS",
|
|
410
|
-
"created_at": "2026-05-31T17:10:00.000Z"
|
|
411
|
-
}
|
|
412
|
-
]
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
- **Struktur Output JSON saat Auto-Withdraw Otomatis Berhasil Mengeksekusi Penarikan:**
|
|
418
|
-
```json
|
|
419
|
-
{
|
|
420
|
-
"code": 200,
|
|
421
|
-
"status": "success",
|
|
422
|
-
"auto_withdraw_executed": true,
|
|
423
|
-
"auto_withdraw_amount": 150000,
|
|
424
|
-
"auto_withdraw_message": "Penarikan berhasil diproses.",
|
|
425
|
-
"data": {
|
|
426
|
-
"bank_detail": {
|
|
427
|
-
"bank_name": "BANK ZAKKI STORE",
|
|
428
|
-
"account_holder": "zakkiXD",
|
|
429
|
-
"virtual_account": "888000000IBO99",
|
|
430
|
-
"balance": 0,
|
|
431
|
-
"currency": "IDR",
|
|
432
|
-
"status": "ACTIVE"
|
|
433
|
-
},
|
|
434
|
-
"user_detail": {
|
|
435
|
-
"telegram_id": "1125495152",
|
|
436
|
-
"nama": "B2B Partner",
|
|
437
|
-
"email": "b2b_partner@example.com",
|
|
438
|
-
"poin": 25,
|
|
439
|
-
"total_h2h": 142
|
|
440
|
-
},
|
|
441
|
-
"riwayat_transaksi": [
|
|
442
|
-
{
|
|
443
|
-
"id_transaksi": "topup-0a1b2c3d-IBO99",
|
|
444
|
-
"tipe": "TOPUP",
|
|
445
|
-
"nominal_total": 5182,
|
|
446
|
-
"status": "SUCCESS",
|
|
447
|
-
"created_at": "2026-05-31T17:10:00.000Z"
|
|
448
|
-
}
|
|
449
|
-
]
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
#### B. Cek Nama Virtual Account Penerima (`checkname`)
|
|
455
|
-
Memverifikasi nama asli penerima sebelum melakukan transfer saldo antar member.
|
|
456
|
-
- **Sintaks:** `zakki.checkname(number)`
|
|
457
|
-
- **Contoh:**
|
|
458
|
-
```javascript
|
|
459
|
-
const res = await zakki.checkname('888000000IBO01');
|
|
460
|
-
```
|
|
461
|
-
- **Struktur Output JSON (`code 200`):**
|
|
462
|
-
```json
|
|
463
|
-
{
|
|
464
|
-
"code": 200,
|
|
465
|
-
"status": "success",
|
|
466
|
-
"data": {
|
|
467
|
-
"virtual_account": "888000000IBO01",
|
|
468
|
-
"nama_user": "Ahmad Zakki",
|
|
469
|
-
"email_user": "ahmad.zakki@example.com"
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
```
|
|
473
|
-
|
|
474
|
-
#### C. Transfer Saldo Antar VA Member (`transfer`)
|
|
475
|
-
Mengirim saldo dari dompet Anda ke nomor Virtual Account partner lain secara instan.
|
|
476
|
-
- **Sintaks:** `zakki.transfer({ to, amount })`
|
|
477
|
-
- **Contoh:**
|
|
478
|
-
```javascript
|
|
479
|
-
const res = await zakki.transfer({
|
|
480
|
-
to: '888000000IBO01',
|
|
481
|
-
amount: 10000
|
|
482
|
-
});
|
|
483
|
-
```
|
|
484
|
-
- **Struktur Output JSON (`code 200`):**
|
|
485
|
-
```json
|
|
486
|
-
{
|
|
487
|
-
"code": 200,
|
|
488
|
-
"status": "success",
|
|
489
|
-
"message": "Transfer berhasil sebesar Rp 10.000 ke rekening 888000000IBO01."
|
|
490
|
-
}
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
#### D. Menabung / Deposit ke Bank Terhubung (`tabung`)
|
|
494
|
-
- **Sintaks:** `zakki.tabung(jumlah)` *(Memerlukan PIN dalam inisialisasi)*
|
|
495
|
-
- **Contoh:** `await zakki.tabung(25000);`
|
|
496
|
-
- **Output:** `{ "code": 200, "message": "Tabungan berhasil diproses." }`
|
|
497
|
-
|
|
498
|
-
#### E. Menarik Dana dari Bank Terhubung (`tarik`)
|
|
499
|
-
- **Sintaks:** `zakki.tarik(jumlah)` *(Memerlukan PIN dalam inisialisasi)*
|
|
500
|
-
- **Contoh:** `await zakki.tarik(15000);`
|
|
501
|
-
- **Output:** `{ "code": 200, "message": "Penarikan berhasil diproses." }`
|
|
502
|
-
|
|
503
|
-
---
|
|
504
|
-
|
|
505
|
-
### 📱 4. Layanan Noktel (Beli Nomor & OTP)
|
|
506
|
-
|
|
507
|
-
#### A. Cek Persediaan Stok Ready (`noktelStok`)
|
|
508
|
-
Melihat seluruh stok nomor yang ready untuk dipesan.
|
|
509
|
-
- **Sintaks:** `zakki.noktelStok()`
|
|
510
|
-
- **Struktur Output JSON (`code 200`):**
|
|
511
|
-
```json
|
|
512
|
-
{
|
|
513
|
-
"code": 200,
|
|
514
|
-
"status": "success",
|
|
515
|
-
"data": [
|
|
516
|
-
{
|
|
517
|
-
"id": "telegram-112233",
|
|
518
|
-
"phone": "+6289999999999",
|
|
519
|
-
"status": "available",
|
|
520
|
-
"price": 5000
|
|
521
|
-
}
|
|
522
|
-
]
|
|
523
|
-
}
|
|
524
|
-
```
|
|
525
|
-
|
|
526
|
-
#### B. Membeli Nomor OTP Baru (`noktelBuy`)
|
|
527
|
-
Membeli nomor virtual berdasarkan kategori/layanan.
|
|
528
|
-
- **Sintaks:** `zakki.noktelBuy(category)`
|
|
529
|
-
- **Contoh:**
|
|
530
|
-
```javascript
|
|
531
|
-
const res = await zakki.noktelBuy('telegram');
|
|
532
|
-
```
|
|
533
|
-
- **Struktur Output JSON (`code 200`):**
|
|
534
|
-
```json
|
|
535
|
-
{
|
|
536
|
-
"code": 200,
|
|
537
|
-
"status": "success",
|
|
538
|
-
"message": "Pembelian nomor berhasil.",
|
|
539
|
-
"data": {
|
|
540
|
-
"success": true,
|
|
541
|
-
"invoice_id": "INV-171717171-IBO99",
|
|
542
|
-
"account": {
|
|
543
|
-
"id": "telegram-112233",
|
|
544
|
-
"phone": "+6289999999999",
|
|
545
|
-
"status": "sold",
|
|
546
|
-
"price": 5000,
|
|
547
|
-
"sold_to": "IBO99",
|
|
548
|
-
"sold_at": "2026-05-31T17:15:20.000Z"
|
|
549
|
-
},
|
|
550
|
-
"current_balance": 145000
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
```
|
|
554
|
-
|
|
555
|
-
#### C. Tarik Kode OTP Telegram (`noktelGetOtp`)
|
|
556
|
-
Menarik kode OTP dari nomor yang dibeli.
|
|
557
|
-
- **Sintaks:** `zakki.noktelGetOtp(account_id)`
|
|
558
|
-
- **Contoh:**
|
|
559
|
-
```javascript
|
|
560
|
-
const res = await zakki.noktelGetOtp('telegram-112233');
|
|
561
|
-
```
|
|
562
|
-
- **Struktur Output JSON jika Sukses / Diterima:**
|
|
563
|
-
```json
|
|
564
|
-
{
|
|
565
|
-
"code": 200,
|
|
566
|
-
"status": "success",
|
|
567
|
-
"data": {
|
|
568
|
-
"success": true,
|
|
569
|
-
"code": "84729",
|
|
570
|
-
"otp": "84729",
|
|
571
|
-
"new_device": "Telegram for Desktop",
|
|
572
|
-
"login_detected": true
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
```
|
|
576
|
-
|
|
577
|
-
> [!CAUTION]
|
|
578
|
-
> **🔒 ANTI-FRAUD LOCKED RULES:**
|
|
579
|
-
> Demi menjaga keamanan saldo pemilik stok, **Invoice pembelian NOKTEL tidak dapat dibatalkan (Cancel / Refund) apabila kode OTP terdeteksi sudah berhasil masuk/terkirim ke pengguna**, baik pengguna sudah berhasil menyelesaikan proses login maupun belum.
|
|
580
|
-
> - **Status OTP Pending:** Refund diizinkan (`zakki.noktelCancel(inv)`)
|
|
581
|
-
> - **Status OTP Success:** Refund dikunci mati / ditolak.
|
|
582
|
-
|
|
583
|
-
#### D. Batalkan Pesanan & Refund (`noktelCancel`)
|
|
584
|
-
Membatalkan nomor yang masih pending OTP dan melakukan auto-refund saldo.
|
|
585
|
-
- **Sintaks:** `zakki.noktelCancel(invoice_id)`
|
|
586
|
-
- **Contoh:**
|
|
587
|
-
```javascript
|
|
588
|
-
const res = await zakki.noktelCancel('INV-171717171-IBO99');
|
|
589
|
-
```
|
|
590
|
-
- **Struktur Output JSON (`code 200`):**
|
|
591
|
-
```json
|
|
592
|
-
{
|
|
593
|
-
"code": 200,
|
|
594
|
-
"status": "success",
|
|
595
|
-
"message": "Pembelian dibatalkan, saldo dikembalikan."
|
|
596
|
-
}
|
|
597
|
-
```
|
|
598
|
-
|
|
599
|
-
#### E. Riwayat Transaksi Noktel (`noktelHistory`)
|
|
600
|
-
- **Sintaks:** `zakki.noktelHistory()`
|
|
601
|
-
- **Output:**
|
|
602
|
-
```json
|
|
603
|
-
{
|
|
604
|
-
"code": 200,
|
|
605
|
-
"status": "success",
|
|
606
|
-
"data": [
|
|
607
|
-
{
|
|
608
|
-
"id": "INV-171717171-IBO99",
|
|
609
|
-
"account_id": "telegram-112233",
|
|
610
|
-
"phone": "+6289999999999",
|
|
611
|
-
"price": 5000,
|
|
612
|
-
"status": "sukses",
|
|
613
|
-
"timestamp": "2026-05-31T17:15:20.000Z",
|
|
614
|
-
"type": "NOKTEL"
|
|
615
|
-
}
|
|
616
|
-
]
|
|
617
|
-
}
|
|
618
|
-
```
|
|
619
|
-
|
|
620
|
-
---
|
|
621
|
-
|
|
622
|
-
### ⛏️ 5. Layanan Komputasi & Game (Mining & Gacha)
|
|
623
|
-
|
|
624
|
-
#### A. Cek Status Mining Global (`cekmining`)
|
|
625
|
-
Melihat status, tingkat kesulitan, serta parameter global dari sistem Mining koin secara realtime.
|
|
626
|
-
- **Sintaks:** `zakki.cekmining()`
|
|
627
|
-
- **Struktur Output JSON (`code 200`):**
|
|
628
|
-
```json
|
|
629
|
-
{
|
|
630
|
-
"code": 200,
|
|
631
|
-
"status": "success",
|
|
632
|
-
"data": {
|
|
633
|
-
"difficulty": 4,
|
|
634
|
-
"block_reward": 50,
|
|
635
|
-
"total_mined": 12500,
|
|
636
|
-
"active_miners": 8,
|
|
637
|
-
"status": "ACTIVE"
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
```
|
|
641
|
-
|
|
642
|
-
#### B. Cek Statistik Koin Mining Member (`mymining`)
|
|
643
|
-
- **Sintaks:** `zakki.mymining()`
|
|
644
|
-
- **Struktur Output JSON (`code 200`):**
|
|
645
|
-
```json
|
|
646
|
-
{
|
|
647
|
-
"code": 200,
|
|
648
|
-
"status": "success",
|
|
649
|
-
"total": 22,
|
|
650
|
-
"data": [
|
|
651
|
-
{
|
|
652
|
-
"id_transfer": "Mining-7C3F81",
|
|
653
|
-
"amount": 200,
|
|
654
|
-
"timestamp": "2026-05-24T22:38:00.000Z",
|
|
655
|
-
"type": "terima",
|
|
656
|
-
"to": { "id_user": "IBO99", "name": "B2B Partner" }
|
|
657
|
-
}
|
|
658
|
-
]
|
|
659
|
-
}
|
|
660
|
-
```
|
|
661
|
-
|
|
662
|
-
#### C. Cek Status Keberuntungan Gacha (`cekgacha`)
|
|
663
|
-
- **Sintaks:** `zakki.cekgacha()`
|
|
664
|
-
- **Output:** `{ "code": 200, "status": "success", "total_points": 1420 }`
|
|
665
|
-
|
|
666
|
-
---
|
|
667
|
-
|
|
668
|
-
### 🛡️ 6. Layanan Keamanan API (Whitelist IP)
|
|
669
|
-
|
|
670
|
-
#### A. Mendaftarkan Whitelist IP Server (`whitelistip`)
|
|
671
|
-
Mendaftarkan IP host server B2B Anda agar diizinkan melakukan transaksi H2H via API.
|
|
672
|
-
- **Sintaks:** `zakki.whitelistip(ip)`
|
|
673
|
-
- **Contoh:**
|
|
674
|
-
```javascript
|
|
675
|
-
const res = await zakki.whitelistip('123.45.67.89');
|
|
676
|
-
```
|
|
677
|
-
- **Struktur Output JSON (`code 200`):**
|
|
678
|
-
```json
|
|
679
|
-
{
|
|
680
|
-
"code": 200,
|
|
681
|
-
"status": "success",
|
|
682
|
-
"message": "IP '123.45.67.89' berhasil ditambahkan ke whitelist."
|
|
683
|
-
}
|
|
684
|
-
```
|
|
685
|
-
|
|
686
|
-
#### B. Menghapus Whitelist IP Server (`delwhitelistip`)
|
|
687
|
-
- **Sintaks:** `zakki.delwhitelistip(ip)`
|
|
688
|
-
- **Contoh:** `await zakki.delwhitelistip('123.45.67.89');`
|
|
689
|
-
- **Output:** `{ "code": 200, "message": "IP berhasil dihapus." }`
|
|
690
|
-
|
|
691
|
-
---
|
|
692
|
-
|
|
693
|
-
### 📊 7. Layanan Analisis & Statistik Global (Leaderboard & Status)
|
|
694
|
-
|
|
695
|
-
#### A. Mengambil Data Leaderboard Topup Member (`leaderboard`)
|
|
696
|
-
Melihat daftar peringkat topup member teraktif berdasarkan total nilai topup dan jumlah transaksi dalam periode tertentu.
|
|
697
|
-
- **Sintaks:** `zakki.leaderboard(limit, period)`
|
|
698
|
-
- **Parameter:**
|
|
699
|
-
- `limit` (Number, default `10`): Batas jumlah user teratas yang ingin ditampilkan.
|
|
700
|
-
- `period` (String, default `'all'`): Periode akumulasi peringkat (`'all'`, `'today'`, `'month'`).
|
|
701
|
-
- **Contoh:**
|
|
702
|
-
```javascript
|
|
703
|
-
const res = await zakki.leaderboard(5, 'month');
|
|
704
|
-
```
|
|
705
|
-
- **Struktur Output JSON (`code 200`):**
|
|
706
|
-
```json
|
|
707
|
-
{
|
|
708
|
-
"code": 200,
|
|
709
|
-
"status": "success",
|
|
710
|
-
"meta": {
|
|
711
|
-
"periode": "month",
|
|
712
|
-
"total_participants": 24,
|
|
713
|
-
"generated_at": "2026-05-31T17:40:00.000Z"
|
|
714
|
-
},
|
|
715
|
-
"leaderboard": [
|
|
716
|
-
{
|
|
717
|
-
"rank": 1,
|
|
718
|
-
"user_info": {
|
|
719
|
-
"nama": "Ahmad Zakki",
|
|
720
|
-
"id_user": "IBO01",
|
|
721
|
-
"virtual_account": "888000000IBO01"
|
|
722
|
-
},
|
|
723
|
-
"stats": {
|
|
724
|
-
"total_topup": 2500000,
|
|
725
|
-
"total_topup_formatted": "Rp 2.500.000",
|
|
726
|
-
"jumlah_transaksi": 45,
|
|
727
|
-
"terakhir_topup": "2026-05-31T17:35:00.000Z"
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
]
|
|
731
|
-
}
|
|
732
|
-
```
|
|
733
|
-
|
|
734
|
-
#### B. Mengambil Status Kesehatan & Statistik Global Sistem (`status`)
|
|
735
|
-
Melihat rangkuman total volume, laba/rugi, peredaran koin, jumlah transaksi aktif, dan audit status seluruh sistem.
|
|
736
|
-
- **Sintaks:** `zakki.status()`
|
|
737
|
-
- **Contoh:**
|
|
738
|
-
```javascript
|
|
739
|
-
const res = await zakki.status();
|
|
740
|
-
```
|
|
741
|
-
- **Struktur Output JSON (`code 200`):**
|
|
742
|
-
```json
|
|
743
|
-
{
|
|
744
|
-
"code": 200,
|
|
745
|
-
"status": "success",
|
|
746
|
-
"message": "🚀 BANK ZAKKI STORE - SYSTEM STATUS ENGINE (PUBLIC)",
|
|
747
|
-
"data": {
|
|
748
|
-
"statistik_mesin": {
|
|
749
|
-
"total_pengguna": 28,
|
|
750
|
-
"koneksi_aktif": 0,
|
|
751
|
-
"jumlah_core": 4,
|
|
752
|
-
"penggunaan_cpu": [
|
|
753
|
-
"core1: 5%"
|
|
754
|
-
],
|
|
755
|
-
"beban_rata_rata": [0, 0, 0],
|
|
756
|
-
"waktu_aktif": "1 hari, 2 jam, 3 menit, 4 detik"
|
|
757
|
-
},
|
|
758
|
-
"ringkasan_finansial": {
|
|
759
|
-
"total_saldo_beredar": 4500000,
|
|
760
|
-
"total_volume_transaksi": 12500000,
|
|
761
|
-
"total_poin_reward": 120,
|
|
762
|
-
"total_transaksi_h2h": 1420,
|
|
763
|
-
"total_volume_h2h": 12500000,
|
|
764
|
-
"total_mining": 250,
|
|
765
|
-
"total_mining_reward": 12500
|
|
766
|
-
},
|
|
767
|
-
"integritas_keamanan": {
|
|
768
|
-
"injeksi_ilegal": 0,
|
|
769
|
-
"kehilangan_data_terdeteksi": 0,
|
|
770
|
-
"kesehatan_sistem": "🟢 OPTIMAL",
|
|
771
|
-
"status_audit": "100% VERIFIED BY SYSTEM ENGINEERING CHECKER",
|
|
772
|
-
"callback_engine": "ONLINE",
|
|
773
|
-
"telegram_bot": "ONLINE"
|
|
774
|
-
},
|
|
775
|
-
"topup_sukses": 150
|
|
776
|
-
},
|
|
777
|
-
"server_time": "Senin, 1 Juni 2026 pukul 17.40"
|
|
778
|
-
}
|
|
779
|
-
```
|
|
780
148
|
|