KHQR Code

A Dart/Flutter library for generating and decoding KHQR (Cambodia QR Code Payment) codes for the Bakong payment system.

Features

  • Generate KHQR codes for individual payments
  • Generate KHQR codes for merchant payments
  • Decode existing KHQR codes
  • Verify KHQR code validity
  • Support for both USD and KHR currencies
  • Compatible with Cambodia's Bakong payment system

Getting started

Add this package to your pubspec.yaml:

dependencies:
  khqrcode: ^1.0.0

Then run:

dart pub get

Usage

Generating Individual QR Code

import 'package:khqrcode/khqrcode.dart';

final individualInfo = IndividualInfo(
  bakongAccountId: 'receivekhqr@yourbank',
  accountInformation: "021550815",
  merchantName: 'M Sovan',
  acquiringBank: 'YOUR BANK',
  expirationTimestamp: DateTime.now().add(Duration(minutes: 15)).millisecondsSinceEpoch,
  merchantCity: 'Phnom Penh',
  currency: KHQRDataConst.currency['khr']!,
  amount: 1,
);

final bakongKhqr = BakongKHQR();
final result = bakongKhqr.generateIndividual(individualInfo);

if (result.isSuccess) {
  print('QR Code: ${result.data!.qr}');
  print('MD5: ${result.data!.md5Hash}');
}

Generating Merchant QR Code

final merchantInfo = MerchantInfo(
  acquiringBankName: "YOUR BANK",
  merchantId: "234234234",
  bakongAccountId: 'receivekhqr@yourbank',
  merchantName: 'FLick Coffee',
  merchantCity: 'Phnom Penh',
  currency: KHQRDataConst.currency['khr']!,
  amount: 1,
);

final result = bakongKhqr.generateMerchant(merchantInfo);

Decoding and Verifying QR Code

// Verify QR code
var verification = BakongKHQR.verify(qrString);
if (verification.isValid) {
  print("QR is valid");
}

// Decode QR code
var decodedData = BakongKHQR.decode(qrString);
if (decodedData.isSuccess) {
  print('Decoded data: ${decodedData.data!.toJson()}');
}

Additional information

This library implements the KHQR specification for Cambodia's Bakong payment system. For more information about KHQR, visit the official Bakong documentation.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Issues

If you encounter any issues, please file them on the GitHub repository.

Libraries

khqrcode