# HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG WEBSITE QUẢN TRỊ OTP BOT
==========================================================================

Hệ thống quản trị web (Admin Panel) giúp bạn dễ dàng quản lý thành viên, cộng/trừ tiền, theo dõi đơn thuê số OTP, và cấu hình thông số hoạt động của Telegram Bot ngay trên giao diện web trực quan mà không cần gõ lệnh thủ công trong chat.

Để giải quyết yêu cầu **"khi sửa code trên hosting không ảnh hưởng đến database/cấu hình"**, hệ thống đã tách biệt hoàn toàn thông tin kết nối CSDL và lưu toàn bộ cấu hình hoạt động của bot vào database.

---

## 📁 Cấu Trúc Thư Mục Cài Đặt

Sau khi thêm hệ thống admin, dự án của bạn sẽ có cấu trúc như sau:
```text
BOT TELE LAY CODE/
├── admin/                  <-- Thư mục trang quản trị (NEW)
│   ├── api.php             <-- Xử lý truy vấn, giao dịch backend (NEW)
│   ├── index.php           <-- Giao diện đăng nhập & bảng điều khiển (NEW)
│   ├── style.css           <-- File CSS thiết kế giao diện (NEW)
│   ├── script.js           <-- File JS xử lý AJAX, biểu đồ (NEW)
│   └── db_install.php      <-- Tệp khởi tạo cấu hình DB ban đầu (NEW)
├── db_config.php           <-- THÔNG TIN KẾT NỐI DATABASE (Cô lập hoàn toàn) (NEW)
├── config.php              <-- Nạp db_config.php & cấu hình từ database (MODIFIED)
├── bot.php                 <-- Script chính xử lý webhook Telegram
├── FunOTP.php              <-- Tệp tích hợp API FunOTP (MODIFIED)
├── cron_check.php          <-- Quét đơn quá hạn và tự động hoàn tiền
└── web2m.php               <-- Webhook ngân hàng tự động cộng tiền
```

---

## 🚀 Hướng Dẫn Cài Đặt Ban Đầu (Setup)

### Bước 1: Cấu hình kết nối CSDL
1. Mở file [db_config.php](file:///e:/Code%20web%20va%20phan%20mem/BOT%20TELE%20LAY%20CODE/db_config.php) trên máy tính hoặc trên Hosting File Manager.
2. Cập nhật các thông số kết nối cơ sở dữ liệu MySQL của bạn:
   ```php
   $dbHost = "localhost";                     // Địa chỉ máy chủ CSDL (thường là localhost)
   $dbName = "ten_database_cua_ban";          // Tên database trên hosting
   $dbUser = "ten_user_database";             // Tên tài khoản database
   $dbPass = "mat_khau_database";             // Mật khẩu tài khoản database
   ```

### Bước 2: Tải code lên Hosting
- Hãy nén toàn bộ thư mục và file code rồi upload lên hosting (ngang hàng với file `bot.php` hiện tại). 
- Đảm bảo có thư mục `admin/` và file `db_config.php`.

### Bước 3: Khởi tạo dữ liệu cấu hình
1. Mở trình duyệt web và truy cập đường dẫn sau:
   `http://ten-mien-cua-ban.com/admin/db_install.php`
   *(Thay `ten-mien-cua-ban.com` bằng tên miền hoặc địa chỉ IP hosting thực tế của bạn)*
2. Hệ thống sẽ tự động tạo bảng `settings` và nạp các cấu hình mặc định (Token, API Key, VietQR, và mật khẩu đăng nhập).
3. Khi trình duyệt hiện thông báo **"THÀNH CÔNG!"**, hãy làm theo hướng dẫn bảo mật: **Xóa tệp `admin/db_install.php`** trên hosting ngay lập tức để người lạ không thể chạy lại.

---

## 🔑 Hướng Dẫn Sử Dụng Bảng Điều Khiển

### 1. Đăng nhập hệ thống
- Truy cập vào đường dẫn quản trị: `http://ten-mien-cua-ban.com/admin/`
- Mật khẩu đăng nhập mặc định là: **`Admin@123456`**

> [!IMPORTANT]
> **HÀNH ĐỘNG ĐẦU TIÊN CẦN LÀM:**
> Ngay sau khi đăng nhập thành công lần đầu, bạn hãy chuyển sang tab **"Cấu hình Bot"**, kéo xuống mục **"Thay đổi mật khẩu quản trị"** để đổi sang mật khẩu bảo mật của riêng bạn.

### 2. Các chức năng chính trên giao diện
- **Tổng quan (Dashboard):**
  - Xem nhanh số lượng User, Tổng số dư của người dùng, Tổng số đơn mua OTP, Tổng doanh thu nạp ví.
  - Theo dõi trực tiếp **Số dư tài khoản API FunOTP** còn lại để kịp thời nạp tiền nguồn.
  - Xem biểu đồ hình tròn phân tích tỷ lệ trạng thái đơn (Thành công, Đang chờ, Hoàn tiền) và danh sách 10 đơn hàng mới phát sinh.
- **Quản lý Thành viên (Users):**
  - Danh sách toàn bộ tài khoản Telegram đã từng `/start` bot.
  - Tìm kiếm thành viên nhanh chóng bằng cách nhập **Chat ID** hoặc **Username**.
  - Xem số dư thực tế của từng người.
  - Nút **"Cộng/Trừ tiền"**: Cho phép bạn nạp tiền thủ công hoặc phạt trừ tiền user. Bạn cần điền lý do rõ ràng. Hệ thống sẽ **tự động gửi tin nhắn Telegram thông báo biến động số dư** cho user đó và ghi nhật ký giao dịch chi tiết.
  - Nút **"Giao dịch"**: Xem lịch sử nạp tiền, mua OTP, hoàn tiền riêng của tài khoản đó.
- **Đơn mua OTP (Orders):**
  - Theo dõi toàn bộ lịch sử thuê số điện thoại lấy OTP của khách hàng.
  - Tìm kiếm đơn bằng SĐT khách, Mã dịch vụ, hoặc API ID.
  - Đối với đơn đang trạng thái chờ (PENDING):
    - Nút **"Check OTP"**: Gửi yêu cầu kiểm tra code tức thời lên FunOTP để xem đã có mã hay chưa, cập nhật trạng thái đơn và báo ngay cho User nếu có code.
    - Nút **"Hoàn tiền"**: Bạn có thể hủy đơn và hoàn trả 100% số tiền thuê sim cho khách hàng ngay lập tức khi mạng lỗi (hệ thống tự động cộng lại tiền vào ví user và báo tin nhắn Telegram).
- **Cấu hình Bot (Settings):**
  - Thay đổi Token Telegram Bot, API Key FunOTP, ID Admin, Mã Cron bảo vệ mà không cần sửa file PHP.
  - Cấu hình ngân hàng thụ hưởng VietQR (Mã ngân hàng, Số tài khoản, Tên chủ tài khoản) để hiển thị mã QR thanh toán động cho khách hàng.
  - Cấu hình **Tỷ lệ lợi nhuận Markup (%)**: Điều chỉnh trực tiếp tỷ suất lợi nhuận ăn chênh lệch giá (Ví dụ: đặt 10 tức là giá bán ra của số OTP = giá gốc nhà mạng + 10%).

---

## 🛠️ Hướng Dẫn Bảo Trì & Cập Nhật Code (Không mất dữ liệu)

Khi bạn muốn cập nhật tính năng mới cho Bot hoặc sửa các file logic trên hosting:

1. **QUY TẮC VÀNG:** **KHÔNG ĐÈ/GHI ĐÈ** tệp `db_config.php` trên hosting.
   - File `db_config.php` lưu trữ thông tin tài khoản MySQL kết nối database của bạn. Nếu không ghi đè file này, database sẽ hoàn toàn giữ nguyên trạng thái kết nối.
2. Các tệp tin cấu hình động của bot đã được chuyển vào bảng `settings` trên database MySQL, do đó bạn có thể tải lên cập nhật các file:
   - `bot.php`
   - `config.php`
   - `FunOTP.php`
   - `cron_check.php`
   - `web2m.php`
   Thoải mái mà không lo bị mất cấu hình Token Bot, API key hay số tài khoản ngân hàng.

---

## ⏰ Cấu Hình Cron Job & Auto Topup (Ngân hàng)

### 1. Cron Job quét đơn quá hạn (Tự động hoàn tiền)
Để hệ thống tự động hoàn tiền cho khách khi sim hết hạn không nhận được mã OTP sau 10-12 phút:
- Truy cập cPanel / Control Panel hosting của bạn -> Chọn mục **Cron Jobs** (Tác vụ định kỳ).
- Thêm một tác vụ chạy mỗi **1 phút một lần** (hoặc 2-5 phút tùy nhu cầu) với lệnh curl:
  ```bash
  curl -s "https://ten-mien-cua-ban.com/cron_check.php?key=MÃ_CRON_KEY_CỦA_BẠN"
  ```
  *(Thay `MÃ_CRON_KEY_CỦA_BẠN` bằng mã `cron_key` bạn đã cấu hình trong cài đặt)*

### 2. Auto nạp tiền VietQR (Ngân hàng)
- Khi khách hàng quét mã QR nạp tiền ví, nội dung chuyển khoản mặc định là `NAP [ChatID]`.
- Để tự động cộng tiền khi nhận tiền ngân hàng, bạn cấu hình webhook Bank (ví dụ qua dịch vụ Web2M hoặc các bên API tương đương) trỏ callback URL về:
  `https://ten-mien-cua-ban.com/web2m.php`
- Hệ thống sẽ tự kiểm tra, chống nạp trùng nhờ `bank_trans_id` trong bảng `transactions`, cộng ví cho user kèm khuyến mãi và gửi tin nhắn chúc mừng thành công tức thì qua Telegram.
