Chỉ là dữ liệu minh họa: 970436 và 1234567890 là giá trị ví dụ. Hãy thay bằng ngân hàng và tài khoản nhận tiền đã kiểm tra trước khi sử dụng thật.
Thêm số tiền, nội dung và tùy chỉnh hiển thị
Có thể bỏ hẳn các thuộc tính tùy chọn. Nếu khai báo thì giá trị phải hợp lệ. Ví dụ: bỏ data-amount để người chuyển tự nhập tiền; data-amount="0" sẽ báo lỗi.
Embed JavaScript đọc các thuộc tính data-* trên từng phần tử .vietnam-bank_com.
Thuộc tính
Bắt buộc?
Quy tắc / Ý nghĩa
data-bank-bin
Bắt buộc
BIN ngân hàng gồm 6 chữ số và phải tồn tại trong danh bạ.
data-account
Bắt buộc
Số tài khoản: 1–19 chữ cái Latin hoặc chữ số; giữ nguyên số 0 đầu.
data-amount
Tùy chọn
Số tiền VND nguyên, lớn hơn 0, tối đa 13 chữ số; bỏ trống nếu không ấn định tiền.
data-purpose
Tùy chọn
Nội dung chuyển khoản tối đa 25 ký tự ASCII sau khi bỏ dấu tiếng Việt.
data-holder
Tùy chọn
Tên hiển thị, tối đa 80 ký tự. Không xác minh chủ tài khoản và không nằm trong payload VietQR.
data-lang
Tùy chọn
Ngôn ngữ giao diện: en (mặc định) hoặc vi.
data-size
Tùy chọn
Chiều rộng QR 160–600 pixel; mặc định 256.
data-download
Tùy chọn
Hiện nút tải QR: true (mặc định) hoặc false.
03 / DÀNH CHO LẬP TRÌNH VIÊN
Cập nhật QR mà không cần tải lại trang
Phù hợp giỏ hàng hoặc trang đơn hàng: thay thuộc tính data-* hoặc dùng JavaScript API. Mỗi widget cập nhật độc lập.
JavaScript · Cập nhật widget
// Inside an async checkout handler, after embed.v1.js has loaded:
async function updateCheckoutQR() {
const widget = document.querySelector('#payment-qr');
widget.setAttribute('data-amount', '250000'); // auto-refresh
// Or update several fields through the JavaScript API:
return window.VietnamBankQR.update(widget, {
amount: '250000', purpose: 'ORDER 456'
});
}
Mã QR cũ bị xóa ngay trong lúc kiểm tra dữ liệu mới. Gọi VietnamBankQR.update() với amount/purpose hoặc dùng setAttribute().
JavaScript API công khai
mount(element), update(element, data), generate(data), download(element), destroy(element) và refresh(root).
generate() tự tạo payload tại client nhưng không xác minh BIN; mount() và update() kiểm tra BIN qua API trước khi hiển thị QR.
Tạo QR tại trình duyệt
Widget chỉ gọi API của vietnam-bank.com để tra cứu BIN 6 chữ số. Số tài khoản, số tiền, nội dung và tên hiển thị không được gửi lên API của chúng tôi.
Không phụ thuộc CSS của website nhúng: Widget dùng Shadow DOM, không yêu cầu cài Bootstrap hay CSS riêng. Nếu website bật Content Security Policy, cần cho phép vietnam-bank.com trong script-src và connect-src.
04 / TRƯỚC KHI ĐĂNG WEBSITE
Câu hỏi thường gặp
Có thể hiển thị nhiều mã QR?
Có. Chỉ nhúng embed.v1.js một lần và thêm nhiều div.vietnam-bank_com tùy nhu cầu. Mỗi widget có dữ liệu và thông báo lỗi riêng.
Thiếu tham số bắt buộc thì sao?
Widget hiển thị đúng trường thiếu hoặc không hợp lệ và không tạo QR có thể quét cho tới khi dữ liệu được sửa.
QR có xác minh người nhận hoặc giao dịch thành công không?
Không. Tên người nhận chỉ là nhãn hiển thị. Người chuyển phải kiểm tra người nhận trong ứng dụng ngân hàng; QR không chứng minh giao dịch đã hoàn tất.
Có dùng được với WordPress hoặc nền tảng dựng website?
Có nếu nền tảng cho chèn thẻ script và HTML tùy chỉnh. Một số dịch vụ chặn JavaScript bên ngoài hoặc yêu cầu cấu hình danh sách cho phép.
Cách tạo mã VietQR chuyển khoản
Chọn ngân hàng thụ hưởng và nhập số tài khoản.
Có thể nhập thêm số tiền, tên hiển thị và nội dung chuyển khoản.
Tạo VietQR trực tiếp trên trình duyệt rồi tải ảnh PNG hoặc sao chép chuỗi QR.
Trước khi chuyển khoản hãy đối chiếu ngân hàng và người nhận trên ứng dụng ngân hàng. Mã QR không xác nhận giao dịch thành công.