takashato/laravel-vietqr
Composer 安装命令:
composer require takashato/laravel-vietqr
包简介
Laravel package to generate VietQR codes for Vietnamese bank transfers (NAPAS/EMVCo standard)
README 文档
README
Generate VietQR codes for Vietnamese bank transfers. Follows NAPAS VietQR v1.5.2 specification (EMVCo standard).
Features
- Static & Dynamic QR - Reusable or one-time payment codes
- Account & Card Transfers - IBFT to bank accounts or cards
- 50+ Vietnamese Banks - Type-safe bank enum with BIN codes
- Multiple Formats - SVG, PNG, PDF, Base64 image generation
- Laravel Integration - Service provider, facade, Laravel 10/11/12
- NAPAS Compliant - Verified against official specification
Requirements
- PHP 8.2+
- Laravel 10, 11, or 12
Installation
composer require takashato/laravel-vietqr
The package auto-registers via service provider.
Quick Start
Simple Bank Account QR (Static)
use Takashato\VietQr\VietQrCode; use Takashato\VietQr\Enums\Bank; // Static QR - customer enters amount $qr = VietQrCode::bankAccount(Bank::VIETCOMBANK, '0011012345678'); // Get QR string (for your own rendering) $qrString = $qr->build(); // Generate SVG $svg = $qr->generateQr('svg', 300); // Generate Base64 PNG $base64 = $qr->generateQrBase64('png', 300);
Dynamic QR with Amount
use Takashato\VietQr\VietQrCode; use Takashato\VietQr\Enums\Bank; // Dynamic QR - fixed amount of 180,000 VND $qr = VietQrCode::bankAccount( bank: Bank::TECHCOMBANK, accountNumber: '19033123456789', amount: 180000, purpose: 'Thanh toan don hang #12345' ); echo $qr->build();
Card Transfer QR
use Takashato\VietQr\VietQrCode; use Takashato\VietQr\Enums\Bank; $qr = VietQrCode::bankCard( bank: Bank::MB_BANK, cardNumber: '9704229012345678', amount: 50000 );
Advanced Usage
Fluent Builder API
use Takashato\VietQr\VietQrCode; use Takashato\VietQr\Data\MerchantInfo; use Takashato\VietQr\Data\AdditionalInfo; use Takashato\VietQr\Enums\Service; $qr = (new VietQrCode()) ->dynamicMethod() ->withMerchant(function (MerchantInfo $merchant) { $merchant ->setService(Service::NAPAS_BY_ACCOUNT) ->setAcquirerId('970436') // Vietcombank BIN ->setMerchantId('0011012345678'); }) ->amount(180000) ->withAdditionalInfo(function (AdditionalInfo $info) { $info ->terminalLabel('POS001') ->purpose('Thanh toan don hang'); }) ->build();
Using Bank Enum
use Takashato\VietQr\Enums\Bank; // Get bank BIN code $bin = Bank::VIETCOMBANK->value; // '970436' // Get bank names $shortName = Bank::VIETCOMBANK->shortName(); // 'Vietcombank' $fullName = Bank::VIETCOMBANK->nameVi(); // 'Ngân hàng TMCP Ngoại thương Việt Nam' // Find bank by BIN $bank = Bank::fromBin('970436'); // Bank::VIETCOMBANK // Search banks $results = Bank::search('viet'); // Returns matching Bank enums
Using Facade
use Takashato\VietQr\Facades\VietQr; $qr = VietQr::create() ->staticMethod() ->withMerchant(...) ->build();
Available Banks
The Bank enum includes 50+ Vietnamese banks:
State-owned: Vietcombank, VietinBank, BIDV, Agribank
Joint-stock: Techcombank, MB Bank, ACB, VPBank, Sacombank, TPBank, HDBank, VIB, SHB, SCB, OCB, MSB, Eximbank, SeABank, LienVietPostBank, ABBank, and more...
Foreign branches: HSBC, Standard Chartered, Shinhan Bank, UOB, Woori Bank, CIMB, and more...
E-wallets: VNPT Money, CAKE, Ubank, Timo, TNEX
QR Code Types
| Type | Method | Amount | Use Case |
|---|---|---|---|
| Static | staticMethod() |
Customer enters | Store display, reusable |
| Dynamic | dynamicMethod() |
Fixed in QR | Invoice, one-time payment |
Services
| Service | Enum | Description |
|---|---|---|
| NAPAS_BY_ACCOUNT | Service::NAPAS_BY_ACCOUNT |
Transfer to bank account |
| NAPAS_BY_CARD | Service::NAPAS_BY_CARD |
Transfer to bank card |
| QR_CASH | Service::QR_CASH |
ATM cash withdrawal |
| QR_PUSH | Service::QR_PUSH |
Product payment |
Blade Usage
{{-- SVG directly in HTML --}} {!! VietQrCode::bankAccount(Bank::BIDV, '12345678901')->generateQr('svg', 250) !!} {{-- Base64 image --}} <img src="data:image/png;base64,{{ VietQrCode::bankAccount(Bank::BIDV, '12345678901')->generateQrBase64('png', 250) }}" alt="VietQR">
Documentation
Comprehensive documentation is available in the /docs directory:
- Project Overview & PDR - Feature list, requirements, roadmap
- System Architecture - Component design, data flow, EMVCo structure
- Codebase Summary - File structure, design patterns, code organization
- Code Standards - Development guidelines, naming conventions, quality checks
Testing
composer test
Code Quality
# Format code with Pint composer format # Run static analysis composer analyse
Security
For security vulnerabilities, please email takashato@gmail.com.
Credits
License
MIT License. See LICENSE.md.
takashato/laravel-vietqr 适用场景与选型建议
takashato/laravel-vietqr 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 47 次下载、GitHub Stars 达 4, 最近一次更新时间为 2022 年 12 月 21 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「takashato」 「laravel-vietqr」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 takashato/laravel-vietqr 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 takashato/laravel-vietqr 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 takashato/laravel-vietqr 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Alfabank REST API integration
Laravel package for Accurate Online API integration.
Shared RCX Laravel DataTables UI and configuration helpers.
Boot a Laravel project on any machine with one command: app:serve installs missing tools (PHP, Node, Composer, Herd, Docker), creates .env, sets up the database, runs migrations, builds assets, starts a queue worker and serves via Herd, Sail or artisan serve; app:down cleanly stops everything it sta
Branded, diagnostic error pages (500, 403, 404, 419, 503) for Filament — native Filament UI, dark mode and translations out of the box.
Turn any PDF into a Pingen-ready A4 letter (generated address cover page + A4 normalisation + safe margins) and send it through the Pingen print & mail API. Laravel-first.
统计信息
- 总下载量: 47
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 18
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-12-21