qris-saweria
Version:
saweria.co unofficial api that can create qris and check it automatically
202 lines (155 loc) • 5.7 kB
Markdown
API tidak resmi saweria.co yang dapat membuat dan memeriksa kode QRIS secara otomatis
[](https://www.npmjs.com/package/qris-saweria)
[](https://github.com/AutoFTbot/saweria-qris/blob/master/LICENSE)
- Membuat kode pembayaran QRIS
- Integrasi template DANA opsional
- Pembuatan nama pengirim secara acak
- Pengecekan status pembayaran
- API yang sederhana dan mudah digunakan
```bash
npm install qris-saweria
```
```javascript
const saweriaQris = require('qris-saweria')
// Membuat kode QR dengan template DANA
const [qrString, transactionId, qrImagePath] = await saweriaQris.createPaymentQr(
'nama_saweria', // Nama pengguna Saweria Anda
10000, // Jumlah dalam IDR (minimum 1000)
'donatur@email.com' // Email donatur
);
// Memeriksa status pembayaran
const isPaid = await saweriaQris.paidStatus(transactionId);
```
Membuat kode pembayaran QRIS dan menghasilkan gambar QR.
- `saweriaUsername` (string) - Nama pengguna Saweria Anda
- `amount` (number) - Jumlah donasi dalam IDR (minimum 1000)
- `email` (string) - Alamat email donatur
- `outputPath` (string, opsional) - Path untuk gambar QR code (default: 'qris.png')
- `useTemplate` (boolean, opsional) - Apakah akan menggunakan template DANA (default: true)
#### Return:
Promise yang mengembalikan `[qrString, transactionId, qrImagePath]`:
- `qrString` - String pembayaran QRIS
- `transactionId` - ID transaksi untuk pengecekan status
- `qrImagePath` - Path tempat gambar QR disimpan
### paidStatus(transactionId)
Memeriksa apakah pembayaran telah selesai.
#### Parameter:
- `transactionId` (string) - ID transaksi dari createPaymentQr
#### Return:
Promise yang mengembalikan `boolean` - `true` jika sudah dibayar, `false` jika belum dibayar
## Contoh
### Membuat TestFull
```javascript
const saweriaQris = require('qris-saweria')
async function waitForPayment(transactionId, checkInterval = 5000) {
console.log('Menunggu pembayaran...');
while (true) {
try {
const isPaid = await saweriaQris.paidStatus(transactionId);
if (isPaid) {
console.log('\n✅ Pembayaran berhasil!');
break;
} else {
process.stdout.write('.');
}
} catch (error) {
console.error('\nError:', error.message);
break;
}
// Tunggu sebelum cek lagi
await new Promise(resolve => setTimeout(resolve, checkInterval));
}
}
async function test() {
try {
const amount = 1000; // Minimum 1.000 IDR
console.log(`\nMembuat QR code untuk pembayaran ${amount} IDR...`);
// Dengan template (default)
const [, transactionId, qrImagePath] = await saweriaQris.createPaymentQr(
'UserBotTelegram', // saweria username
amount, // amount (minimum 1000)
'test@example.com', // sender email
'qris_with_template.png', // output dengan template
true // gunakan template
);
// Tanpa template
await saweriaQris.createPaymentQr(
'UserBotTelegram',
amount,
'test@example.com',
'qris_no_template.png', // output tanpa template
false // tidak gunakan template
);
console.log('\nQR Code berhasil dibuat!');
console.log('QR dengan template:', qrImagePath);
console.log('QR tanpa template: qris_no_template.png');
console.log('Transaction ID:', transactionId);
console.log('\nSilakan scan QR code untuk melakukan pembayaran.');
// Mulai polling status pembayaran
await waitForPayment(transactionId);
} catch (error) {
console.error('Error:', error.message);
}
}
// Jalankan test
test();
```
```javascript
const saweriaQris = require('qris-saweria')
async function createPayment() {
try {
const [, transactionId, qrPath] = await saweriaQris.createPaymentQr(
'saweriaku',
15000,
'donatur@email.com',
'pembayaran.png',
true // gunakan template
);
console.log('QR Code dibuat:', qrPath);
console.log('ID Transaksi:', transactionId);
} catch (error) {
console.error('Error:', error.message);
}
}
```
```javascript
const [, transactionId, qrPath] = await saweriaQris.createPaymentQr(
'saweriaku',
15000,
'donatur@email.com',
'pembayaran.png',
false // tanpa template
);
```
```javascript
const saweriaQris = require('qris-saweria')
async function checkPayment(transactionId) {
while (true) {
const isPaid = await saweriaQris.paidStatus(transactionId);
if (isPaid) {
console.log('Pembayaran diterima!');
break;
}
await new Promise(resolve => setTimeout(resolve, 5000)); // Periksa setiap 5 detik
}
}
```
- Jumlah trx minimum adalah 1.000 IDR
- Nama pengirim dibuat secara otomatis
- Pesan dukungan acak disertakan dengan setiap donasi
- Template DANA bersifat opsional
MIT
Kontribusi, masalah, dan permintaan fitur sangat diterima! Silakan periksa [halaman issues](https://github.com/AutoFTbot/saweria-qris/issues).