pisethchhun/bakong-khqr-php
Composer 安装命令:
composer require pisethchhun/bakong-khqr-php
包简介
PHP package for generating and parsing Bakong KHQR (Cambodian QR payment) codes
README 文档
README
A comprehensive PHP package for generating, parsing, and validating Bakong KHQR (Cambodian QR payment) codes. This package provides tools for developers to easily integrate with Cambodia's Bakong payment system.
Features
- Generate Bakong KHQR codes for individuals and merchants
- Parse and validate existing KHQR codes
- Support for both KHR and USD currencies
- Deep link generation for mobile apps
- Token-based operations for account verification
- Comprehensive test suite using Pest
- PSR-4 autoloading and PSR-12 code style
Requirements
- PHP 8.0 or higher
Installation
You can install the package via Composer:
composer require pisethchhun/bakong-khqr-php
Usage
Generating Individual KHQR
use Piseth\BakongKhqr\Models\IndividualInfo; use Piseth\BakongKhqr\BakongKHQR; // Create individual information $individualInfo = new IndividualInfo( 'username@wing', // Account ID 'Your Name', // Merchant Name 'Phnom Penh' // Merchant City ); // Set optional properties $individualInfo->merchantID = '012345678'; $individualInfo->currency = 116; // KHR (840 for USD) $individualInfo->amount = 1000.0; // Generate the KHQR $result = BakongKHQR::generateIndividual($individualInfo); // Get the QR code string $qrString = $result->getData()['qr']; // Get the QR code image URL $qrImageUrl = $result->getData()['qrImageUrl'];
Generating Merchant KHQR
use Piseth\BakongKhqr\Models\MerchantInfo; use Piseth\BakongKhqr\BakongKHQR; // Create merchant information $merchantInfo = new MerchantInfo( 'merchant@wing', // Account ID 'Merchant Name', // Merchant Name 'Phnom Penh', // Merchant City '987654321', // Merchant ID 'Bank Name' // Acquiring Bank ); // Set optional properties $merchantInfo->currency = 840; // USD (116 for KHR) $merchantInfo->amount = 25.50; // Generate the KHQR $result = BakongKHQR::generateMerchant($merchantInfo);
Verifying a KHQR Code
use Piseth\BakongKhqr\BakongKHQR; // Verify the KHQR code $verificationResult = BakongKHQR::verify($qrString); // Check if valid if ($verificationResult->isValid()) { echo "KHQR is valid!"; }
Decoding a KHQR Code
use Piseth\BakongKhqr\BakongKHQR; // Decode the KHQR code $decodedResult = BakongKHQR::decode($qrString); // Access decoded data $decodedData = $decodedResult->getData(); echo "Merchant Name: " . $decodedData['merchantName']; echo "Amount: " . ($decodedData['amount'] ?? 'Not specified');
Using Additional Data Fields
// Set all possible additional fields $additionalFields = [ 'merchantID' => '123456789', 'acquiringBank' => 'Test Bank', 'currency' => 116, 'amount' => 15000.0, 'mobileNumber' => '85512345678', 'billNumber' => 'BILL-2023-001', 'storeLabel' => 'Main Store', 'terminalLabel' => 'TERM-001', 'purposeOfTransaction' => 'Payment for services', 'languagePreference' => 'KM', 'merchantNameAlternateLanguage' => 'អ្នកលក់', 'merchantCityAlternateLanguage' => 'ភ្នំពេញ', 'upiMerchantAccount' => 'UPI-123456' ]; // Apply additional fields to individual info foreach ($additionalFields as $field => $value) { if (property_exists($individualInfo, $field)) { $individualInfo->$field = $value; } }
Token-Based Operations
use Piseth\BakongKhqr\BakongKHQR; // Initialize with token $token = 'your-bakong-api-token'; $bakongKHQR = new BakongKHQR($token); // Check if a Bakong account exists $accountResult = $bakongKHQR->checkBakongAccount('test@wing'); // Check transaction status $transactionMD5 = md5('transaction-reference'); $transactionResult = $bakongKHQR->checkTransactionByMD5($transactionMD5);
Deep Link Generation
use Piseth\BakongKhqr\BakongKHQR; // Generate deep link from KHQR code $deepLinkResult = BakongKHQR::generateDeepLink($qrString); $deepLink = $deepLinkResult->getData()['deeplink'];
Advanced Usage
For more advanced usage examples, please check the examples directory.
Testing
The package uses Pest for testing. To run the tests:
composer test
To run specific test suites:
composer test:unit # Run unit tests only composer test:feature # Run feature tests only
Code Style
This package follows PSR-12 coding standards. You can check and fix code style issues with:
composer cs-check # Check code style composer cs-fix # Fix code style issues
Static Analysis
To run static analysis:
composer analyse
Changelog
Please see CHANGELOG.md for more information on what has changed recently.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Security
If you discover any security related issues, please email chhunpiseth.mail@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
pisethchhun/bakong-khqr-php 适用场景与选型建议
pisethchhun/bakong-khqr-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 481 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 06 月 05 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「payment」 「qr-code」 「cambodia」 「bakong」 「khqr」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 pisethchhun/bakong-khqr-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 pisethchhun/bakong-khqr-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 pisethchhun/bakong-khqr-php 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
QR Code generator
Based in http://phpqrcode.sourceforge.net/
A clean, modern, and easy-to-use QR code generator for Laravel
Laravel helper to generate the QRcode for ZATCA E-Invoicing system
PHP library for generating PAY by square payment QR codes
Modern QR Code Generator for PHP - Support for multiple output formats and QR code types
统计信息
- 总下载量: 481
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 22
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-06-05