### Install Library Source: https://github.com/xuannghia/vietnam-qr-pay/blob/master/README.md Install the package via npm to get started with QR code generation and parsing. ```bash npm install vietnam-qr-pay ``` -------------------------------- ### Generate VietQR codes Source: https://context7.com/xuannghia/vietnam-qr-pay/llms.txt Create static or dynamic VietQR codes for bank transfers. Static QR codes (initMethod '11') contain only account details, while dynamic QR codes (initMethod '12') include transaction amounts and purposes. ```typescript import { QRPay, BanksObject } from 'vietnam-qr-pay'; // QR Tĩnh - Chỉ có thông tin tài khoản const staticQR = QRPay.initVietQR({ bankBin: BanksObject.acb.bin, bankNumber: '257678859', }); const staticContent = staticQR.build(); // QR Động - Có số tiền và nội dung const dynamicQR = QRPay.initVietQR({ bankBin: BanksObject.vietcombank.bin, bankNumber: '1234567890', amount: '500000', purpose: 'Thanh toan hoa don', }); const dynamicContent = dynamicQR.build(); ``` -------------------------------- ### Generate VietQR Codes Source: https://github.com/xuannghia/vietnam-qr-pay/blob/master/README.md Create static or dynamic VietQR codes by initializing the QRPay instance with bank details. Dynamic codes support additional parameters like amount and payment purpose. ```javascript import { QRPay, BanksObject } from 'vietnam-qr-pay'; // Static QR const qrPay = QRPay.initVietQR({ bankBin: BanksObject.acb.bin, bankNumber: '257678859', }) const content = qrPay.build(); // Dynamic QR const dynamicQr = QRPay.initVietQR({ bankBin: BanksObject.acb.bin, bankNumber: '257678859', amount: '10000', purpose: 'Chuyen tien', }) const dynamicContent = dynamicQr.build(); ``` -------------------------------- ### Initialize and Modify QR Pay Data Source: https://github.com/xuannghia/vietnam-qr-pay/blob/master/README.md Demonstrates how to import the QRPay class, parse an existing QR code string, update transaction details like amount and purpose, and generate a new QR code string using the build method. ```javascript import { QRPay } from 'vietnam-qr-pay'; const qrContent = '00020101021238530010A0000007270123000697041601092576788590208QRIBFTTA5303704540410005802VN62150811Chuyen tien6304BBB8'; const qrPay = new QRPay(qrContent); // Update transaction details qrPay.amount = '999999'; qrPay.additionalData.purpose = 'Cam on nhe'; // Generate new QR content const newQRContent = qrPay.build(); ``` -------------------------------- ### Access Bank Information via BanksObject Source: https://context7.com/xuannghia/vietnam-qr-pay/llms.txt Explains how to retrieve detailed bank metadata such as BIN, SWIFT codes, and VietQR support status from the library's built-in bank database. ```typescript import { BanksObject, Banks, VietQRStatus } from 'vietnam-qr-pay'; const acb = BanksObject.acb; console.log(acb.bin); console.log(acb.name); const transferSupported = Banks.filter( bank => bank.vietQRStatus === VietQRStatus.TRANSFER_SUPPORTED ); console.log(transferSupported.length); ``` -------------------------------- ### Generate MoMo QR Code Source: https://context7.com/xuannghia/vietnam-qr-pay/llms.txt Shows how to create a VietQR-compliant code for MoMo payments. It utilizes the BVBank BIN and includes specific reference and unreserved fields required by the MoMo ecosystem. ```typescript import { QRPay, BanksObject } from 'vietnam-qr-pay'; const momoAccountNumber = '99MM24011M34875080'; const momoQR = QRPay.initVietQR({ bankBin: BanksObject.banviet.bin, bankNumber: momoAccountNumber }); momoQR.additionalData.reference = 'MOMOW2W' + momoAccountNumber.slice(10); momoQR.setUnreservedField('80', '046'); const content = momoQR.build(); console.log(content); ``` -------------------------------- ### Generate ZaloPay QR Code Source: https://context7.com/xuannghia/vietnam-qr-pay/llms.txt Provides a simple implementation for generating ZaloPay QR codes using the standard VietQR initialization method via the BVBank gateway. ```typescript import { QRPay, BanksObject } from 'vietnam-qr-pay'; const zaloPayAccountNumber = '99ZP24009M07248267'; const zaloPayQR = QRPay.initVietQR({ bankBin: BanksObject.banviet.bin, bankNumber: zaloPayAccountNumber }); const content = zaloPayQR.build(); console.log(content); ``` -------------------------------- ### Accessing QRPay Object Properties Source: https://context7.com/xuannghia/vietnam-qr-pay/llms.txt Demonstrates how to decode a QR string into a QRPay object and access its properties, including transaction details, provider info, consumer/merchant data, and additional fields. ```typescript import { QRPay } from 'vietnam-qr-pay'; const qr = new QRPay('00020101021238530010A0000007270123000697041601092576788590208QRIBFTTA5303704540410005802VN62150811Chuyen tien6304BBB8'); console.log(qr.isValid); console.log(qr.amount); console.log(qr.provider.name); console.log(qr.consumer.bankNumber); console.log(qr.additionalData.purpose); ``` -------------------------------- ### Generate E-Wallet QR (MoMo/ZaloPay) Source: https://github.com/xuannghia/vietnam-qr-pay/blob/master/README.md Generate QR codes for MoMo and ZaloPay by utilizing the BVBank integration. MoMo requires specific reference data and unreserved fields for proper identification. ```javascript import { QRPay, BanksObject } from 'vietnam-qr-pay'; // MoMo const momoQR = QRPay.initVietQR({ bankBin: BanksObject.banviet.bin, bankNumber: '99MM24011M34875080' }); momoQR.additionalData.reference = 'MOMOW2W34875080'; momoQR.setUnreservedField('80', '046'); const momoContent = momoQR.build(); // ZaloPay const zaloPayQR = QRPay.initVietQR({ bankBin: BanksObject.banviet.bin, bankNumber: '99ZP24009M07248267' }); const zaloContent = zaloPayQR.build(); ``` -------------------------------- ### Generating and Verifying CRC Codes Source: https://context7.com/xuannghia/vietnam-qr-pay/llms.txt Shows how to calculate the CRC16-CCITT checksum for a QR content string and verify the integrity of a complete QR code string. ```typescript import { QRPay } from 'vietnam-qr-pay'; const contentWithoutCRC = '00020101021138530010A0000007270123000697041601092576788590208QRIBFTTA53037045802VN6304'; const crcCode = QRPay.genCRCCode(contentWithoutCRC); const fullQRContent = contentWithoutCRC + crcCode; const qr = new QRPay(fullQRContent); console.log(qr.isValid); // true ``` -------------------------------- ### Rebuild and Modify QR Code Source: https://context7.com/xuannghia/vietnam-qr-pay/llms.txt Demonstrates how to decode an existing QR string into a QRPay object, update specific fields like amount or purpose, and rebuild it into a new valid QR string. ```typescript import { QRPay } from 'vietnam-qr-pay'; const originalContent = '00020101021238530010A0000007270123000697041601092576788590208QRIBFTTA5303704540410005802VN62150811Chuyen tien6304BBB8'; const qrPay = new QRPay(originalContent); qrPay.amount = '999999'; qrPay.additionalData.purpose = 'Cam on nhe'; const newContent = qrPay.build(); console.log(newContent); const verifyQR = new QRPay(newContent); console.log(verifyQR.isValid); ``` -------------------------------- ### Generate VNPay QR Source: https://github.com/xuannghia/vietnam-qr-pay/blob/master/README.md Generate merchant-specific QR codes for VNPay using merchant identification details. ```javascript const qrPay = QRPay.initVNPayQR({ merchantId: '0102154778', merchantName: 'TUGIACOMPANY', store: 'TU GIA COMPUTER', terminal: 'TUGIACO1', }); const content = qrPay.build(); ``` -------------------------------- ### Generate VNPay Merchant QR codes Source: https://context7.com/xuannghia/vietnam-qr-pay/llms.txt Generate QR codes for merchants using the VNPay standard. This method accepts parameters such as merchant ID, store name, terminal ID, and transaction details to build a compliant QR string. ```typescript import { QRPay } from 'vietnam-qr-pay'; const vnpayQR = QRPay.initVNPayQR({ merchantId: '0102154778', merchantName: 'TUGIACOMPANY', store: 'TU GIA COMPUTER', terminal: 'TUGIACO1', amount: '1500000', purpose: 'Thanh toan laptop', billNumber: 'INV2024001', reference: 'REF123456', }); const content = vnpayQR.build(); ``` -------------------------------- ### Decode QR Codes Source: https://github.com/xuannghia/vietnam-qr-pay/blob/master/README.md Parse existing QR code strings to extract provider information, consumer details, amounts, and additional metadata. ```javascript import { QRPay } from 'vietnam-qr-pay'; const qrContent = '...'; // QR string const qrPay = new QRPay(qrContent); console.log(qrPay.isValid); console.log(qrPay.provider.name); console.log(qrPay.amount); ``` -------------------------------- ### Setting EMVCo and Unreserved Fields Source: https://context7.com/xuannghia/vietnam-qr-pay/llms.txt Illustrates how to add custom data to a QR code using EMVCo (ID 65-79) and Unreserved (ID 80-99) fields to support specific payment requirements. ```typescript import { QRPay, BanksObject } from 'vietnam-qr-pay'; const qr = QRPay.initVietQR({ bankBin: BanksObject.banviet.bin, bankNumber: '99MM24011M34875080', }); qr.setUnreservedField('80', '046'); qr.setEVMCoField('65', 'evmco_data_1'); const content = qr.build(); ``` -------------------------------- ### Decode and validate QR codes Source: https://context7.com/xuannghia/vietnam-qr-pay/llms.txt Parse existing QR code strings to extract payment information. The library automatically validates the CRC checksum and provides access to provider details, consumer/merchant info, and transaction metadata. ```typescript import { QRPay } from 'vietnam-qr-pay'; // Decode VietQR const vietQRContent = '00020101021238530010A0000007270123000697041601092576788590208QRIBFTTA5303704540410005802VN62150811Chuyen tien6304BBB8'; const vietQR = new QRPay(vietQRContent); console.log(vietQR.isValid); // true // Decode VNPayQR const vnpayContent = '00020101021126280010A000000775011001087990425204597753037045802VN5909MYPHAMHER6005HANOI62260311MY PHAM HER0707MPHER0163041C50'; const vnpayQR = new QRPay(vnpayContent); console.log(vnpayQR.isValid); // true ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.