Βάση γνώσεων

Πώληση φιλοξενίας Zinn® από τα δικά σας συστήματα

Διαχειριστείτε τη φιλοξενία Zinn από το δικό σας πάνελ χρέωσης, τον ιστότοπο WordPress ή τα σενάριά σας: αποκτήστε ένα κλειδί API, πραγματοποιήστε την πρώτη σας κλήση και τις έξι κλήσεις από τις οποίες αποτελείται ολόκληρη η ενοποίηση.

Μεταπωλείτε τη φιλοξενία μας. Οι πελάτες σας είναι δικοί σας: οι τιμές σας, τα τιμολόγιά σας, ο πάροχος πληρωμών σας. Έτσι διαχειρίζεστε την πλατφόρμα μας από οτιδήποτε χρησιμοποιείτε ήδη — ένα πάνελ χρέωσης, τον δικό σας ιστότοπο WordPress ή ένα σενάριο (script).

Τι βλέπουν πραγματικά οι πελάτες σας

Πριν από τα τεχνικά: οι πελάτες σας δεν χρειάζεται ποτέ να μας δουν. Τρεις επιφάνειες, και εσείς επιλέγετε ποια θα χρησιμοποιήσετε.

| Επιφάνεια | Σε ποιον ανήκει | |---|---| | Το πάνελ φιλοξενίας, στο δικό σας hostname | Ορίστε ένα hostname πάνελ στην ενότητα Μεταπώληση → Η επωνυμία σας και οι πελάτες σας συνδέονται στη διεύθυνση panel.yourcompany.com με το λογότυπο και τα χρώματα σας. Ίδιο πάνελ, η δική σας διεύθυνση. | | Ο δικός σας ιστότοπος | Το πρόσθετο (plugin) WordPress τοποθετεί αναζήτηση domain και έναν σύνδεσμο σύνδεσης με ένα κλικ στον ιστότοπό σας, και ολοκληρώνει την παραγγελία μέσω του δικού σας ταμείου WooCommerce. | | Το πάνελ χρέωσης σας | Το WHMCS ή το HostBill παραμένει η μπροστινή πόλη (front door), η μονάδα (module) πραγματοποιεί την εκχώρηση πίσω από αυτό και το κουμπί της περιοχής πελατών τους συνδέει απευθείας στη φιλοξενία τους. |

⛔ Όποια κι αν επιλέξετε, εσείς είστε ο έμπορος καταγραφής (merchant of record) για τους πελάτες σας: οι τιμές σας, τα τιμολόγιά σας, ο αριθμός ΦΠΑ σας, ο πάροχος πληρωμών σας. Εμείς χρεώνουμε εσάς, μία φορά το μήνα, σε χονδρική τιμή.

Αφού ορίσετε ένα hostname πάνελ, τοποθετήστε το στο πεδίο Διεύθυνση πάνελ του προσθέτου WordPress και πουθενά αλλού — οι σύνδεσμοι σύνδεσης που δημιουργεί αυτό το API το ακολουθούν αυτόματα.

Οι τέσσερις τρόποι εισόδου

Υπάρχουν τέσσερις τρόποι εισόδου, και όλοι κάνουν το ίδιο πράγμα στο υπόβαθρο:

| | Για | |---|---| | Η μονάδα WHMCS | Ένα κατάστημα WHMCS | | Η μονάδα HostBill | Ένα κατάστημα HostBill | | Το πρόσθετο WordPress | Πώληση από τον δικό σας ιστότοπο WordPress ή WooCommerce | | Το API | Οτιδήποτε άλλο — Blesta, ένα εσωτερικό σύστημα, ένα σενάριο (script) cron |

1. Ακτήστε ένα κλειδί API

Στον πίνακα ελέγχου σας, μεταβείτε στα Κλειδιά API και δημιουργήστε ένα. Δώστε του μόνο ό,τι χρειάζεται:

| Δικαίωμα | Γιατί | |---|---| | org.read | Ανάγνωση των λογαριασμών των πελατών σας | | sites.create | Εκχώρηση ενός ιστότοπου | | sites.view | Ανάγνωση μιας υπηρεσίας | | sites.delete | Τερματισμός | | reseller.view | Λίστα των υπηρεσιών σας και ανάγνωση χρήσης | | reseller.provision | Αναστολή, αποδέσμευση και σύνδεση ενός πελάτη |

Μην δίνετε σε μια ενσωμάτωση το δικαίωμα reseller.manage. Αυτό το δικαίωμα επεξεργάζεται τον τιμοκατάλογό σας και τα διαπιστευτήρια της δικής σας πύλης πληρωμών. Το reseller.provision υπάρχει ακριβώς ώστε ένα κλειδί που επικολλάτε σε ένα πάνελ χρέωσης ή σε έναν ιστότοπο να μην το χρειάζεται.

Το κλειδί εμφανίζεται μία φορά. Αποθηκεύστε το εκεί που αποθηκεύate τα άλλα διαπιστευτήριά σας — ποτέ σε αρχείο που εξυπηρετεί ο διακομιστής ιστού (web server) σας.

2. Κάντε την πρώτη σας κλήση

curl https://api.zinndigital.com/v1/reseller/services \
  -H "Authorization: Bearer zdk_live_…"

Αυτό επιστρέφει κάθε υπηρεσία που έχετε εκχωρήσει, μία γραμμή ανά ιστότοπο, με τον πελάτη στον οποίο ανήκει, την κατάστασή της και το ποσό που χρεώνετε για αυτήν. Σε έναν νέο λογαριασμό είναι μια κενή λίστα — η οποία είναι η σωστή απάντηση, όχι σφάλμα.

3. Ολόκληρη η ενσωμάτωση, σε έξι κλήσεις

ΠΌΤΕ                 ΚΛΉΣΗ
μια παραγγελία πληρώνεται  POST   /v1/orgs                                   μία φορά ανά ΠΕΛΑΤΗ
                     POST   /v1/sites                                  μία φορά ανά ΥΠΗΡΕΣΊΑ
δεν έχουν πληρώσει   POST   /v1/reseller/services/{siteId}/suspend
πληρώνουν            POST   /v1/reseller/services/{siteId}/unsuspend
ακυρώνουν            DELETE /v1/sites/{siteId}
"σύνδεση στη φιλοξενία"  POST   /v1/reseller/services/{siteId}/sso

Η εκχώρηση είναι δύο κλήσεις, και τα κλειδιά έχουν σημασία:

# 1. ο λογαριασμός του πελάτη — βασισμένος στο ΔΙΚΟ ΣΑΣ αναγνωριστικό πελάτη
curl -X POST https://api.zinndigital.com/v1/orgs \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: account-4211" \
  -d '{"type":"customer","name":"Acme Ltd"}'

# 2. ο ιστότοπός τους — βασισμένος στο ΔΙΚΟ ΣΑΣ αναγνωριστικό υπηρεσίας
curl -X POST https://api.zinndigital.com/v1/sites \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: service-9915" \
  -d '{"org_id":"<from step 1>","product_line":"mainstream","primary_domain":"acme.com"}'

Δύο κανόνες που κοστίζουν χρήματα όταν τους κάνετε λάθος

  1. Βασίστε τον λογαριασμό στον ΠΕΛΑΤΗ σας και τον ιστότοπο στην ΥΠΗΡΕΣΊΑ σας. Η δεύτερη παραγγελία ενός πελάτη πρέπει να καταλήξει στον λογαριασμό που έχει ήδη. Βασίστε και τα δύο στην υπηρεσία και ένας πελάτης καταλήγει με τρεις ασύνδετους λογαριασμούς και τρία ξεχωριστά πάνελ.
  2. Στείλτε ένα Idempotency-Key σε κάθε POST, κατασκευασμένο από το δικό σας αναγνωριστικό για το αντικείμενο. Κάθε σύστημα χρέωσης επαναλαμβάνει τις προσπάθειες — μια επιστροφή κλήσης πύλης (gateway callback) φτάνει δύο φορές, ένας διαχειριστής ξανατρέχει μια αποτυχημένη εκχώρηση, ένας πελάτης κάνει διπλό κλικ. Χωρίς το κλειδί, η δεύτερη προσπάθεια δημιουργεί έναν δεύτερο ιστότοπο και χρεώνεστε γι' αυτόν.

Τρεις απαντήσεις που δεν πρέπει να απλοποιήσετε σε δύο

  • Το unsuspend μπορεί να απαντήσει 409. Αυτό σημαίνει ότι η ομάδα κατάχρησης (abuse team) μας κρατάει τον ιστότοπο, όχι εσείς. Εμφανίστε το μήνυμα· μην το ξαναδοκιμάσετε.
  • **Ο τερματισμός προγραμματίζει μια διαγραφή, δεν την εκτελεί.** Η ημερομηνία επιστρέφεται ως pending_deletion_at. Το να λέτε σε έναν πελάτη ότι τα δεδομένα του έχουν ήδη χαθεί ενώ δεν έχουν, είναι χειρότερο από το να μην του λέτε τίποτα.
  • Το disk_used_bytes μπορεί να είναι null, και το null δεν είναι μηδέν. Σημαίνει ότι δεν μπορέσαμε να μετρήσουμε, όχι ότι δεν χρησιμοποιήθηκε τίποτα. Παραλείψτε το — μην γράψετε 0 στα δικά σας αρχεία, διαφορετικά θα εμφανίσετε σε έναν πελάτη μια πράσινη γραμμή χρήσης για έναν ιστότοπο από τον οποίο δεν έχετε καμία μέτρηση.

4. Σύνδεση ενός πελάτη

Το POST /v1/reseller/services/{siteId}/sso επιστρέφει μια διεύθυνση URL μίας χρήσης που μεταφέρει τον πελάτη σας απευθείας στον δικό του λογαριασμό, ήδη συνδεδεμένο.

Δημιουργήστε το όταν κάνουν κλικ, ποτέ όταν αποδίδετε τη σελίδα. Ο σύνδεσμος είναι μίας χρήσης και λήγει μέσα σε λίγα λεπτά, οπότε ένας σύνδεσμος γραμμένος σε μια σελίδα καίγεται στην πρώτη προβολή σελίδας και μένει σε κάθε κρυφή μνήμη (cache) μεταξύ εσάς και του προγράμματος περιήγησης.

5. Εγκατάσταση μιας μονάδας (module) αντί αυτού

  • WHMCS — αντιγράψτε τη μονάδα στο modules/servers/zinn/, προσθέστε έναν διακομιστή του οποίου ο Κωδικός πρόσβασης είναι το κλειδί API σας και ορίστε τη γραμμή προϊόντων στο προϊόν. Πατήστε Δοκιμή σύνδεσης: κάνει μια πραγματική κλήση και σας λέει τι είπε η πλατφόρμα.
  • HostBill — αντιγράψτε στο includes/modules/Hosting/zinn/ και συνδέστε το με τον ίδιο τρόπο.
  • WordPress — το Zinn® Reseller Toolkit: αναζήτηση domain, ένας σύνδεσμος σύνδεσης στη φιλοξενία των πελατών σας και εκχώρηση WooCommerce όταν πληρώνεται μια παραγγελία. Ανοιχτού κώδικα στο <https://github.com/Zinn-Digital/zinn-reseller-toolkit>, ή κατεβάστε το από την ενότητα Πρόσθετα στον πίνακα ελέγχου σας.

6. Έναρξη λειτουργίας (Go live)

Ελέγξτε τα εξής προτού λάβετε μια πραγματική παραγγελία:

  • Η δοκιμή σύνδεσης περνάει στη μονάδα, ή η πρώτη σας εντολή curl επιστρέφει μια λίστα.
  • Ο τιμοκατάλογός σας έχει οριστεί (Μεταπώληση → Οι τιμές σας).
  • Η πύλη πληρωμών σας είναι συνδεδεμένη (Μεταπώληση → Πύλες πληρωμών) — οι πελάτες σας σας πληρώνουν, μέσω του δικού σας λογαριασμού.
  • Τα στοιχεία της εταιρείας σας έχουν καταχωρηθεί (Μεταπώληση → Η εταιρεία σας) ώστε τα τιμολόγια των πελατών σας να φέρουν τη νομική σας οντότητα και τον αριθμό ΦΠΑ, όχι τον δικό μας.
  • Έχετε τοποθετήσει μία πραγματική παραγγελία από την αρχή μέχρι το τέλος και έχετε παρακολουθήσει τον ιστότοπο να εμφανίζεται.

Πού βρίσκονται όλα τα υπόλοιπα

Η πλήρης αναφορά API — κάθε τελικό σημείο (endpoint), δημιουργημένο από τις προδιαγραφές μας, με το δικαίωμα που χρειάζεται το καθένα — βρίσκεται στη διεύθυνση <https://zinndigital.com/developers/api>.

Εξακολουθείτε να έχετε απορίες;

Η υποστήριξη περιλαμβάνεται σε κάθε πρόγραμμα και απαντάμε στη γλώσσα σας.

Επικοινωνία με την υποστήριξη Όλα τα άρθρα