Το άρθρωμα του Zinn Digital® μετατρέπει τα ίδια τα κουμπιά του WHMCS σε πραγματικές ενέργειες στην πλατφόρμα μας. Μια παραγγελία παρέχει τη φιλοξενία του πελάτη σας. Ο αυτοματισμός ληξιπρόθεσμων τιμολογίων του WHMCS την αναστέλλει. Η επισήμανση του τιμολογίου ως πληρωμένου την επαναφέρει. Η ακύρωση προγραμματίζει τη διαγραφή. Και ο πελάτης σας λαμβάνει ένα κουμπί Σύνδεση στον πίνακα ελέγχου φιλοξενίας στην περιοχή πελατών του, το οποίο τον συνδέει απευθείας.
Είναι δωρεάν, διαθέτει άδεια GPL-2.0-or-later και δεν έχει προνομιακή διαδρομή προς την πλατφόρμα μας: κάθε κλήση που πραγματοποιεί είναι ένα τεκμηριωμένο τελικό σημείο που θα μπορούσατε να καλέσετε και εσείς οι ίδιοι με το δικό σας κλειδί API.
Πριν ξεκινήσετε
Χρειάζεστε δύο πράγματα, και το δεύτερο συχνά παραβλέπεται.
- Έναν λογαριασμό μεταπωλητή Zinn® με ενεργό πρόγραμμα. Εγγραφείτε στο
zinndigital.com και ενεργοποιήστε τη μεταπώληση.
- Ένα πρόγραμμα μεταπωλητή με διαθέσιμο όριο ιστοτόπων. Οι ιστότοποι που παραγγέλνουν οι πελάτες σας προσμετρώνται στο δικό σας
πρόγραμμα, επομένως χρειάζεστε ένα με διαθέσιμο χώρο.
⚠️ Η Δοκιμή Σύνδεσης δεν μπορεί να σας ενημερώσει εάν μια παραγγελία θα επιτύχει. Διαβάζει το πρόγραμμά σας και δεν παρέχει τίποτα, επομένως αναφέρει έναν υγιή active λογαριασμό που δεν μπορεί ακόμη να πουλήσει τίποτα. Εάν η πρώτη σας παραγγελία αποτύχει με το μήνυμα «This organization has no hosting plan, so it cannot host a site yet», αυτό ακριβώς έχει συμβεί — αγοράστε ή επεκτείνετε το πρόγραμμα μεταπωλητή σας και υποβάλετε ξανά την παραγγελία. Δεν υπάρχει κάποιο πρόβλημα με το άρθρωμα.
1. Δημιουργήστε το κλειδί API
Στον πίνακα ελέγχου σας στο Zinn®, ανοίξτε τα Κλειδιά API και δημιουργήστε ένα με ακριβώς αυτά τα έντεκα δικαιώματα:
| Δικαίωμα | Γιατί είναι απαραίτητο |
|---|
org.create | Άνοιγμα του λογαριασμού Zinn® του πελάτη σας κατά την πρώτη του παραγγελία. |
org.read | Ανάγνωση των λογαριασμών των πελατών σας. |
sites.create | Παροχή (provision) του ιστοτόπου. |
sites.view | Ανάγνωση μιας υπηρεσίας και της χρήσης της. |
sites.delete | Τερματισμός. |
reseller.view | Προβολή λίστας με όσα έχετε πουλήσει και ανάγνωση δίσκου και εύρους ζώνης. |
reseller.provision | Αναστολή, επαναφορά, σύνδεση πελάτη, ορισμός του προγράμματός τους και αλλαγή του πακέτου τους. |
billing.view | Ανάγνωση του κόστους μιας αναβάθμισης πριν από την εκτέλεσή της. |
sites.manage | Εκκαθάριση προσωρινής μνήμης και λήψη αντιγράφου ασφαλείας από τα κουμπιά. |
sites.panel_access | Αλλαγή του κωδικού πρόσβασης διαχειριστή WordPress. |
hosting.php.manage | Αλλαγή έκδοσης PHP σε αναβάθμιση ή υποβάθμιση. |
⛔ Μην παραχωρείτε το reseller.manage. Ένα κλειδί που επικολλάται σε έναν πίνακα χρέωσης θα πρέπει να μπορεί να θέτει έναν πελάτη σε αναμονή λόγω μη πληρωμής και να τον συνδέει. Δεν θα πρέπει να μπορεί να διαβάζει και να τροποποιεί τα διαπιστευτήρια της δικής σας πύλης πληρωμών. Το reseller.provision υπάρχει ώστε να μην χρειάζεται να παραχωρήσετε το μεγαλύτερο δικαίωμα. ⛔ Το org.create δεν είναι προαιρετικό. Χωρίς αυτό, το άρθρωμα μπορεί να διαβάσει τους λογαριασμούς σας αλλά δεν μπορεί να ανοίξει νέο, επομένως η Δοκιμή Σύνδεσης επιτυγχάνει και η πρώτη παραγγελία επιστρέφει 403. ⛔⛔ Παραχωρήστε ολόκληρο τον πίνακα και λάβετε υπόψη ότι η Δοκιμή Σύνδεσης δεν μπορεί να σας ενημερώσει εάν δεν το έχετε κάνει. Διαβάζει το πρόγραμμα μεταπωλητή σας και δεν παρέχει τίποτα, επομένως εμφανίζεται πράσινη για ένα κλειδί από το οποίο λείπει οποιοδήποτε από αυτά. Αυτό που λαμβάνετε αντ' αυτού είναι ένα σφάλμα 403 στη συγκεκριμένη λειτουργία που καλύπτει το δικαίωμα που λείπει, μήνες αργότερα, από έναν πελάτη.
2. Εγκαταστήστε το άρθρωμα
- Κατεβάστε το άρθρωμα και αποσυμπιέστε το.
- Μεταφορτώστε τον κατάλογο
zinn στην εγκατάσταση του WHMCS σας, ώστε το αρχείο του αρθρώματος να τοποθετηθεί στη διαδρομή
modules/servers/zinn/zinn.php.
⛔ Ο κατάλογος πρέπει να ονομάζεται zinn. Το WHMCS αντλεί τα ονόματα συναρτήσεων ενός αρθρώματος παροχής από το όνομα του καταλόγου του, επομένως η μετονομασία του σε zinn-whmcs ή zinndigital παράγει ένα άρθρωμα που το WHMCS εμφανίζει στη λίστα, σας επιτρέπει να επιλέξετε, και στη συνέχεια δεν καλεί ποτέ — χωρίς κανένα σφάλμα πουθενά. Το αρχείο zip αποσυμπιέζεται ήδη με το σωστό όνομα· απλώς μην το μετονομάσετε.
3. Προσθέστε τον διακομιστή
Στο WHMCS: Configuration → System Settings → Servers → Add New Server.
- Name: οτιδήποτε, π.χ.
Zinn Digital®
- Hostname:
api.zinndigital.com
- Type:
Zinn Digital®
- Password: το κλειδί API σας από το βήμα 1
⛔ Το κλειδί εισάγεται στο πεδίο Password, το οποίο το WHMCS αποθηκεύει κρυπτογραφημένο. Μην το τοποθετείτε σε μια επιλογή διαμόρφωσης προϊόντος — αυτές είναι απλό κείμενο στη βάση δεδομένων και ορατές σε κάθε διαχειριστή, και αυτό το διαπιστευτήριο μπορεί να δημιουργήσει και να καταστρέψει τη φιλοξενία των πελατών σας.
Πατήστε Test Connection. Πραγματοποιεί μια πραγματική κλήση και αναφέρει την απάντηση της πλατφόρμας μας, αντί να ελέγχει απλώς εάν τα πεδία είναι συμπληρωμένα.
4. Δημιουργήστε το προϊόν
Configuration → System Settings → Products/Services, και στη συνέχεια ορίστε το Module Settings στον διακομιστή που μόλις προσθέσατε. Τα πεδία είναι:
| Πεδίο | Απαιτείται | Τι είναι |
|---|
| Product line | ναι | Η σειρά Zinn® που πουλάτε — 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 ή reseller. |
| Stack | ναι | Τι δημιουργείται: wordpress (προεπιλογή), woocommerce, php, static, node, one_click, headless_cms, nextcloud ή owncloud. |
| Application | όχι | Μόνο για τα stack one_click και headless_cms — ποια εφαρμογή θα εγκατασταθεί. Ο ορισμός εφαρμογής σε οποιοδήποτε άλλο stack απορρίπτεται, επειδή αυτό το stack αποφασίζει ήδη τι θα εγκατασταθεί. |
| PHP version | όχι | π.χ. 8.3. Αφήστε το κενό για την προεπιλογή της σειράς. Μια έκδοση που δεν προσφέρει η σειρά απορρίπτεται με τη λίστα αυτών που προσφέρει. |
| Plan code | ναι | Το πρόγραμμα Zinn® που πουλάει αυτό το προϊόν. Το GET /v1/reseller/prices εμφανίζει τα δικά σας. Μια παραγγελία χωρίς αυτό απορρίπτεται — δείτε την παρακάτω προειδοποίηση. |
| Billing interval | όχι | monthly (προεπιλογή) ή annual — το διάστημα στο οποίο εκδίδεται η δική σας γραμμή χονδρικής για αυτόν τον πελάτη. Το ποσό που χρεώνετε τον δικό σας πελάτη ορίζεται στο προϊόν του WHMCS και δεν επηρεάζεται. |
⛔⛔ Ο κωδικός προγράμματος (Plan code) είναι υποχρεωτικός, και μια παραγγελία χωρίς αυτόν απορρίπτεται σκόπιμα. Μέχρι τις 2026-09-01 το πεδίο ήταν διακοσμητικό και τίποτα δεν το διάβαζε, επομένως το άρθρωμα παρήγγειλε φιλοξενία που δεν έφερε κανένα απολύτως πρόγραμμα — και κάθε συνέπεια αυτού ήταν αθόρυβη. Η κατάσταση χονδρικής σας δημιουργείται από τις ενεργές συνδρομές των πελατών σας, επομένως δεν υπήρχε γραμμή για την υπηρεσία και δεν τιμολογηθήκατε τίποτα για όσο διάστημα εκτελούνταν· ο πελάτης σας δεν κληρονομούσε όρια, επομένως δεν εφαρμόστηκε όριο δίσκου ή αρχείων στον ιστότοπό του· και το Change Package δεν είχε τίποτα να αλλάξει, επομένως μια αναβάθμιση που πουλήσατε δεν μπορούσε να εκτελεστεί. Ο ιστότοπος παρεχόταν και λειτουργούσε άψογα καθ' όλη τη διάρκεια.
Το άρθρωμα απορρίπτει πλέον την παραγγελία, επειδή δεν υπάρχει ασφαλές πρόγραμμα για να υποθέσει: μια υπόθεση θα παρείχε φιλοξενία σε ένα πρόγραμμα που δεν επιλέξατε και ενδεχομένως δεν έχετε τιμολογήσει, και — σε αντίθεση με μια απόρριψη, την οποία αντιλαμβάνεστε αμέσως — θα γινόταν αντιληπτό μόνο όταν έφτανε μια κατάσταση λογαριασμού, αν συνέβαινε ποτέ.
Ορίστε το Auto Setup σε όποιο προτιμάτε — το άρθρωμα είναι ισοδύναμο (idempotent) ως προς το αναγνωριστικό υπηρεσίας του WHMCS, επομένως μια επαναληπτική προσπάθεια παροχής επιστρέφει τον ίδιο ιστότοπο αντί να σας χρεώσει για έναν δεύτερο.
Τι κάνει κάθε ενέργεια του WHMCS
| Ενέργεια WHMCS | Τι συμβαίνει από τη δική μας πλευρά |
|---|
| Create | Δημιουργεί τον λογαριασμό Zinn® του πελάτη (ή επαναχρησιμοποιεί αυτόν που έχει ήδη) και παρέχει τον ιστότοπό του. |
| Suspend | Θέτει τον ιστότοπο σε αναμονή λόγω μη πληρωμής. Το περιεχόμενο διατηρείται· τίποτα δεν διαγράφεται. |
| Unsuspend | Απελευθερώνει τη δική σας αναστολή. |
| Terminate | Προγραμματίζει τη διαγραφή του ιστοτόπου, με μια περίοδο χάριτος. Η ημερομηνία εμφανίζεται στην περιοχή πελατών. |
| Usage update | Ανανεώνει τον δίσκο και το εύρος ζώνης σε κάθε υπηρεσία, μία φορά την ημέρα. |
| Log in to hosting panel | Ανοίγει έναν σύνδεσμο σύνδεσης μίας χρήσης απευθείας στον πίνακα ελέγχου του πελάτη σας. |
| Change Package | Αναβαθμίζει ή υποβαθμίζει την υπηρεσία. Μεταφέρει το πακέτο, καθώς και την έκδοση PHP εάν το νέο προϊόν ορίζει κάποια. |
| Change Password | Ορίζει τον κωδικό πρόσβασης του διαχειριστή WordPress. Το πεδίο δεν εμφανίζεται σε stack που δεν διαθέτουν τέτοιο λογαριασμό. |
| Renew | Επιβεβαιώνει ότι η υπηρεσία εξακολουθεί να υπάρχει. Η φιλοξενία Zinn® είναι συνεχής, επομένως δεν υπάρχει απομακρυσμένη διάρκεια προς επέκταση. |
| Sync Usage / Purge Cache / Take Backup | Κουμπιά στη σελίδα υπηρεσίας διαχειριστή. Ο πελάτης σας λαμβάνει τα Purge Cache και Take Backup στην περιοχή πελατών του. |
| Καρτέλα υπηρεσίας | Κατάσταση, πρόγραμμα, δίσκος, εύρος ζώνης, τυχόν προγραμματισμένη διαγραφή, και ποιος επέβαλε μια αναστολή. |
| Import | Το ListAccounts διαβάζει κάθε σελίδα, επομένως μια εισαγωγή δεν μπορεί να σταματήσει αθόρυβα στην πρώτη. |
Αναβαθμίσεις: ποιος χρεώνει ποιον
Ο πελάτης σας δεν τιμολογείται ποτέ από το Zinn®, ούτε σε παραγγελία ούτε σε αναβάθμιση. Εσείς τον χρεώνετε μέσω του WHMCS· εμείς χρεώνουμε εσάς, στην κατάσταση χονδρικής σας. Επομένως, το Change Package μεταφέρει τα δικαιώματα του πελάτη σας και τη γραμμή στην επόμενη κατάστασή σας, και δεν αγγίζει καμία κάρτα — το WHMCS έχει ήδη λάβει τα χρήματα του πελάτη σας και έχει υπολογίσει τη δική του αναλογική χρέωση.
Δεύτερη υπηρεσία ενός πελάτη. Στο ίδιο πρόγραμμα είναι άλλος ένας ιστότοπος υπό το διαθέσιμο όριο ιστοτόπων αυτού του προγράμματος, και δεν χορηγείται τίποτα περαιτέρω. Σε διαφορετικό πρόγραμμα απορρίπτεται: η αντικατάσταση του ενεργού προγράμματος θα άφηνε μία από τις δύο υπηρεσίες χωρίς τιμολόγηση. Είτε πουλήστε και τις δύο στο ίδιο πρόγραμμα, είτε ρυθμίστε τον πελάτη ως ξεχωριστή εγγραφή πελάτη στο WHMCS.
Το Change Password υπάρχει μόνο για το WordPress. Η φιλοξενία Zinn® δεν διαθέτει έναν ενιαίο «κωδικό πρόσβασης υπηρεσίας» — ο πελάτης σας φτάνει στον πίνακα ελέγχου του με το κουμπί σύνδεσης — και ένας ιστότοπος php ή static δεν έχει λογαριασμό εφαρμογής για να αλλάξει. Το WHMCS αποκρύπτει εντελώς το πεδίο αντί να εμφανίζει ένα που δεν μπορεί να λειτουργήσει.
Τρεις απαντήσεις που δεν πρέπει να εξισώσετε σε δύο
- Το Unsuspend μπορεί να απαντήσει με απόρριψη. Αυτό σημαίνει ότι ο ιστότοπος τέθηκε σε αναστολή από την ομάδα
κατάχρησης (abuse) μας, όχι από εσάς, και κανένας πίνακας χρέωσης δεν επιτρέπεται να τον επαναφέρει. Το μήνυμα το αναφέρει· δείξτε το στον διαχειριστή σας αντί να προσπαθήσετε ξανά.
- Το Terminate προγραμματίζει μια διαγραφή, δεν την εκτελεί άμεσα. Η ημερομηνία επιστρέφεται ως
pending_deletion_at και η περιοχή πελατών την εμφανίζει. Το να πείτε σε έναν πελάτη ότι τα δεδομένα του έχουν ήδη χαθεί ενώ δεν ισχύει κάτι τέτοιο, είναι χειρότερο από το να μην του πείτε τίποτα.
- Ο δίσκος και το εύρος ζώνης μπορεί να είναι άγνωστα, και το άγνωστο δεν είναι μηδέν. Όταν δεν μπορέσαμε να λάβουμε
μέτρηση, το άρθρωμα αφήνει την τιμή ως έχει αντί να γράψει 0 — διαφορετικά το WHMCS θα εμφάνιζε στον πελάτη σας μια καθησυχαστική άδεια μπάρα χρήσης για έναν ιστότοπο για τον οποίο δεν έχουμε καμία μέτρηση.
Αντιμετώπιση προβλημάτων
Η Δοκιμή Σύνδεσης επιτυγχάνει και η πρώτη παραγγελία αποτυγχάνει με σφάλμα δικαιωμάτων. Από το κλειδί API λείπει το org.create. Το άρθρωμα πρέπει να ανοίξει τον λογαριασμό του πελάτη προτού μπορέσει να δημιουργήσει τον ιστότοπό του.
Μια παραγγελία αποτυγχάνει αναφέροντας ότι ο οργανισμός δεν έχει πρόγραμμα φιλοξενίας. Το πρόγραμμα μεταπωλητή σας δεν έχει υπόλοιπο στο όριο ιστοτόπων ή δεν διαθέτετε ακόμη κάποιο. Δείτε την ενότητα Πριν ξεκινήσετε παραπάνω.
Μια παραγγελία αποτυγχάνει αναφέροντας ένα stack. Το πεδίο Stack στο προϊόν είναι κενό ή ορίζει κάτι που δεν δημιουργούμε. Ορίστε το σε wordpress εκτός εάν πουλάτε κάτι άλλο.
Οι ακυρώσεις αποτυγχάνουν. Βεβαιωθείτε ότι χρησιμοποιείτε την έκδοση αρθρώματος 1.0.0 ή μεταγενέστερη. Παλαιότερες εκδόσεις δεν έστελναν επιβεβαίωση διαγραφής και κάθε τερματισμός απορριπτόταν, γεγονός που άφηνε την υπηρεσία να εκτελείται και να τιμολογείται.
Μια απόρριψη που αναφέρει ένα πεδίο. Τα σφάλματα επικύρωσής μας αναφέρουν το πεδίο και την αιτία σε αγκύλες μετά το μήνυμα, π.χ. (php_version: 7.2 is not offered on this product line). Αυτό είναι το ουσιαστικό μέρος για δράση — η πρόταση πριν από αυτό είναι σκόπιμα γενική.
Επαληθεύστε τη λήψη σας
Κάθε αρχείο παρέχεται μέσω TLS από το δικό μας όνομα κεντρικού υπολογιστή και δεν ανακατευθύνεται ποτέ σε διακομιστή τρίτου μέρους. Το άθροισμα ελέγχου SHA-256 αναγράφεται δίπλα στον σύνδεσμο λήψης στη σελίδα λήψεων. Συγκρίνετέ το μετά τη λήψη:
- macOS ή Linux:
shasum -a 256 zinn-whmcs-1.0.0.zip
- Windows:
certutil -hashfile zinn-whmcs-1.0.0.zip SHA256
Δεν χρησιμοποιείτε WHMCS;
Υπάρχει ένα άρθρωμα για το HostBill και ένας πελάτης PHP ενός αρχείου για οτιδήποτε άλλο, και τα δύο δωρεάν και τα δύο στην ίδια σελίδα λήψεων. Κάθε τελικό σημείο που χρησιμοποιούν τα αρθρώματα βρίσκεται στην τεκμηρίωση του API.