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;
}