Mô-đun Zinn Digital® biến các nút bấm của chính WHMCS thành những hành động thực tế trên nền tảng của chúng tôi. Một đơn hàng sẽ khởi tạo dịch vụ lưu trữ cho khách hàng của quý vị. Tính năng tự động xử lý hóa đơn quá hạn của WHMCS sẽ tạm ngưng dịch vụ đó. Việc đánh dấu hóa đơn đã thanh toán sẽ mở khóa lại dịch vụ. Thao tác hủy sẽ lên lịch xóa. Và khách hàng của quý vị sẽ nhận được một nút Log in to hosting panel trong khu vực khách hàng của họ để đăng nhập trực tiếp.
Mô-đun này miễn phí, được cấp phép theo GPL-2.0-or-later, và không có quyền truy cập đặc quyền nào vào nền tảng của chúng tôi: mọi lệnh gọi mà mô-đun thực hiện đều là một điểm cuối có tài liệu hướng dẫn mà quý vị có thể tự gọi bằng khóa API của chính mình.
Trước khi quý vị bắt đầu
Quý vị cần hai thứ, và điều thứ hai thường khiến mọi người bất ngờ.
- Một tài khoản đại lý Zinn® có chương trình đang hoạt động. Đăng ký tại
zinndigital.com và bật tính năng bán lại.
- Một gói đại lý còn hạn mức trang web. Các trang web mà khách hàng của quý vị đặt mua sẽ tính vào gói của quý vị,
vì vậy quý vị cần một gói vẫn còn dung lượng trống.
⚠️ Test Connection không thể cho quý vị biết liệu một đơn hàng có thành công hay không. Nó chỉ đọc chương trình của quý vị và không khởi tạo bất kỳ tài nguyên nào, vì vậy nó sẽ báo cáo một tài khoản active hoàn toàn bình thường nhưng chưa thể bán bất cứ thứ gì. Nếu đơn hàng đầu tiên của quý vị thất bại với lỗi "This organization has no hosting plan, so it cannot host a site yet", thì đó chính là nguyên nhân — hãy mua hoặc mở rộng gói đại lý của quý vị rồi đặt lại đơn hàng. Mô-đun hoàn toàn không có lỗi gì.
1. Tạo khóa API
Trong bảng điều khiển Zinn® của quý vị, hãy mở mục API keys và tạo một khóa với chính xác mười một quyền sau:
| Quyền | Lý do cần thiết |
|---|
org.create | Mở tài khoản Zinn® cho khách hàng của quý vị ở đơn hàng đầu tiên của họ. |
org.read | Đọc các tài khoản khách hàng của quý vị. |
sites.create | Khởi tạo trang web. |
sites.view | Đọc thông tin dịch vụ và mức độ sử dụng của nó. |
sites.delete | Chấm dứt dịch vụ. |
reseller.view | Liệt kê những gì quý vị đã bán, đồng thời đọc dung lượng đĩa và băng thông. |
reseller.provision | Tạm ngưng, mở khóa, đăng nhập khách hàng, thiết lập gói và thay đổi gói dịch vụ của họ. |
billing.view | Đọc chi phí nâng cấp trước khi thực hiện. |
sites.manage | Xóa bộ nhớ đệm và tạo bản sao lưu từ các nút bấm. |
sites.panel_access | Đổi mật khẩu quản trị viên WordPress. |
hosting.php.manage | Chuyển đổi phiên bản PHP khi nâng cấp hoặc hạ cấp. |
⛔ Không cấp quyền reseller.manage. Một khóa được dán vào bảng điều khiển thanh toán chỉ nên có quyền tạm giữ khách hàng do chưa thanh toán và đăng nhập cho họ. Khóa đó không được phép đọc và ghi đè thông tin xác thực cổng thanh toán của chính quý vị. Quyền reseller.provision tồn tại để quý vị không cần phải cấp quyền hạn lớn hơn này. ⛔ org.create không phải là tùy chọn. Nếu không có quyền này, mô-đun có thể đọc các tài khoản của quý vị nhưng không thể mở tài khoản mới, do đó Test Connection vẫn thành công nhưng đơn hàng đầu tiên sẽ trả về mã 403. ⛔⛔ Hãy cấp toàn bộ các quyền trong bảng, và lưu ý rằng Test Connection không thể báo cho quý vị biết nếu quý vị chưa cấp đủ. Nó chỉ đọc chương trình đại lý của quý vị và không khởi tạo tài nguyên nào, do đó nó vẫn báo xanh đối với một khóa bị thiếu bất kỳ quyền nào trong số này. Thay vào đó, những gì quý vị nhận được sẽ là lỗi 403 trên đúng thao tác mà quyền bị thiếu đó đảm nhiệm, nhiều tháng sau, từ một khách hàng.
2. Cài đặt mô-đun
- Tải xuống mô-đun và giải nén.
- Tải thư mục
zinn lên bản cài đặt WHMCS của quý vị sao cho tệp mô-đun nằm tại
modules/servers/zinn/zinn.php.
⛔ Thư mục bắt buộc phải có tên là zinn. WHMCS suy ra tên hàm của mô-đun khởi tạo dịch vụ từ tên thư mục của nó, vì vậy việc đổi tên thành zinn-whmcs hoặc zinndigital sẽ tạo ra một mô-đun mà WHMCS liệt kê, cho phép quý vị chọn, nhưng sau đó không bao giờ gọi đến — mà không có bất kỳ thông báo lỗi nào ở đâu. Tệp zip vốn đã giải nén ra đúng tên; quý vị chỉ cần không đổi tên nó.
3. Thêm máy chủ
Trong WHMCS: Configuration → System Settings → Servers → Add New Server.
- Name: bất kỳ tên nào, ví dụ:
Zinn Digital®
- Hostname:
api.zinndigital.com
- Type:
Zinn Digital®
- Password: khóa API của quý vị từ bước 1
⛔ Khóa được nhập vào trường Password, nơi WHMCS lưu trữ dưới dạng mã hóa. Đừng đặt khóa vào tùy chọn cấu hình sản phẩm — những tùy chọn đó là văn bản thuần túy trong cơ sở dữ liệu và hiển thị cho mọi quản trị viên, trong khi thông tin xác thực này có thể tạo và xóa dịch vụ lưu trữ của khách hàng của quý vị.
Nhấn Test Connection. Thao tác này thực hiện một lệnh gọi thực tế và báo cáo phản hồi từ nền tảng của chúng tôi, thay vì chỉ kiểm tra xem các trường đã được điền hay chưa.
4. Tạo sản phẩm
Configuration → System Settings → Products/Services, sau đó đặt Module Settings thành máy chủ quý vị vừa thêm. Các trường gồm có:
| Trường | Bắt buộc | Ý nghĩa |
|---|
| Product line | có | Dòng sản phẩm Zinn® mà quý vị đang bán — mainstream (managed WordPress), footprint_free, wordpress, linux, cloud, agency, app_hosting, ai_hosting, lms_hosting, managed_database, vector_hosting, zinn_compute, fleet_linux, fleet_enterprise, mail hoặc reseller. |
| Stack | có | Cấu hình sẽ được xây dựng: wordpress (mặc định), woocommerce, php, static, node, one_click, headless_cms, nextcloud hoặc owncloud. |
| Application | không | Chỉ dành cho các stack one_click và headless_cms — ứng dụng nào cần cài đặt. Việc chỉ định ứng dụng trên bất kỳ stack nào khác sẽ bị từ chối, vì stack đó đã tự quyết định những gì được cài đặt. |
| PHP version | không | ví dụ: 8.3. Để trống để dùng phiên bản mặc định của dòng sản phẩm. Một phiên bản mà dòng sản phẩm không cung cấp sẽ bị từ chối kèm theo danh sách các phiên bản được hỗ trợ. |
| Plan code | có | Gói Zinn® mà sản phẩm này bán. Lệnh GET /v1/reseller/prices sẽ liệt kê các gói của quý vị. Đơn hàng không có mã này sẽ bị từ chối — xem cảnh báo bên dưới. |
| Billing interval | không | monthly (mặc định) hoặc annual — chu kỳ phát hành dòng sản phẩm bán sỉ của quý vị cho khách hàng này. Số tiền quý vị tính cho khách hàng của chính mình được thiết lập trên sản phẩm WHMCS và không bị ảnh hưởng. |
⛔⛔ Plan code là bắt buộc, và đơn hàng không có mã này sẽ bị từ chối một cách có chủ đích. Cho đến ngày 2026-09-01, trường này chỉ mang tính hình thức và không có gì đọc nó, dẫn đến việc mô-đun đặt mua gói lưu trữ hoàn toàn không có gói nào — và mọi hậu quả của việc đó đều diễn ra trong âm thầm. Bảng sao kê bán sỉ của quý vị được tạo từ các đăng ký đang hoạt động của khách hàng, vì vậy không hề có dòng nào cho dịch vụ đó và quý vị không bị lập hóa đơn bất kỳ khoản nào trong suốt thời gian dịch vụ hoạt động; khách hàng của quý vị không được kế thừa bất kỳ hạn mức nào, do đó không có hạn mức dung lượng đĩa hoặc số lượng tệp nào được áp dụng cho trang web của họ; và Change Package không có gì để thay đổi, do đó giao dịch nâng cấp mà quý vị đã bán không thể thực hiện được. Trang web vẫn được khởi tạo và hoạt động hoàn hảo trong suốt thời gian đó.
Hiện tại mô-đun sẽ từ chối đơn hàng thay vì tiếp tục, bởi vì không có gói an toàn nào để mô-đun tự đoán: việc tự đoán sẽ khởi tạo dịch vụ lưu trữ trên một gói mà quý vị không hề chọn và có thể chưa định giá, và — khác với việc bị từ chối mà quý vị có thể thấy ngay lập tức — điều này sẽ chỉ lộ ra khi bảng sao kê được gửi tới, nếu có.
Hãy đặt Auto Setup thành bất kỳ tùy chọn nào quý vị muốn — mô-đun có tính chất lũy đẳng đối với ID dịch vụ WHMCS, vì vậy việc thử khởi tạo lại sẽ trả về cùng một trang web thay vì tính phí quý vị cho một trang web thứ hai.
Tác vụ của từng hành động WHMCS
| Hành động WHMCS | Điều gì diễn ra ở phía chúng tôi |
|---|
| Create | Tạo tài khoản Zinn® của khách hàng (hoặc sử dụng lại tài khoản họ đã có) và khởi tạo trang web của họ. |
| Suspend | Đưa trang web vào trạng thái tạm giữ do chưa thanh toán. Nội dung được giữ lại; không có gì bị xóa. |
| Unsuspend | Mở khóa tạm giữ của quý vị. |
| Terminate | Lên lịch xóa trang web, kèm theo một khoảng thời gian ân hạn. Ngày xóa sẽ hiển thị trong khu vực khách hàng. |
| Usage update | Làm mới thông tin dung lượng đĩa và băng thông trên mỗi dịch vụ, mỗi ngày một lần. |
| Log in to hosting panel | Mở một liên kết đăng nhập một lần, sử dụng một lần trực tiếp vào bảng điều khiển của khách hàng. |
| Change Package | Nâng cấp hoặc hạ cấp dịch vụ. Chuyển đổi gói và phiên bản PHP nếu sản phẩm mới có chỉ định. |
| Change Password | Thiết lập mật khẩu của quản trị viên WordPress. Ô này không xuất hiện trên các stack không có tài khoản như vậy. |
| Renew | Xác nhận dịch vụ vẫn tồn tại. Dịch vụ lưu trữ Zinn® mang tính liên tục, vì vậy không có thời hạn từ xa nào cần gia hạn. |
| Sync Usage / Purge Cache / Take Backup | Các nút trên trang dịch vụ của quản trị viên. Khách hàng của quý vị sẽ nhận được Purge Cache và Take Backup trong khu vực khách hàng của họ. |
| Service tab | Trạng thái, gói, dung lượng đĩa, băng thông, lịch xóa (nếu có), và ai là người đã đặt lệnh tạm ngưng. |
| Import | ListAccounts đọc từng trang, vì vậy quá trình nhập dữ liệu không thể âm thầm dừng lại ở trang đầu tiên. |
Nâng cấp: ai tính phí ai
Khách hàng của quý vị không bao giờ bị Zinn® lập hóa đơn, dù là khi đặt hàng hay khi nâng cấp. Quý vị tính phí họ thông qua WHMCS; chúng tôi tính phí quý vị, trên bảng sao kê bán sỉ của quý vị. Vì vậy, một thao tác Change Package sẽ chuyển đổi các quyền lợi của khách hàng và dòng mục trên bảng sao kê tiếp theo của quý vị mà không chạm vào thẻ thanh toán — WHMCS đã thu tiền của khách hàng và tự tính toán phần chi phí theo tỷ lệ tương ứng.
Dịch vụ thứ hai của một khách hàng. Trên cùng một gói, đó là một trang web khác thuộc hạn mức trang web của chính gói đó, và không có quyền lợi nào phát sinh thêm. Trên một gói khác, yêu cầu sẽ bị từ chối: việc thay thế gói đang hoạt động sẽ khiến một trong hai dịch vụ không được lập hóa đơn. Quý vị hãy bán cả hai trên cùng một gói, hoặc thiết lập khách hàng thành một hồ sơ khách hàng riêng biệt trong WHMCS.
Change Password chỉ tồn tại cho WordPress. Dịch vụ lưu trữ Zinn® không có "mật khẩu dịch vụ" duy nhất — khách hàng của quý vị truy cập vào bảng điều khiển của họ bằng nút đăng nhập — và một trang web php hoặc static không có tài khoản ứng dụng nào để thay đổi. WHMCS ẩn hoàn toàn ô này thay vì hiển thị một ô không thể hoạt động.
Ba phản hồi mà quý vị không được gộp làm hai
- Unsuspend có thể trả về một lời từ chối. Điều đó có nghĩa là trang web đã bị đội ngũ chống lạm dụng của chúng tôi tạm ngưng,
chứ không phải bởi quý vị, và không bảng điều khiển thanh toán nào được phép mở khóa. Thông báo nêu rõ điều đó; hãy báo lại cho quản trị viên của quý vị thay vì thử lại.
- Terminate lên lịch xóa chứ không thực hiện xóa ngay. Ngày xóa được trả về dưới dạng
pending_deletion_at và khu vực khách hàng sẽ hiển thị thông tin này. Việc thông báo với khách hàng rằng dữ liệu của họ đã bị xóa trong khi thực tế chưa bị xóa còn tệ hơn là không nói gì.
- Dung lượng đĩa và băng thông có thể ở trạng thái không xác định, và không xác định không có nghĩa là bằng không. Khi chúng tôi không thể lấy
số liệu, mô-đun sẽ giữ nguyên con số đó thay vì ghi 0 — nếu không, WHMCS sẽ hiển thị cho khách hàng của quý vị một thanh mức sử dụng trống rỗng đầy yên tâm cho một trang web mà chúng tôi chưa hề có số liệu.
Khắc phục sự cố
Test Connection thành công nhưng đơn hàng đầu tiên thất bại với lỗi phân quyền. Khóa API bị thiếu quyền org.create. Mô-đun phải mở tài khoản của khách hàng trước khi có thể tạo trang web cho họ.
Một đơn hàng thất bại với thông báo tổ chức không có gói lưu trữ nào. Gói đại lý của quý vị không còn hạn mức trang web, hoặc quý vị chưa sở hữu gói nào. Xem mục Trước khi quý vị bắt đầu ở trên.
Một đơn hàng thất bại có nhắc đến stack. Trường Stack trên sản phẩm đang bị trống hoặc chỉ định một cấu hình mà chúng tôi không hỗ trợ xây dựng. Hãy đặt trường này thành wordpress trừ khi quý vị đang bán một cấu hình khác.
Các yêu cầu hủy dịch vụ đang thất bại. Hãy đảm bảo quý vị đang sử dụng mô-đun phiên bản 1.0.0 trở lên. Các bản dựng trước đó không gửi xác nhận xóa và mọi lệnh chấm dứt đều bị từ chối, khiến dịch vụ tiếp tục chạy và bị tính phí.
Một lời từ chối có nêu tên trường. Các lỗi xác thực của chúng tôi sẽ nêu tên trường và lý do trong ngoặc đơn sau thông báo, ví dụ: (php_version: 7.2 is not offered on this product line). Đó là phần trọng tâm để xử lý — câu ở phía trước nó được cố ý viết một cách chung chung.
Xác minh tệp tải xuống của quý vị
Mọi tệp lưu trữ đều được phân phối qua TLS từ chính tên miền máy chủ của chúng tôi và không bao giờ chuyển hướng đến một máy chủ của bên thứ ba. Mã băm SHA-256 của tệp được in bên cạnh liên kết tải xuống trên trang tải xuống. Hãy so sánh mã này sau khi tải xuống:
- macOS hoặc Linux:
shasum -a 256 zinn-whmcs-1.0.0.zip
- Windows:
certutil -hashfile zinn-whmcs-1.0.0.zip SHA256
Quý vị không sử dụng WHMCS?
Chúng tôi có mô-đun HostBill và một ứng dụng khách PHP dạng tệp đơn lẻ cho mọi hệ thống khác, cả hai đều miễn phí và đều nằm trên cùng trang tải xuống. Mọi điểm cuối mà các mô-đun sử dụng đều có trong tài liệu tham khảo API.