WHMCS và module billing
Tự động bán hosting với module ZoPanel cho WHMCS, Blesta, HostBill và Paymenter: cài đặt, kết nối bằng API token, cấu hình sản phẩm và đăng nhập một chạm.
ZoPanel có sẵn module cho WHMCS, Blesta, HostBill và Paymenter. Khi khách thanh toán, hệ thống billing tạo tài khoản hosting và website đầu tiên. Sau đó việc tạm khoá, xoá, nâng hạ gói, đổi mật khẩu và đăng nhập một chạm vào panel đều diễn ra tự động. Mọi module đều dùng API cấp phát.
Chuẩn bị
Mọi tích hợp đều cần:
- license ZoPanel Pro, vì API token nằm trong gói Pro,
- chứng chỉ hợp lệ cho panel. Đặt tên miền panel trong Cài đặt → Chung → Tên miền & SSL cho panel,
- ít nhất một gói trong Gói hosting (hoặc gói đẩy lên qua API),
- một API token có quyền Chỉ cấp phát hosting.
Tạo API token
- Trong ZoPanel, mở Tài khoản của tôi → API token và bấm Tạo token.
- Đặt tên, ví dụ
whmcs. - Chọn Quyền là Chỉ cấp phát hosting (WHMCS, CMS).
- Trong Chỉ cho phép từ IP, nhập IP của server billing.
- Chọn thời hạn, xác nhận bằng mật khẩu (và mã 2FA), rồi sao chép token
zpat_…. Token chỉ hiển thị một lần.
Token cấp phát chỉ gọi được /api/v1: gói, tài khoản, đăng nhập một chạm và thống kê sử dụng. Nó không đụng được cài đặt server, file hay terminal. Nếu bạn có bật Cài đặt → Chung → Giới hạn truy cập panel, hãy thêm cả IP của server billing vào đó.
WHMCS
Module hỗ trợ WHMCS 8.x và 9.x trên PHP 8.1 trở lên.
| Sự kiện trong WHMCS | Kết quả trong ZoPanel |
|---|---|
| Đơn hàng được thanh toán | Tạo tài khoản và website đầu tiên |
| Quá hạn | Tạm khoá tài khoản, sau đó xoá |
| Nâng cấp hoặc hạ cấp | Đổi gói |
| Đặt lại mật khẩu | Đổi mật khẩu |
| Khu vực khách hàng | Nút Login to ZoPanel (đăng nhập một chạm) và mức sử dụng |
| Cron hằng ngày | Cập nhật dung lượng ổ đĩa và băng thông |
| Đồng bộ server | Nhập các tài khoản đang có |
Cài module
Chép thư mục modules/servers/zopanel vào bản cài WHMCS, tại modules/servers/zopanel. Dùng file phát hành zopanel-whmcs-module.zip, hoặc thư mục integrations/whmcs trong mã nguồn.
Thêm server
Trong WHMCS, vào System Settings → Servers → Add New Server:
| Trường | Giá trị |
|---|---|
| Module | ZoPanel |
| Hostname | Tên máy của panel, ví dụ panel.example.com |
| Port | 8888, đánh dấu Secure |
| Access Hash | Token zpat_… |
| Username | Để trống |
Bấm Test Connection. Trường Username nhận giá trị skip-tls-verify để tắt kiểm tra chứng chỉ, nhưng chỉ dùng khi thử nghiệm với panel chưa có chứng chỉ hợp lệ.
Cấu hình sản phẩm
Tạo sản phẩm trong System Settings → Products/Services. Ở tab Module Settings, chọn nhóm server và đặt:
- Package: gói ZoPanel. Danh sách được tải từ server.
- PHP version: phiên bản PHP cho website đầu tiên (8.4, 8.3, 8.2, 8.1, 7.4 hoặc mặc định của server).
- Create website: tạo tên miền của đơn hàng làm website đầu tiên của tài khoản.
Chọn Automatically setup the product as soon as the first payment is received.
Username
Username ZoPanel dài 3–16 ký tự, gồm chữ thường và số, bắt đầu bằng chữ. Tên bắt đầu bằng zp được dành riêng. Module tự điều chỉnh tên mà WHMCS đề xuất và lưu tên cuối cùng lại vào dịch vụ. Ví dụ, shop-demo.vn thành shopdemovn.
Đăng nhập một chạm
Nút Login to ZoPanel xin ZoPanel một link đăng nhập dùng một lần rồi chuyển khách tới đó. Link chỉ dùng được một lần, trong 60 giây. Đăng nhập một chạm chỉ dành cho tài khoản khách hàng. Đại lý đăng nhập bằng mật khẩu và lớp xác thực thứ hai của chính họ.
Gọi lại an toàn (idempotency)
Hệ thống billing sẽ gọi lại khi một request bị timeout. Để việc gọi lại an toàn, module gửi header Idempotency-Key khi tạo tài khoản, ghép từ ID dịch vụ WHMCS và username (whmcs-create-<service id>-<username>). Nếu WHMCS gọi lại trong vòng 24 giờ, ZoPanel trả lại kết quả lần đầu thay vì tạo tài khoản lần nữa hoặc báo lỗi "username already exists".
Xử lý lỗi
Mọi lời gọi API được ghi vào System Logs → Module Log, mật khẩu và token đã được che.
| Lỗi | Nguyên nhân |
|---|---|
this API token is not allowed from your address |
Thêm IP của WHMCS vào token |
this token can only use the provisioning API |
Bình thường với các đường dẫn khác: module chỉ dùng /api/v1 |
unknown package |
Sản phẩm trỏ tới gói đã bị đổi tên hoặc xoá |
API tokens require a Pro license |
Server ZoPanel cần license Pro |
Nếu tài khoản đã được tạo nhưng website thì không (ví dụ tên miền đang được host ở nơi khác), đơn hàng vẫn thành công. WHMCS ghi lý do vào nhật ký hoạt động của nó, và khách có thể tự thêm website trong panel.
Blesta
Module hỗ trợ Blesta 5.x (PHP 7.2+), nằm trong integrations/blesta.
- Chép
components/modules/zopanelvào Blesta, tạicomponents/modules/zopanel. - Cài module trong Settings → Modules → Available → ZoPanel.
- Thêm server với Panel URL (
https://panel.example.com:8888) và API token. Blesta kiểm tra kết nối khi lưu và lưu token ở dạng mã hoá. - Tạo package với module ZoPanel, rồi chọn ZoPanel package và phiên bản PHP.
Tab Control Panel hiển thị mức sử dụng và nút Login to ZoPanel. Email chào mừng dùng được các biến {service.zopanel_username}, {service.zopanel_password} và {service.zopanel_domain}.
HostBill
Module nằm trong integrations/hostbill (PHP 7.2+).
- Chép
includes/modules/Hosting/zopanelvào HostBill, tạiincludes/modules/Hosting/zopanel. - Vào Settings → Apps → Add new App → ZoPanel. Nhập Hostname, token vào ô Password, Port
8888, rồi bấm Test Connection. - Tạo sản phẩm với app đó và chọn Package cùng phiên bản PHP.
Để đăng nhập một chạm, đặt link tới action login của module (user/class.zopanel_controller.php) trong template khu vực khách hàng.
Paymenter
Extension hỗ trợ Paymenter 1.x (PHP 8.3+), nằm trong integrations/paymenter.
- Chép
extensions/Servers/ZoPanelvào Paymenter, tạiextensions/Servers/ZoPanel. Nếu Paymenter chưa hiện extension, chạycomposer dump-autoload. - Vào Admin → Servers → New và chọn ZoPanel. Nhập Panel URL và API token. Paymenter lưu token ở dạng mã hoá.
- Tạo sản phẩm với server đó, chọn ZoPanel package và phiên bản PHP. Khách nhập tên miền khi thanh toán.
Khách đăng nhập qua nút Open ZoPanel. Email chào mừng có username, mật khẩu và địa chỉ panel.
Đại lý dùng billing riêng
Đại lý có thể kết nối WHMCS, Blesta, HostBill hay Paymenter của riêng mình bằng token cấp phát tạo từ tài khoản đại lý. Khi đó hệ thống billing chỉ thấy gói của đại lý, chỉ bán cho khách của đại lý, và vẫn nằm trong giới hạn gói của đại lý.