<!-- pay2s-offline-docs-v1 -->
# VietQR — tạo mã QR chuyển khoản

Nguồn: mẫu Postman do Pay2S cung cấp và lệnh gọi VietQR trong backend Pay2S.
Ngày đối chiếu: 2026-09-30.

VietQR là chức năng riêng, không dùng API OneQR (Vietcombank) và không dùng chuỗi ký của Collection Link.

## Request

`POST https://api.pay2s.vn/vietqr/generate`

Header: `Content-Type: application/json`

```json
{
  "accountNo": "SO_TAI_KHOAN_NHAN",
  "accountName": "TEN_CHU_TAI_KHOAN",
  "bankCode": "ACB",
  "addInfo": "THANH TOAN DON HANG",
  "amount": "50000",
  "template": "modern",
  "maskAccount": true
}
```

- `accountNo`: số tài khoản nhận.
- `accountName`: tên chủ tài khoản.
- `bankCode`: mã ngân hàng. Các ví dụ trong mẫu Postman: ACB, VCB, VTB, BIDV, MBB, SEAB. Đây không phải danh sách đầy đủ.
- `addInfo`: nội dung chuyển khoản.
- `amount`: số tiền; mẫu Postman gửi chuỗi.
- `template`: mẫu Postman sử dụng `modern`.
- `maskAccount`: mẫu Postman sử dụng giá trị boolean `true`.

Mẫu được cung cấp không có trường `signature`. Không tự thêm quy trình ký HMAC, xác thực OneQR hoặc các trường ngoài tài liệu vào request này.

## Phản hồi và phần cần bổ sung

Chưa có mẫu response đầy đủ trong nguồn hiện có. Backend Pay2S đang kiểm tra JSON có trường `data`, nhưng điều đó chưa đủ để xác định kiểu dữ liệu hay cách lấy ảnh QR.

Trước khi viết phần hiển thị QR, hãy yêu cầu mẫu response thành công đã bỏ thông tin riêng. Không đoán rằng `data` là URL, Base64 hay một đối tượng có tên trường cụ thể. Các trường bắt buộc, giới hạn giá trị và mã lỗi cũng cần được xác nhận từ tài liệu API hoặc phản hồi mẫu.

Tạo QR không phải là xác nhận đã nhận tiền. Nếu cần tự cập nhật đơn hàng, tích hợp thêm webhook giao dịch Pay2S theo tài liệu riêng của webhook.
