vietqr_core 0.2.5+1 copy "vietqr_core: ^0.2.5+1" to clipboard
vietqr_core: ^0.2.5+1 copied to clipboard

A pure Dart library for encoding and decoding VietQR data according to the EMVCo standard. Suitable for both client and server environments.

example/vietqr_core_example.dart

import 'package:vietqr_core/vietqr_core.dart';

void main() {
  // Example 1: Basic VietQR payment with amount
  final basicPayment = VietQrData(
    bankBinCode: SupportedBank.vietcombank,
    bankAccount: '0123456789',
    amount: '50000',
    merchantName: 'John Doe',
    merchantCity: 'Ho Chi Minh City',
    additional: const AdditionalData(purpose: 'Payment for invoice #12345'),
  );

  final basicQrString = VietQr.encode(basicPayment);
  print('Basic Payment QR: $basicQrString');
  print('');

  // Example 2: Dynamic QR (no amount - user enters amount when scanning)
  final dynamicPayment = VietQrData(
    bankBinCode: SupportedBank.techcombank,
    bankAccount: '9876543210',
    merchantName: 'Coffee Shop ABC',
    merchantCity: 'Hanoi',
    additional: const AdditionalData(
      purpose: 'Coffee payment',
      storeLabel: 'Store #001',
    ),
  );

  final dynamicQrString = VietQr.encode(dynamicPayment);
  print('Dynamic Payment QR: $dynamicQrString');
  print('');

  // Example 3: Payment with additional data
  final detailedPayment = VietQrData(
    bankBinCode: SupportedBank.bidv,
    bankAccount: '1122334455',
    amount: '100000',
    merchantName: 'Restaurant XYZ',
    merchantCity: 'Da Nang',
    postalCode: '550000',
    additional: const AdditionalData(
      purpose: 'Dinner payment',
      billNumber: 'BILL-2024-001',
      mobileNumber: '0912345678',
      storeLabel: 'Main Branch',
      customerLabel: 'VIP Customer',
    ),
  );

  final detailedQrString = VietQr.encode(detailedPayment);
  print('Detailed Payment QR: $detailedQrString');
  print('');

  // Example 4: Encode and Decode demo
  final originalData = VietQrData(
    bankBinCode: SupportedBank.mbbank,
    bankAccount: '5566778899',
    amount: '25000',
    merchantName: 'Online Store',
    additional: const AdditionalData(
      purpose: 'Online purchase',
      referenceLabel: 'ORDER-789',
    ),
  );

  // Encode to QR string
  final encodedQrString = VietQr.encode(originalData);
  print('Encoded QR: $encodedQrString');

  // Decode back to VietQrData
  final decodedData = VietQr.decode(encodedQrString);
  print(
    'Decoded Bank: ${SupportedBank.fromBinCode(decodedData.merchantAccInfo.beneficiaryOrgData.bankBinCode)?.displayName}',
  );
  print(
    'Decoded Account: ${decodedData.merchantAccInfo.beneficiaryOrgData.bankAccount}',
  );
  print('Decoded Amount: ${decodedData.amount}');
  print('Decoded Purpose: ${decodedData.additional.purpose}');
  print('');

  // Example 5: Different banks demonstration
  final banks = [
    SupportedBank.vietinbank,
    SupportedBank.agribank,
    SupportedBank.acb,
    SupportedBank.vpbank,
  ];

  print('Multi-bank QR generation:');
  for (final bank in banks) {
    final payment = VietQrData(
      bankBinCode: bank,
      bankAccount: '1234567890',
      amount: '10000',
      merchantName: 'Multi-bank Demo',
      additional: AdditionalData(purpose: 'Payment via ${bank.displayName}'),
    );

    final qrString = VietQr.encode(payment);
    print('${bank.displayName}: ${qrString.substring(0, 50)}...');
  }
}
11
likes
160
points
83
downloads

Publisher

unverified uploader

Weekly Downloads

A pure Dart library for encoding and decoding VietQR data according to the EMVCo standard. Suitable for both client and server environments.

Homepage
Repository (GitHub)
View/report issues

Topics

#qr #vietqr #banking #vietnam #payment

Documentation

API reference

License

MIT (license)

More

Packages that depend on vietqr_core