Μετάβαση στο περιεχόμενο
Μενού τεκμηρίωσης: Σύνδεση καταστήματος

Σύνδεση καταστήματος

Οδηγοί

Ένα κατάστημα δεν κρατά ποτέ το μυστικό κλειδί του λογαριασμού σας. Ο ιδιοκτήτης του το εγκρίνει σε μια σελίδα του Tallio, και ο διακομιστής του καταστήματος ανταλλάσσει έναν κωδικό μίας χρήσης με τα περιορισμένα κλειδιά του, δεσμευμένα σε έναν έμπορο.

Σε αυτή τη σελίδα

Σημαντικό

Φυλάξτε τα κλειδιά του καταστήματος κρυπτογραφημένα στον διακομιστή του: ποτέ σε URL, σε σελίδα ή στον browser. Ένα περιορισμένο κλειδί (rk_live_…, rk_test_…) ενεργεί μόνο για τον δικό του έμπορο, και μόνο μέσω των λειτουργιών που αναφέρονται παρακάτω.

Η εξουσιοδότηση #

Η «Σύνδεση με το Tallio» είναι εξουσιοδότηση OAuth 2.0 με κωδικό εξουσιοδότησης (authorization code) και PKCE (S256). Ο κωδικός ταξιδεύει μέσω του browser· ο verifier δεν φεύγει ποτέ από τον διακομιστή του καταστήματος, οπότε ένας κωδικός μόνος του είναι άχρηστος.

  • Αίτηση. Το κατάστημα κρατά ένα τυχαίο state και ένα code_verifier (43 έως 128 χαρακτήρες) και στέλνει τον browser του διαχειριστή του στη φιλοξενούμενη σελίδα του Tallio με το challenge. Το redirect_uri πρέπει να είναι ακριβώς το callback του καταστήματος κάτω από το URL του, τίποτε άλλο.
  • Συναίνεση. Ο διαχειριστής συνδέεται στο Tallio ή εγγράφεται, και ένας ιδιοκτήτης της ομάδας εγκρίνει το κατάστημα, επιβεβαιώνοντας με δεύτερο παράγοντα ή με νέα σύνδεση. Στην πρώτη σύνδεση πληκτρολογεί επίσης τα φορολογικά στοιχεία της επιχείρησης, και το Tallio δημιουργεί τον έμπορό της.
  • Επιστροφή. Ο browser επιστρέφει στο redirect_uri με το code και το ίδιο state, ή με error=access_denied όταν ο διαχειριστής ακυρώσει. Ο κωδικός ισχύει 10 λεπτά.
  • Ανταλλαγή. Ο διακομιστής του καταστήματος καλεί το POST /store_grants/token με τον κωδικό, τον verifier και το ίδιο redirect_uri, δηλώνοντας τον εαυτό του στο Tallio-Store-Url. Η απάντηση, που δίνεται μία φορά, περιέχει τον έμπορο, την ομάδα, τα δύο κλειδιά και τα μυστικά των endpoints webhook του καταστήματος.
Στείλτε τον browser του διαχειριστή στο
GET /dashboard/connect-store
  ?platform=woocommerce
  &store_url=https://shop.example
  &redirect_uri=https%3A%2F%2Fshop.example%2Fwp-admin%2Fadmin.php%3Fpage%3Dtallio-connect
  &state=…
  &code_challenge=…
  &code_challenge_method=S256
  &locale=el
Ανταλλάξτε τον κωδικό, από τον διακομιστή του καταστήματος
curl "$TALLIO_API_URL/v1/store_grants/token" \
  -H "Tallio-Store-Url: https://shop.example" \
  -H "Content-Type: application/json" \
  -d '{"grant_type":"authorization_code","code":"…","code_verifier":"…","redirect_uri":"https://shop.example/wp-admin/admin.php?page=tallio-connect","store_environment":"production"}'

Κάθε ανταλλαγή που απορρίπτεται παίρνει το ίδιο 400 invalid_grant, όποια κι αν είναι η αιτία. Μην επαναλαμβάνετε ποτέ μια επιτυχημένη ανταλλαγή: αν ανταλλάξετε ξανά έναν χρησιμοποιημένο κωδικό με τον verifier του, ανακαλούνται τα κλειδιά που έδωσε, αφού μια επανάληψη σημαίνει ότι ο κωδικός διέρρευσε. Αν χαθεί η απάντηση, συνδέστε ξανά το κατάστημα.

Η γλώσσα της φιλοξενούμενης σελίδας #

Περάστε τη γλώσσα του διαχειριστή στο locale (el, fr_FR, en_US): η σελίδα εισόδου και η σελίδα συναίνεσης την ακολουθούν όταν το Tallio την υποστηρίζει, μόνο για εκείνη τη συνεδρία. Μια άγνωστη τιμή ή μια τιμή που λείπει δεν απορρίπτει ποτέ το αίτημα.

Πραγματικά και δοκιμαστικά κλειδιά #

Η ανταλλαγή δίνει πάντα δοκιμαστικό κλειδί, και πραγματικό κλειδί μόνο για κατάστημα σε παραγωγή. Στείλτε το store_environment (production, staging, development, local): οτιδήποτε εκτός από production παίρνει μόνο δοκιμαστικό κλειδί, όπως και ένας host ανάπτυξης (localhost, .test, μια ιδιωτική διεύθυνση, ένα δημόσιο tunnel). Ένα δοκιμαστικό κλειδί εκδίδει μέσω της δοκιμαστικής σύνδεσης του εμπόρου ή, αν δεν υπάρχει, μέσω του sandbox του Tallio.

Το URL του καταστήματος #

Τα κλειδιά ενός καταστήματος είναι δεσμευμένα στο URL του. Στείλτε το στο Tallio-Store-Url σε κάθε κλήση: άλλη τιμή, ή καμία, δίνει 409 store_url_mismatch. Η δέσμευση αυτή εμποδίζει ένα αντίγραφο staging του καταστήματος να εκδίδει πραγματικά παραστατικά με αντιγραμμένες ρυθμίσεις· το URL δεν είναι μυστικό. Όταν το κατάστημα πράγματι μεταφερθεί, ο διαχειριστής του επιβεβαιώνει τη μεταφορά και το κατάστημα στέλνει το νέο του URL στο PUT /store_binding· όσο το κατάστημα έχει πραγματικό κλειδί, μόνο αυτό το κλειδί μπορεί να το μεταφέρει.

Τι μπορεί να καλέσει ένα κλειδί καταστήματος #

Ένα κλειδί καταστήματος φτάνει μόνο στις λειτουργίες του παρακάτω πίνακα, και μόνο για τον δικό του έμπορο: τα ids άλλου εμπόρου απαντούν 404, σαν να μην υπήρχαν. Κάθε άλλη λειτουργία δίνει 403 restricted_key: ένα κλειδί καταστήματος δεν μπορεί να δημιουργήσει εμπόρους, να δει τη λίστα συμβάντων, να διαχειριστεί endpoints webhook ή κλειδιά, ούτε να φτάσει στον διακομιστή MCP.

Όταν το κατάστημα αποσυνδέεται ή το πρόσθετο αφαιρείται, το κατάστημα παραιτείται από κάθε κλειδί με το DELETE /api_keys/current. Ένας ιδιοκτήτης της ομάδας μπορεί επίσης να ανακαλέσει τα κλειδιά του καταστήματος από τον πίνακα ελέγχου· μια νέα σύνδεση αντικαθιστά τα παλιά κλειδιά.

Λειτουργίες κλειδιού καταστήματος #

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

Λειτουργίες που μπορεί να καλέσει ένα κλειδί καταστήματος
ΛειτουργίαΚλήση
Ανάκτηση παραστατικούGET /documents/{id}
Λήψη του PDF ενός παραστατικούGET /documents/{id}/pdf
Ανάκτηση εμπόρουGET /merchants/{id}
Διαγραφή δεδομένων πελάτηPOST /erasures
Αποστολή παραγγελίας καταστήματοςPOST /store_orders
Ανάκτηση παραγγελίας καταστήματοςGET /store_orders/{id}
Λίστα παραγγελιών καταστήματοςGET /store_orders
Επανάληψη παραγγελίας καταστήματοςPOST /store_orders/{id}/retry
Σήμανση παραγγελίας καταστήματος ως διεκπεραιωμένηςPOST /store_orders/{id}/mark_handled
Έλεγχος τιμολογίου σε αναμονήPOST /store_orders/{id}/invoice_review
Επιβεβαίωση τιμολογίου σε αναμονήPOST /store_orders/{id}/confirm_invoice
Διόρθωση του παραστατικού παραγγελίας καταστήματοςPOST /store_orders/{id}/correct
Ακύρωση του παραστατικού παραγγελίας καταστήματοςPOST /store_orders/{id}/cancel
Αποθήκευση αιτήματος τιμολογίου αγοραστήPUT /store_orders/{id}/invoice_request
Αποστολή επιστροφής χρημάτων παραγγελίας καταστήματοςPOST /store_orders/{id}/refunds
Σήμανση επιστροφής χρημάτων καταστήματος ως διεκπεραιωμένηςPOST /store_orders/{id}/refunds/{refundId}/mark_handled
Ανάκτηση ρυθμίσεων καταστήματος εμπόρουGET /merchants/{id}/store_settings
Ενημέρωση ρυθμίσεων καταστήματος εμπόρουPATCH /merchants/{id}/store_settings
Ανάκτηση της χρήσης του πακέτου καταστήματοςGET /store_usage
Λίστα συνδέσεων εμπόρουGET /merchants/{id}/connections
Ανάκτηση σύνδεσηςGET /connections/{id}
Δημιουργία φιλοξενούμενου συνδέσμου σύνδεσηςPOST /merchants/{id}/connect_sessions
Αναζήτηση αριθμού ΦΠΑGET /tax_ids/lookup
Ανάκληση του κλειδιού που κάνει αυτό το αίτημαDELETE /api_keys/current
Επιβεβαίωση ότι το κατάστημα μεταφέρθηκε σε νέο URLPUT /store_binding