Bạn có thể làm một trang thanh toán đơn giản để người dùng nhập số tiền và nội dung, sau đó hệ thống tự tạo ra QR chuyển khoản đầy đủ thông tin bằng cách dùng công cụ tạo QR miễn phí của SePay rồi tự dựng giao diện bên ngoài. Kết quả là ảnh có một “trang thanh toán mini” nhìn chuyên nghiệp mà hầu như không cần backend phức tạp.
Điểm hay ở đây là QR VietQR thực chất chỉ là một hình ảnh được tạo dựa trên số tài khoản, ngân hàng, số tiền và nội dung. Khi website cho phép người dùng nhập các trường thông tin này, hệ thống chỉ cần gắn những giá trị đó vào URL tạo QR mà SePay cung cấp. Mỗi lần người dùng thay đổi thông tin, đường link hình ảnh được cập nhật, và QR mới xuất hiện ngay lập tức. Không API khóa – không đăng nhập – không lưu trữ gì cả, chỉ cần thao tác trên URL.
Tạo QR với Sepay
SePay cung cấp công cụ để giúp bạn tạo ảnh QR Code động hoàn toàn miễn phí tại qr.sepay.vn. Cấu trúc link nhúng:
<img src='https://qr.sepay.vn/img?acc=SO_TAI_KHOAN&bank=NGAN_HANG&amount=SO_TIEN&des=NOI_DUNG'/>
Bạn chỉ cần tạo một form nhỏ gồm hai ô: “Số tiền” và “Nội dung”. Khi người dùng nhập vào, bạn dùng JavaScript để cập nhật đường dẫn hình ảnh QR. Đường dẫn này sẽ trỏ tới link tạo QR của SePay.
Trong HTML, bạn đặt một thẻ <img> để hiển thị QR. Mỗi lần người dùng thay đổi nội dung form, đoạn script sẽ thay SO_TIEN và NOI_DUNG bằng giá trị người dùng nhập, và <img> sẽ tự tải QR mới. Toàn bộ phần này chạy ngay trên trình duyệt, không cần server hay cơ sở dữ liệu.
Tất nhiên, phương pháp này chỉ hỗ trợ tạo QR thuận tiện. Website sẽ không biết ai đã thanh toán, không có thông báo từ ngân hàng và cũng không tự cập nhật trạng thái đơn. Nó phù hợp với nhu cầu cơ bản hoặc các dịch vụ nhỏ lẻ. Còn nếu muốn mọi thứ tự động hóa hoàn toàn — nhận tiền real-time, đối soát theo người dùng, cập nhật đơn ngay lập tức — lúc đó mới cần đến việc tích hợp API ngân hàng chính thống. Nhưng ở mức đơn giản, việc tận dụng công cụ tạo QR miễn phí của SePay thực sự rất thông minh.
Ngoài ra, bạn có thể đăng ký Sepay để cập nhật trạng thái thanh toán và trả về API phục vụ cho các mục đích dạng cá nhân.
Tạo QR với VietQR
Cú pháp đầy đủ như sau:
https://img.vietqr.io/image/<BANK_ID>-<ACCOUNT_NO>-<TEMPLATE>.png?amount=<AMOUNT>&addInfo=<DESCRIPTION>&accountName=<ACCOUNT_NAME>
Quy ước chi tiết
1. <BANK_ID>
<BANK_ID> có thể là:
- Mã BIN ngân hàng, được quy định bởi ngân hàng nhà nước
- Tên thường gọi phổ biến / tên viết tắt quy ước bởi NAPAS của ngân hàng
Ví dụ ngân hàng Vietinbank có mã BIN là 970415, và thường được gọi là Vietinbank , Napas quy ước tên viết tắt là ICB thì chúng ta có thể sử dụng BANK_ID là 970415 hoặc Vietinbank hoặc ICB đều được.
Tra cứu danh sách BIN(bin)/ tên thường gọi (short_name) / tên viết tắt (code) của các ngân hàng bằng API danh sách ngân hàng
2. <ACCOUNT_NO>
Số tài khoản người nhận tại ngân hàng thụ hưởng.
Số tài khoản người nhận quy ước bao gồm chữ hoặc số, tối đa 19 kí tự.
Mục số tài khoản còn hỗ trợ biệt danh tài khoản (Alias Name) hoặc Số tài khoản định danh (Virtual Account Number)
3. <TEMPLATE>
<TEMPLATE> quy định ID của template. Template là hình thức trình bày của file ảnh chứa mã VietQR.
Các template của VietQR kế thừa từ 3 theme gốc là:
| Theme | Size | ý nghĩa |
|---|---|---|
| compact2 | 540×640 | Bao gồm : Mã QR, các logo , thông tin chuyển khoản |
| compact | 540×540 | QR kèm logo VietQR, Napas, ngân hàng |
| qr_only | 480×480 | Trả về ảnh QR đơn giản, chỉ bao gồm QR |
| 600×776 | Bao gồm : Mã QR, các logo và đầy đủ thông tin chuyển khoản |
Để sử dụng Quick Link trong các dự án chính thức, bạn sẽ cần phải tạo một template mới cho riêng mình , kế thừa từ các theme gốc này
4. <AMOUNT>
<AMOUNT> quy định số tiền chuyển khoản
Số tiền chuyển khoản phải là một số dương và tối đa 13 chữ số.
5. <DESCRIPTION>
<DESCRIPTION> quy định nội dung chuyển khoản.
Nội dung chuyển khoản bao gồm tối đa 50 chữ cái, không bao gồm các kí tự đặc biệt.
6. <ACCOUNT_NAME>
<ACCOUNT_NAME> quy định tên người thụ hưởng hiển thị lên file ảnh VietQR. Trường này không nằm trong tiêu chuẩn tạo mã VietQR.