dra-qris-api
v1.0.1-dra.6
Published
Connector and modules for QRIS API DenayRestAPI
Maintainers
Readme
DRA QRIS API
QRIS Dinamis Generator + Auto Payment Handler
Library Node.js untuk membuat QRIS, membaca bukti transfer secara otomatis, dan memverifikasi pembayaran melalui API.
⚡ Fitur Utama
- ⚡ Generate QRIS dinamis otomatis
- 🔍 Membaca foto bukti transfer otomatis
- 🤖 Auto Payment Handler untuk bot WhatsApp (untuk saat ini hanya pada bot WhatsApp)
- 🔐 HMAC Signature SHA-256 untuk keamanan request
- 🗂️ Sangat mudah diintegrasikan ke bot / server mana pun
🛠️ Instalasi
npm i dra-qris-api📁 Struktur Fungsi
Library ini menyediakan 4 fitur utama:
🧠 Arsitektur Singkat
flowchart TD
A["User Kirim Command Order"] --> B["createQris()"]
B --> C["Generate QRIS + ID"]
C --> D["Simpan ke globalPending"]
D --> E["User Kirim Bukti Transfer"]
E --> F["handlePaymentProof()"]
F --> G["OCR Tesseract"]
G --> H["submitProof()"]
H --> I{"Status Paid?"}
I -->|YES| J["Success Callback (bot handle)"]
I -->|NO| K["Reply: Pembayaran belum valid"]🚀 Cara Penggunaan
1. Import Function
const {
createQris,
submitProof,
handlePaymentProof,
globalPending,
} = require("dra-qris-api");2. Generate QRIS
const { id, buffer } = await createQris({
nominal: 15000,
merchantName: "NAMA MERCHANT",
qris: "STRING_QRIS",
apikey: "API_KEY", // Hubungi admin atau kunjungi https://api.denayrestapi.xyz untuk mendapatkan apikey
});Simpan transaksi:
globalPending[userId] = {
id,
nominal: 15000,
merchantName: "NAMA MERCHANT",
description: "Pembelian Paket Premium",
meta: { type: "premium" },
};3. Handler Bukti Transfer
if (m.message?.imageMessage) {
const result = await handlePaymentProof({
m,
NekonoidF,
reply,
botname: "MyBot",
apiKey: "API_KEY_KAMU", // Hubungi admin atau kunjungi https://api.denayrestapi.xyz untuk mendapatkan apikey
});
if (!result) return; // gambar biasa bukan bukti tf
if (result.status === "paid") {
await reply("🎉 Pembayaran berhasil diterima!");
}
}4. Struktur Return dari handlePaymentProof()
{
status: "paid",
ocrAmount: 15000,
ocrText: "...hasil bukti transfer...",
pending: {
id: "...",
nominal: 15000,
merchantName: "NAMA MERCHANT",
description: "Pembelian Paket Premium",
meta: {...},
},
apiResult: {...}
}📦 Fitur: globalPending
Contoh penyimpanan transaksi:
globalPending["[email protected]"] = {
id: "PAY123",
nominal: 20000,
description: "Topup Saldo",
meta: {
type: "topup",
amount: 20000,
},
};Menghapus transaksi:
delete globalPending[m.sender];Implementasi Lengkap
if (m.message?.imageMessage) {
const result = await handlePaymentProof({
m,
NekonoidF: conn,
reply: (txt) => conn.sendMessage(m.chat, { text: txt }),
botname: "BotDigital",
apiKey: "API_KEY", // Hubungi admin atau kunjungi https://api.denayrestapi.xyz untuk mendapatkan apikey
});
if (result?.status === "paid") {
if (result.pending.meta.product === "A") {
// kasih produk
}
}
}
switch (command) {
case "buy":
{
const basePrice = 20000;
// Kode unik untuk mencegah gambar palsu
const uniqueCode = Math.floor(Math.random() * 100); // 0 - 99
const nominal = basePrice + uniqueCode;
const { id, buffer } = await createQris({
nominal,
merchantName: "TOKO SAYA",
qris: "QRIS STRING",
apikey: "API_KEY", // Hubungi admin atau kunjungi https://api.denayrestapi.xyz untuk mendapatkan apikey
});
globalPending[m.sender] = {
id,
nominal,
description: "Pembelian Produk A",
meta: { product: "A", uniqueCode },
};
await conn.sendMessage(m.chat, {
image: Buffer.from(buffer),
caption: `💳 *Pembayaran Produk A*\nNominal: Rp${nominal}\n\nSilakan scan QRIS dan unggah bukti transfer.`,
});
}
break;
}🛡️ Keamanan
- Semua request memakai HMAC-SHA256 signature
- Timestamp + request-id otomatis
NOTE
Ini hanya menggunakan metode validasi pembayaran via bukti transfer, tidak melakukan pembayaran otomatis layaknya API QRIS langsung. Silahkan gunakan API QRIS langsung jika cara ini terbilang rumit, cara ini hanya sebagai alternatif.
