wahdx-api 1.0.2 → 1.0.3
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 +1 -0
- package/dist/index.cjs +1 -6
- package/dist/index.mjs +1 -6
- package/dist/qr-generator.cjs +26 -17
- package/dist/qr-generator.mjs +26 -17
- package/package.json +1 -2
package/README.md
CHANGED
|
@@ -8,6 +8,7 @@ Package untuk generate QRIS dan cek payment status secara realtime dengan API Or
|
|
|
8
8
|
- Generate kode QR dengan nominal tertentu
|
|
9
9
|
- Cek status pembayaran secara realtime
|
|
10
10
|
- Generate bukti transaksi (receipt)
|
|
11
|
+
- Kompatibel di semua platform (Windows, Linux, Mac)
|
|
11
12
|
|
|
12
13
|
## Instalasi
|
|
13
14
|
|
package/dist/index.cjs
CHANGED
|
@@ -24,12 +24,7 @@ class QRISPayment {
|
|
|
24
24
|
* @returns {Promise<{qrString: string, qrBuffer: Buffer}>}
|
|
25
25
|
*/
|
|
26
26
|
async generateQR(amount) {
|
|
27
|
-
|
|
28
|
-
const qrBuffer = await this.qrGenerator.generateQRWithLogo(qrString);
|
|
29
|
-
return {
|
|
30
|
-
qrString,
|
|
31
|
-
qrBuffer
|
|
32
|
-
};
|
|
27
|
+
return await this.qrGenerator.generateQR(amount);
|
|
33
28
|
}
|
|
34
29
|
|
|
35
30
|
/**
|
package/dist/index.mjs
CHANGED
|
@@ -24,12 +24,7 @@ class QRISPayment {
|
|
|
24
24
|
* @returns {Promise<{qrString: string, qrBuffer: Buffer}>}
|
|
25
25
|
*/
|
|
26
26
|
async generateQR(amount) {
|
|
27
|
-
|
|
28
|
-
const qrBuffer = await this.qrGenerator.generateQRWithLogo(qrString);
|
|
29
|
-
return {
|
|
30
|
-
qrString,
|
|
31
|
-
qrBuffer
|
|
32
|
-
};
|
|
27
|
+
return await this.qrGenerator.generateQR(amount);
|
|
33
28
|
}
|
|
34
29
|
|
|
35
30
|
/**
|
package/dist/qr-generator.cjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const QRCode = require("qrcode");
|
|
2
|
-
const { createCanvas, loadImage } = require("canvas");
|
|
3
2
|
const fs = require("fs");
|
|
4
3
|
const sharp = require("sharp");
|
|
5
4
|
const jsQR = require("jsqr");
|
|
@@ -10,7 +9,6 @@ class QRISGenerator {
|
|
|
10
9
|
constructor(config = {}) {
|
|
11
10
|
this.config = {
|
|
12
11
|
baseQrString: config.baseQrString || '',
|
|
13
|
-
logoPath: config.logoPath || null,
|
|
14
12
|
defaultQrPath: config.defaultQrPath || 'QRIS.png'
|
|
15
13
|
};
|
|
16
14
|
}
|
|
@@ -84,14 +82,19 @@ class QRISGenerator {
|
|
|
84
82
|
}
|
|
85
83
|
}
|
|
86
84
|
|
|
87
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Generate QR code sebagai PNG buffer
|
|
87
|
+
* @param {string} qrString - String QR code yang akan digenerate
|
|
88
|
+
* @returns {Promise<Buffer>} - Buffer PNG dari QR code
|
|
89
|
+
*/
|
|
90
|
+
async generateQRImage(qrString) {
|
|
88
91
|
try {
|
|
89
92
|
if (!qrString) {
|
|
90
93
|
throw new Error('qrString tidak boleh kosong');
|
|
91
94
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
await QRCode.
|
|
95
|
+
|
|
96
|
+
// Gunakan QRCode.toBuffer langsung tanpa canvas
|
|
97
|
+
const qrBuffer = await QRCode.toBuffer(qrString, {
|
|
95
98
|
errorCorrectionLevel: 'H',
|
|
96
99
|
margin: 2,
|
|
97
100
|
width: 500,
|
|
@@ -100,16 +103,8 @@ class QRISGenerator {
|
|
|
100
103
|
light: '#ffffff'
|
|
101
104
|
}
|
|
102
105
|
});
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const logoSize = canvas.width * 0.2;
|
|
106
|
-
const logoPosition = (canvas.width - logoSize) / 2;
|
|
107
|
-
|
|
108
|
-
ctx.fillStyle = '#FFFFFF';
|
|
109
|
-
ctx.fillRect(logoPosition - 5, logoPosition - 5, logoSize + 10, logoSize + 10);
|
|
110
|
-
ctx.drawImage(logo, logoPosition, logoPosition, logoSize, logoSize);
|
|
111
|
-
}
|
|
112
|
-
return canvas.toBuffer('image/png');
|
|
106
|
+
|
|
107
|
+
return qrBuffer;
|
|
113
108
|
} catch (error) {
|
|
114
109
|
throw new Error('Gagal generate QR: ' + error.message);
|
|
115
110
|
}
|
|
@@ -136,7 +131,7 @@ class QRISGenerator {
|
|
|
136
131
|
const qrString = this.generateQrString(amount);
|
|
137
132
|
|
|
138
133
|
// Generate QR image
|
|
139
|
-
const qrBuffer = await this.
|
|
134
|
+
const qrBuffer = await this.generateQRImage(qrString);
|
|
140
135
|
|
|
141
136
|
return {
|
|
142
137
|
qrString,
|
|
@@ -147,6 +142,20 @@ class QRISGenerator {
|
|
|
147
142
|
}
|
|
148
143
|
}
|
|
149
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Generate QR dengan nominal tertentu
|
|
147
|
+
* @param {number} amount - Nominal pembayaran
|
|
148
|
+
* @returns {Promise<{qrString: string, qrBuffer: Buffer}>}
|
|
149
|
+
*/
|
|
150
|
+
async generateQR(amount) {
|
|
151
|
+
const qrString = this.generateQrString(amount);
|
|
152
|
+
const qrBuffer = await this.generateQRImage(qrString);
|
|
153
|
+
return {
|
|
154
|
+
qrString,
|
|
155
|
+
qrBuffer
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
150
159
|
generateQrString(amount) {
|
|
151
160
|
try {
|
|
152
161
|
if (!amount || amount <= 0) {
|
package/dist/qr-generator.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import QRCode from 'qrcode';
|
|
2
|
-
import { createCanvas, loadImage } from 'canvas';
|
|
3
2
|
import fs from 'fs';
|
|
4
3
|
import sharp from 'sharp';
|
|
5
4
|
import jsQR from 'jsqr';
|
|
@@ -13,7 +12,6 @@ class QRISGenerator {
|
|
|
13
12
|
constructor(config = {}) {
|
|
14
13
|
this.config = {
|
|
15
14
|
baseQrString: config.baseQrString || '',
|
|
16
|
-
logoPath: config.logoPath || null,
|
|
17
15
|
defaultQrPath: config.defaultQrPath || 'QRIS.png'
|
|
18
16
|
};
|
|
19
17
|
}
|
|
@@ -87,14 +85,19 @@ class QRISGenerator {
|
|
|
87
85
|
}
|
|
88
86
|
}
|
|
89
87
|
|
|
90
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Generate QR code sebagai PNG buffer
|
|
90
|
+
* @param {string} qrString - String QR code yang akan digenerate
|
|
91
|
+
* @returns {Promise<Buffer>} - Buffer PNG dari QR code
|
|
92
|
+
*/
|
|
93
|
+
async generateQRImage(qrString) {
|
|
91
94
|
try {
|
|
92
95
|
if (!qrString) {
|
|
93
96
|
throw new Error('qrString tidak boleh kosong');
|
|
94
97
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
await QRCode.
|
|
98
|
+
|
|
99
|
+
// Gunakan QRCode.toBuffer langsung tanpa canvas
|
|
100
|
+
const qrBuffer = await QRCode.toBuffer(qrString, {
|
|
98
101
|
errorCorrectionLevel: 'H',
|
|
99
102
|
margin: 2,
|
|
100
103
|
width: 500,
|
|
@@ -103,16 +106,8 @@ class QRISGenerator {
|
|
|
103
106
|
light: '#ffffff'
|
|
104
107
|
}
|
|
105
108
|
});
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const logoSize = canvas.width * 0.2;
|
|
109
|
-
const logoPosition = (canvas.width - logoSize) / 2;
|
|
110
|
-
|
|
111
|
-
ctx.fillStyle = '#FFFFFF';
|
|
112
|
-
ctx.fillRect(logoPosition - 5, logoPosition - 5, logoSize + 10, logoSize + 10);
|
|
113
|
-
ctx.drawImage(logo, logoPosition, logoPosition, logoSize, logoSize);
|
|
114
|
-
}
|
|
115
|
-
return canvas.toBuffer('image/png');
|
|
109
|
+
|
|
110
|
+
return qrBuffer;
|
|
116
111
|
} catch (error) {
|
|
117
112
|
throw new Error('Gagal generate QR: ' + error.message);
|
|
118
113
|
}
|
|
@@ -139,7 +134,7 @@ class QRISGenerator {
|
|
|
139
134
|
const qrString = this.generateQrString(amount);
|
|
140
135
|
|
|
141
136
|
// Generate QR image
|
|
142
|
-
const qrBuffer = await this.
|
|
137
|
+
const qrBuffer = await this.generateQRImage(qrString);
|
|
143
138
|
|
|
144
139
|
return {
|
|
145
140
|
qrString,
|
|
@@ -150,6 +145,20 @@ class QRISGenerator {
|
|
|
150
145
|
}
|
|
151
146
|
}
|
|
152
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Generate QR dengan nominal tertentu
|
|
150
|
+
* @param {number} amount - Nominal pembayaran
|
|
151
|
+
* @returns {Promise<{qrString: string, qrBuffer: Buffer}>}
|
|
152
|
+
*/
|
|
153
|
+
async generateQR(amount) {
|
|
154
|
+
const qrString = this.generateQrString(amount);
|
|
155
|
+
const qrBuffer = await this.generateQRImage(qrString);
|
|
156
|
+
return {
|
|
157
|
+
qrString,
|
|
158
|
+
qrBuffer
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
153
162
|
generateQrString(amount) {
|
|
154
163
|
try {
|
|
155
164
|
if (!amount || amount <= 0) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wahdx-api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Package untuk generate QRIS dan cek payment status secara realtime dengan API OrderKuota dari https://api.wahdx.co",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -38,7 +38,6 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@dotenvx/dotenvx": "^1.47.5",
|
|
40
40
|
"axios": "^1.10.0",
|
|
41
|
-
"canvas": "^3.1.2",
|
|
42
41
|
"jsqr": "^1.4.0",
|
|
43
42
|
"moment": "^2.29.4",
|
|
44
43
|
"pdfkit": "^0.13.0",
|