Skip to main content

Crate khqr

Crate khqr 

Source
Expand description

§Bakong KHQR SDK

Unofficial Rust SDK for Bakong KHQR (Cambodia’s centralized QR payment system).

§Features

  • QR Code Generation (Individual and Merchant accounts)
  • QR Code Decoding
  • CRC16 Verification
  • Bakong API Integration

§Quick Start

use bakong_khqr::{BakongKHQR, IndividualInfo};

let khqr = BakongKHQR::new("your_token");

// Generate QR code
let info = IndividualInfo::builder()
    .bakong_account_id("user@bank")
    .merchant_name("Coffee Shop")
    .merchant_city("Phnom Penh")
    .currency("KHR")
    .amount(50000.0)
    .build()
    .unwrap();

let result = khqr.generate_qr(info).unwrap();
println!("QR Code: {}", result.qr);
println!("MD5 Hash: {}", result.md5);

§API Usage

use bakong_khqr::{BakongKHQR, SourceInfo};

#[tokio::main]
async fn main() -> Result<(), bakong_khqr::BakongError> {
    let khqr = BakongKHQR::new("your_token");

    // Check if Bakong account exists
    let response = khqr.check_bakong_account("user@bank").await?;
    println!("Account exists: {:?}", response.data);

    // Check transaction by MD5
    let tx = khqr.check_transaction_by_md5("md5_hash").await?;

    // Generate deeplink
    let deeplink = khqr.generate_deeplink(
        "qr_string",
        SourceInfo {
            app_name: "My App".to_string(),
            app_icon_url: None,
            app_deep_link_callback: None,
        },
    ).await?;

    Ok(())
}

Re-exports§

pub use client::BakongKHQR;
pub use config::BakongConfig;
pub use config::Environment;
pub use crc::calculate_crc16;
pub use crc::verify_crc;
pub use decoder::KHQRDecoder;
pub use error::BakongError;
pub use error::Result;
pub use utils::format_amount;
pub use utils::format_sub_tag_length_value;
pub use utils::format_tag_length_value;
pub use utils::md5_hash;
pub use utils::pad_length;
pub use utils::parse_tag_length_value;
pub use types::*;

Modules§

client
Bakong KHQR SDK
config
Configuration for Bakong API client
constants
Constants for Bakong KHQR SDK EMV QR Code Tags
crc
CRC16-CCITT-FALSE implementation for KHQR verification
decoder
KHQR Decoder - parses EMV QR codes for Bakong
error
Error types for Bakong KHQR SDK
types
Types module - public exports
utils
Utility functions for Bakong KHQR SDK