Main /
GS-qris
const qrisData = "00020101021226570011ID.DANA.WWW011893600915009190876302090919087630303UMI51440014ID.CO.QRIS.WWW0215ID10200560988710303UMI520472985303360540412345802ID5915halal MART fira6011Kota Sorong610598416621960150011ID.DANA.WWW6304A162";
// Fungsi untuk menghitung CRC16
function convertCRC16(str) {
var crc = 0xFFFF;
for (var c = 0; c < str.length; c++) {
crc ^= str.charCodeAt(c) << 8;
for (var i = 0; i < 8; i++) {
if (crc & 0x8000) {
crc = (crc << 1) ^ 0x1021;
} else {
crc = crc << 1;
}
}
}
var hex = (crc & 0xFFFF).toString(16).toUpperCase();
return hex.padStart(4, '0'); // Memastikan panjang 4 karakter
}
// Fungsi untuk menghasilkan QRIS dinamis
function generateDynamicQRIS(data) {
var qrisData = data.qris_data;
var nominal = data.nominal;
//var nominal = "123456";
var biayaLayanan = data.biaya_layanan;
var tax = "";
if (biayaLayanan === 'y') {
var jenisBiaya = data.jenis_biaya;
var jumlahBiaya = data.jumlah_biaya;
if (jenisBiaya === 'r') {
tax = "55020256" + jumlahBiaya.length.toString().padStart(2, '0') + jumlahBiaya;
} else if (jenisBiaya === 'p') {
tax = "55020357" + jumlahBiaya.length.toString().padStart(2, '0') + jumlahBiaya;
}
}
var qris = qrisData.substring(0, qrisData.length - 4);
var step1 = qris.replace("010211", "010212"); // Mengubah tipe QRIS
var step2 = step1.split("5802ID"); // Memisahkan berdasarkan kode negara
var uang = "54" + nominal.length.toString().padStart(2, '0') + nominal; // Format nominal
var fix = step2[0].trim() + uang + (tax ? tax : "") + "5802ID" + step2[1].trim(); // Gabungkan data baru
var crc = convertCRC16(fix); // Hitung CRC16
var finalQRIS = fix + crc; // Tambahkan checksum
//console.log(finalQRIS)
return finalQRIS;
}
// Fungsi utama untuk menghasilkan QR Code dengan QRIS yang diperbarui
function generateQRCode() {
var data = {
qris_data: "00020101021226570011ID.DANA.WWW011893600915309190876302090919087630303UMI51440014ID.CO.QRIS.WWW0215ID10200560988710303UMI520472985303360540455555802ID5915halal MART fira6011Kota Sorong61059841663040ACA",
nominal: "191919", // Nominal baru
biayaLayanan: "n", // 'y' jika ingin menambahkan biaya layanan
jenis_biaya: "",
jumlah_biaya: ""
};
var finalQRIS = generateDynamicQRIS(data);
// Membuat URL QR Code
var qrCodeUrl = "https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=" + encodeURIComponent(finalQRIS);
Logger.log("QR Code URL: " + qrCodeUrl);
//Logger.log("QRIS Data Baru: " + finalQRIS);
return qrCodeUrl;
}