chainplatform/pay
最新稳定版本:1.0.4
Composer 安装命令:
composer require chainplatform/pay
包简介
Thư viện PHP xử lý VietQR
README 文档
README
Được chuyển PHP từ thư viện js của tác giả https://github.com/xuannghia/vietnam-qr-pay
Thư viện PHP hỗ trợ encode & decode mã QR thanh toán theo chuẩn EMVCo dành cho:
- VietQR (NAPAS 247 – QR Ngân hàng)
- QR Đa năng MoMo
- QR Đa năng ZaloPay
- VNPayQR
- Tạo payload EMV • Validate CRC16 • Sinh QR Image
Được viết dựa trên chuẩn VietQR và ví dụ từ các ví điện tử Việt Nam.
⚙️ Cài đặt
composer require chainplatform/pay
🧩 Encode – Tạo mã QR
1) VietQR TĨNH (không có số tiền)
use ChainPlatform\Pay\QRPay; use ChainPlatform\Pay\BanksObject; $qrPay = QRPay::initVietQR([ 'bankBin' => BanksObject::acb()->bin, 'bankNumber' => '257678859', ]); $content = $qrPay->build(); echo $content; // 00020101021138530010A0000007270123000697041601092576788590208QRIBFTTA53037045802VN6304AE9F
2) VietQR ĐỘNG (có số tiền + nội dung)
$qrPay = QRPay::initVietQR([ 'bankBin' => BanksObject::mbbank()->bin, 'bankNumber' => '88787627133', 'amount' => '10000', 'purpose' => 'Chuyen tien', ]); $content = $qrPay->build(); echo $content; // 00020101021238530010A0000007270123000697041601092576788590208QRIBFTTA53037045405100005802VN62150811Chuyen tien630453E6
3) QR Đa năng MoMo
MoMo sử dụng số tài khoản nội bộ tại BVBank để nhận tiền từ VietQR.
use ChainPlatform\Pay\QRPay; use ChainPlatform\Pay\BanksObject; $accountNumber = '99MM24011M34875080'; $momoQR = QRPay::initVietQR([ 'bankBin' => BanksObject::banviet()->bin, 'bankNumber' => $accountNumber, ]); // Mã tham chiếu riêng của MoMo $momoQR->additionalData->reference = 'MOMOW2W' . substr($accountNumber, 10); // Trường ID 80 = 3 số cuối số điện thoại $momoQR->setUnreservedField('80', '046'); echo $momoQR->build();
Ví dụ output:
00020101021138620010A00000072701320006970454011899MM24011M348750800208QRIBFTTA53037045802VN62190515MOMOW2W3487508080030466304EBC8
4) QR Đa năng ZaloPay
ZaloPay cũng dùng tài khoản BVBank để định tuyến.
$accountNumber = '99ZP24009M07248267'; $zaloQR = QRPay::initVietQR([ 'bankBin' => BanksObject::banviet()->bin, 'bankNumber' => $accountNumber, ]); echo $zaloQR->build();
Ví dụ output:
00020101021138620010A00000072701320006970454011899ZP24009M072482670208QRIBFTTA53037045802VN6304073C
5) Tạo QR VNPay
$qrPay = QRPay::initVNPayQR([ 'merchantId' => '0102154778', 'merchantName' => 'TUGIACOMPANY', 'store' => 'TU GIA COMPUTER', 'terminal' => 'TUGIACO1', ]); echo $qrPay->build();
Output mẫu:
00020101021126280010A0000007750110010531314453037045408210900005802VN5910CELLPHONES62600312CPSHN ONLINE0517021908061613127850705ONLHN0810CellphoneS63047685
🧭 Decode – Phân tích nội dung QR
Decode VietQR
$qrContent = '00020101021238530010A0000007270123000697041601092576788590208QRIBFTTA5303704540410005802VN62150811Chuyen tien6304BBB8'; $qrPay = new QRPay($qrContent); $qrPay->isValid; // true $qrPay->provider->name; // VIETQR $qrPay->consumer->bankBin; // 970416 $qrPay->consumer->bankNumber; // 257678859 $qrPay->amount; // 1000 $qrPay->additionalData->purpose // Chuyen tien
Decode VNPAY
$qrContent = '00020101021126280010A0000007750110010531314453037045408210900005802VN5910CELLPHONES62600312CPSHN ONLINE0517021908061613127850705ONLHN0810CellphoneS63047685'; $qrPay = new QRPay($qrContent); $qrPay->isValid; // true $qrPay->provider->name; // VNPAY $qrPay->merchant->merchantId; // 0105313144 $qrPay->amount; // 21090000 $qrPay->additionalData->store; // CPSHN ONLINE $qrPay->additionalData->terminal; // ONLHN $qrPay->additionalData->purpose; // CellphoneS $qrPay->additionalData->reference; // 02190806161312785
🧱 QRPay Class
use ChainPlatform\Pay\QRPay;
| Thuộc tính | Ý nghĩa |
|---|---|
isValid |
Kiểm tra CRC & chuẩn EMV |
initMethod |
11 = tĩnh, 12 = động |
provider |
VietQR / VNPAY |
merchant |
Thông tin merchant |
consumer |
Thông tin người trả |
amount |
Số tiền |
currency |
704 = VND |
nation |
VN |
additionalData |
Thông tin bổ sung |
crc |
Mã checksum |
build() |
Tạo lại QR |
Provider
| Field | Mô tả |
|---|---|
guid |
GUID EMV |
name |
VietQR / VNPay |
Merchant
| Field | Mô tả |
|---|---|
id |
Merchant ID |
name |
Merchant Name |
Consumer
| Field | Mô tả |
|---|---|
bankBin |
Mã BIN |
bankNumber |
STK |
Additional Data
| Field | Mô tả |
|---|---|
billNumber |
Số hóa đơn |
mobileNumber |
SĐT |
store |
Tên cửa hàng |
loyaltyNumber |
Mã khách hàng thân thiết |
reference |
Mã tham chiếu |
customerLabel |
Label |
terminal |
POS |
purpose |
Nội dung |
🔧 Build QR mới từ QR cũ
$qrPay = new QRPay($originalContent); // Sửa thông tin $qrPay->amount = '10000'; $qrPay->additionalData->purpose = 'Cam on nhe - thu vien tao ma thanh toan QRPay tren PHP'; // Build lại $newQR = $qrPay->build(); // Output /* 00020101021238550010A000000727012500069704220111887876271330208QRIBFTTA53037045405100005802VN62580854Cam on nhe - thu vien tao ma thanh toan QRPay tren PHP6304EC87 */
🪪 License
MIT © 2026 Chain Platform
💖 Support & Donate
If you find this package helpful, consider supporting the development:
Your contribution helps maintain open-source development under the Chain Platform ecosystem 🚀
统计信息
- 总下载量: 9
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-04



