承接 chainplatform/pay 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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
*/

alt text

🪪 License

MIT © 2026 Chain Platform

💖 Support & Donate

If you find this package helpful, consider supporting the development:

Cryptocurrency Address
Bitcoin (BTC) 17grbSNSEcEybS1nHh4TGYVodBwT16cWtc
alt text
Ethereum (ETH) 0xa2fd119a619908d53928e5848b49bf1cc15689d4
alt text
Tron (TRX) TYL8p2PLCLDfq3CgGBp58WdUvvg9zsJ8pd
alt text
DOGE (DOGE) DDfKN2ys4frNaUkvPKcAdfL6SiVss5Bm19
USDT (SOLANA) cPUZsb7T9tMfiZFqXbWbRvrUktxgZQXQ2Ni1HiVXgFm

Your contribution helps maintain open-source development under the Chain Platform ecosystem 🚀

统计信息

  • 总下载量: 9
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04