Dùng SePay làm tài khoản thanh toán chính (chuyển khoản QR)
Sau khi làm xong: hội viên mua gói trên app → quét mã QR → chuyển khoản **thẳng vào tài khoản ngân hàng
của phòng tập**. SePay thấy tiền vào thì báo về DANAVA, đơn tự hoàn tất trong 1–2 giây: gói được kích
hoạt, hoá đơn và hợp đồng ghi nhận như bình thường. Tiền không đi qua trung gian nào.
> 📄 Bản PDF để in hoặc gửi cho nhân viên: [Tải hướng dẫn SePay (PDF)](/help/sepay/Huong-dan-tich-hop-SePay.pdf)
---
## Chuẩn bị
- Tài khoản **my.sepay.vn** đã **liên kết tài khoản ngân hàng** của phòng tập (mục **Ngân hàng** trong SePay).
- Đăng nhập Studio bằng tài khoản **Chủ phòng tập**.
- Một tài khoản ngân hàng **khác** để chuyển thử 10.000đ ở bước cuối (ngân hàng không cho tự chuyển vào chính mình).
**3 giá trị hay bị dán nhầm, mỗi giá trị chỉ dán vào đúng một chỗ:**
- **URL webhook** `https://api.danava.vn/api/v1/tools/sepay/webhook`: chép từ Studio, dán vào SePay → Webhook → tab **Cơ bản**.
- **API Key** (dạng `DNV-…`): tạo trong Studio, dán vào SePay → Webhook → tab **Bảo mật**.
- **API Token**: lấy ở SePay → **API Access**, dán vào Studio → ô **API Token (đối soát tự động)**.
---
## Bước 1 — Studio: khai tài khoản nhận tiền
Vào **Cài đặt → Cổng thanh toán** → tab **SePay (chuyển khoản QR)**.
1. Nhập **Ngân hàng**, **Số tài khoản**, **Chủ tài khoản** (tên trên tài khoản ngân hàng, viết không dấu). **Số tài khoản phải trùng đúng tài khoản đã liên kết trong SePay.**
2. Ở khối **Khai báo bên SePay**, bấm **Tạo khoá cho Studio này** để hệ thống sinh **API Key** (`DNV-…`).
3. Tick **Bật SePay** rồi bấm **Lưu cấu hình** (cuối trang).
> ⚠️ **Tạo khoá xong mới tick "Bật SePay".** Bật trước thì bấm Lưu sẽ báo "Cần đủ Ngân hàng, Số tài khoản và API Key webhook mới bật được SePay."


---
## Bước 2 — SePay: tạo webhook báo tiền về (BẮT BUỘC)
Thiếu webhook thì khách chuyển tiền xong **đơn vẫn nằm chờ**, vì hệ thống không biết tiền đã vào tài khoản.
1. Đăng nhập [my.sepay.vn](https://my.sepay.vn/webhooks) → menu trái **Tích hợp WebHooks** → bấm **+ Thêm webhook**.

2. **Tab "Cơ bản":** bật **Kích hoạt webhook**, đặt tên phòng tập; **URL nhận webhook** dán URL đã chép từ Studio; **Loại giao dịch** chọn **Tiền vào**; **Định dạng dữ liệu** chọn **JSON**; bật **Tự động gửi lại khi server trả lỗi**.

3. **Tab "Tài khoản":** chọn **Tuỳ chọn** rồi chọn **đúng tài khoản ngân hàng** đã khai ở Studio. Ô "Dùng để xác thực thanh toán" có thể để tắt.

4. **Tab "Bảo mật":** **Phương thức xác thực** chọn **API Key**, dán **API Key** (`DNV-…`) đã chép từ Studio. **Không chọn HMAC-SHA256** dù SePay có khuyến nghị: DANAVA hiện chỉ đọc được kiểu API Key.

5. Bấm **Lưu / Cập nhật**. Webhook hiện trong danh sách với chấm xanh và nhãn **API Key** là xong.
---
## Bước 3 — SePay: tạo API Token để tự đối soát (nên làm)
API Token cho DANAVA **tự hỏi lại SePay mỗi 2 phút**. Nếu webhook không về, đơn vẫn tự chốt thay vì nằm chờ.
1. Trong my.sepay.vn: **Cấu hình Công ty → API Access** → **+ Thêm API**, đặt tên → lưu.
2. Chép token vừa tạo.
3. Quay lại Studio → tab SePay → dán vào ô **API Token (đối soát tự động)** → **Lưu cấu hình**.

> Studio **thử token ngay lúc lưu**. Nếu báo SePay từ chối token, hoặc báo ô đang chứa một đường dẫn, là đã dán nhầm URL webhook hoặc khoá `DNV-…`. Ô này chỉ nhận token lấy từ **API Access**.
---
## Bước 4 — Studio: đặt SePay làm cổng chính
Tab **Tổng quan** của màn **Cổng thanh toán** → thẻ **SePay (chuyển khoản QR)** → bấm **Đặt làm cổng chính**. Khối "Tiền hội viên đang chảy đường nào" hiện **CỔNG CHÍNH · SePay · Đang hoạt động** là đúng.

> **Nên có cổng phụ:** đã khai thêm PayOS hoặc TingeE thì bấm **Đặt làm cổng phụ**. Cổng chính lỗi, hệ thống tự chuyển sang cổng phụ và khách không thấy lỗi.
---
## Bước 5 — Nghiệm thu: chuyển thử 10.000đ
Chưa chuyển thử thành công thì chưa coi là xong. Cuối tab SePay có khối **Chuyển thử 10.000đ — kiểm cả đường ống**:
1. Bấm **Tạo mã QR kiểm tra**.
2. Dùng app ngân hàng của **một tài khoản khác** quét và chuyển. **Giữ nguyên nội dung chuyển khoản.**
3. Chờ vài giây và xem kết quả trên màn hình.
Kết quả Studio báo:
- **"Cả đường ống thông"**: xong, đơn của hội viên sẽ chốt trong 1–2 giây.
- **"Tiền về được, nhưng webhook đang HỎNG"**: đơn chốt nhờ API Token (chậm tới 2 phút). Kiểm lại URL và API Key trong webhook SePay.
- **"Mã đã hết hạn"**, chưa thấy tiền: ngân hàng chưa đẩy giao dịch sang SePay, hoặc webhook và token đều chưa đúng. Xem phần lỗi bên dưới rồi tạo mã mới.

---
## Lỗi hay gặp
**Khách chuyển tiền rồi mà đơn vẫn chờ**
Kiểm webhook trong SePay: đúng URL, **Tiền vào**, đúng tài khoản, xác thực **API Key** trùng khoá trong Studio. Vừa bấm "Tạo khoá mới" thì phải dán lại khoá sang SePay.
**Khách sửa nội dung chuyển khoản hoặc chuyển thiếu tiền**
Đơn không tự chốt được, vì mã đơn trong nội dung là thứ duy nhất nối tiền với đơn. Nhân viên đối soát tay. Dặn khách **quét QR và giữ nguyên nội dung**.
**Tài khoản VietinBank cá nhân**
VietinBank chỉ đẩy sang SePay những giao dịch có nội dung bắt đầu bằng `SEVQR`. DANAVA đã tự thêm `SEVQR` vào mọi mã QR nên phòng tập không phải làm gì, miễn khách không xoá nội dung.
**Bấm Lưu báo lỗi token**
Dán nhầm URL hoặc khoá `DNV-…` vào ô API Token. Lấy lại token ở **API Access**.
**QR mẫu hiện sai tên hoặc số tài khoản**
Sửa ô Ngân hàng / Số tài khoản / Chủ tài khoản trong Studio rồi Lưu. Chủ tài khoản là tên chủ tài khoản ngân hàng, không phải email.
> 🔒 **Bảo mật:** API Key và API Token có giá trị như mật khẩu. **Không gửi qua Zalo/Messenger** cho bất kỳ ai, kể cả người tự xưng là nhân viên DANAVA hay SePay. Lỡ để lộ thì bấm **Tạo khoá mới** trong Studio rồi dán lại sang SePay, và xoá token cũ trong API Access.
Bài viết này có hữu ích không?
