ΠΡΟΓΡΑΜΜΑΤΙΣΤΕΣ · Τεκμηρίωση Integration API

Τεκμηρίωση του Fabrixa Integration API

6 λεπτά ανάγνωσης Τελευταία ενημέρωση: 22-09-2026 21:12

Το Integration API σας βοηθά να δημιουργείτε και να διαχειρίζεστε παραγγελίες Fabrixa, να εκκινείτε το Fabrixa Studio και να παραμένετε συγχρονισμένοι με την κατάσταση παραγωγής και εκτέλεσης μέσω webhooks. Το API ακολουθεί τις συμβάσεις REST και χρησιμοποιεί JSON σε όλα τα σώματα αιτημάτων και αποκρίσεων.

ΒΑΣΙΚΟ URL

https://api.fabrixa.com/v2/integration

Στείλτε όλα τα αιτήματα σε αυτό το βασικό URL, ακολουθούμενο από τη διαδρομή του συγκεκριμένου endpoint. Το βασικό URL είναι η αφετηρία για την αλληλεπίδραση με το Fabrixa API - ανάκτηση, δημιουργία, ενημέρωση ή διαγραφή πόρων.

ΠΡΙΝ ΑΠΟ ΤΟ ΠΡΩΤΟ ΑΙΤΗΜΑ

Έλεγχος ταυτότητας

Για πρόσβαση στο Integration API, ελέγξτε την ταυτότητα των αιτημάτων σας χρησιμοποιώντας τόσο ένα Application Access Token όσο και ένα Application Key:

Κεφαλίδα Authorization
Authorization: Bearer APPLICATION_ACCESS_TOKEN
Κεφαλίδα Application Key
X-Application-Key: APPLICATION_KEY
Παράδειγμα εντολής cURL
curl -X 'GET' \
  'https://api.fabrixa.com/v2/integration/ping' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
  -H 'X-Application-Key: APPLICATION_KEY'

Αντικαταστήστε το APPLICATION_ACCESS_TOKEN με το πραγματικό σας access token και το APPLICATION_KEY με το πραγματικό σας application key.

ΠΩΣ ΔΟΜΟΥΝΤΑΙ ΟΙ ΑΠΟΚΡΙΣΕΙΣ

Endpoints και αιτήματα

Τα endpoints του Integration API είναι οργανωμένα ανά τύπο πόρου και ακολουθούν το αρχιτεκτονικό στιλ REST. Κάθε endpoint αντιπροσωπεύει έναν πόρο και οι ενέργειες σε αυτούς τους πόρους εκτελούνται με τις τυπικές μεθόδους HTTP.

Όλα τα αιτήματα και οι αποκρίσεις του Integration API είναι σε μορφή JSON, παρέχοντας ένα συνεπές και εύχρηστο περιβάλλον για την αλληλεπίδραση με το API.

Για πλήρεις λεπτομέρειες για κάθε endpoint, συμπεριλαμβανομένων παραδειγμάτων αιτημάτων και αποκρίσεων, δείτε την τεκμηρίωση Swagger.

Μορφή απόκρισης

Όλα τα endpoints επιστρέφουν δεδομένα σε τυποποιημένη μορφή με τα εξής αντικείμενα:

{
  "links": {
    "self": "https://api.fabrixa.com/v2/integration/products",
    "first_page": "https://api.fabrixa.com/v2/integration/products?page=1",
    "last_page": "https://api.fabrixa.com/v2/integration/products?page=2",
    "next_page": "https://api.fabrixa.com/v2/integration/products?page=2",
    "prev_page": null
  },
  "meta": {
    "total": 2,
    "current_page": 1,
    "per_page": 10
  },
  "data": [
    {
      "id": 1,
      "name": "Product 1",
      "description": "Description of Product 1"
    },
    {
      "id": 2,
      "name": "Product 2",
      "description": "Description of Product 2"
    }
  ]
}

Περιγραφή των αντικειμένων απόκρισης

links

Περιέχει συνδέσμους σελιδοποίησης για την πλοήγηση στα αποτελέσματα.

  • self — το URL της τρέχουσας σελίδας.
  • first_page — το URL της πρώτης σελίδας αποτελεσμάτων.
  • last_page — το URL της τελευταίας σελίδας αποτελεσμάτων.
  • next_page — το URL της επόμενης σελίδας. null αν δεν υπάρχει επόμενη σελίδα.
  • prev_page — το URL της προηγούμενης σελίδας. null αν δεν υπάρχει προηγούμενη σελίδα.

meta

Περιέχει μεταδεδομένα για την απόκριση, όπως πληροφορίες σελιδοποίησης.

  • total — ο συνολικός αριθμός διαθέσιμων ειδών σε όλες τις σελίδες.
  • current_page — ο αριθμός της τρέχουσας σελίδας αποτελεσμάτων.
  • per_page — ο αριθμός των ειδών ανά σελίδα.

data

Το κύριο περιεχόμενο της απόκρισης. Το data διαφέρει ανά endpoint - μπορεί να είναι ένα μεμονωμένο αντικείμενο, για παράδειγμα ένα προϊόν, ή ένας πίνακας αντικειμένων, για παράδειγμα μια λίστα προϊόντων.

ΟΤΑΝ ΚΑΤΙ ΠΑΕΙ ΣΤΡΑΒΑ

Σφάλματα και κωδικοί κατάστασης

Όλα τα αιτήματα API επιστρέφουν κωδικούς κατάστασης HTTP που δίνουν πληροφορίες για την απόκριση.

400 Bad Request

Ο διακομιστής δεν μπορεί να επεξεργαστεί το αίτημα λόγω σφαλμάτων επικύρωσης - ελλιπείς ή μη έγκυρες παράμετροι.

401 Unauthorized

Ο πελάτης δεν έχει παράσχει έγκυρα διαπιστευτήρια. Επιστρέφεται επίσης όταν το access token έχει ανακληθεί.

403 Forbidden

Ο διακομιστής απέρριψε το αίτημα λόγω ανεπαρκών δικαιωμάτων πρόσβασης, συνήθως εξαιτίας εσφαλμένων ή ελλιπών δικαιωμάτων.

404 Not Found

Ο ζητούμενος πόρος δεν βρέθηκε στον διακομιστή.

429 Too Many Requests

Ο πελάτης ξεπέρασε τον επιτρεπόμενο αριθμό αιτημάτων σε δεδομένο χρονικό διάστημα. Δείτε τα Όρια αιτημάτων.

5xx Errors

Παρουσιάστηκε εσωτερικό σφάλμα διακομιστή. Επικοινωνήστε με την υποστήριξη της Fabrixa δίνοντας λεπτομέρειες του αιτήματος που απέτυχε.

Σώμα απόκρισης σφάλματος

Ένα παράδειγμα σώματος απόκρισης σφάλματος:

{
    "links": {
        "self": "https://api.fabrixa.com/v2/integration/ping"
    },
    "meta": [],
    "errors": {
        "messages": [
            "Application Key is not specified."
        ]
    }
}

Το errors περιέχει λεπτομέρειες για το τι απέτυχε. Ο πίνακας messages παραθέτει τις περιγραφές των σφαλμάτων. Σε ένα Bad Request θα λάβετε τα ονόματα των πεδίων που δεν πέρασαν την επικύρωση.

ΜΑΘΕΤΕ ΤΑ ΟΡΙΑ ΑΙΤΗΜΑΤΩΝ

Όρια αιτημάτων

Το Integration API υποστηρίζει όριο 30 αιτημάτων ανά εφαρμογή ανά λεπτό.

Αν ξεπεράσετε αυτό το όριο, θα λάβετε απόκριση 429 Too Many Requests.

Όλες οι αποκρίσεις του Integration API περιλαμβάνουν την κεφαλίδα X-RateLimit-Remaining, πόσα αιτήματα μπορεί να κάνει ακόμη ο πελάτης, και την κεφαλίδα X-RateLimit-Limit, το συνολικό επιτρεπόμενο όριο ανά λεπτό.

ΔΗΜΙΟΥΡΓΙΑ ΚΑΙ ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΠΑΡΑΓΓΕΛΙΩΝ

Παραγγελίες

Δημιουργήστε παραγγελίες στη Fabrixa από το δικό σας κατάστημα ή πλατφόρμα, επισυνάψτε τα απαιτούμενα αρχεία εκτύπωσης και παρακολουθήστε κάθε είδος καθώς προχωρά στην εκτέλεση.

ΠΡΟΕΤΟΙΜΑΣΤΕ ΤΑ ΔΕΔΟΜΕΝΑ ΤΗΣ ΠΑΡΑΓΓΕΛΙΑΣ

Δημιουργία παραγγελίας

Για να δημιουργήσετε παραγγελία μέσω του Fabrixa Integration API, στείλτε αίτημα POST στο https://api.fabrixa.com/v2/integration/orders. Το σώμα του αιτήματος πρέπει να περιλαμβάνει:

Δομή σώματος αιτήματος

  • number (προαιρετικό) - ο αριθμός παραγγελίας. Αν δεν δοθεί, δημιουργείται μοναδικός αριθμός.
  • comments (προαιρετικό) - πρόσθετα σχόλια ή σημειώσεις σχετικά με την παραγγελία.
  • purchased_at - ημερομηνία και ώρα αγοράς της παραγγελίας, σε μορφή YYYY-MM-DD HH:MM:SS.
  • client_ip (προαιρετικό) - η διεύθυνση IP του πελάτη.
  • client_user_agent (προαιρετικό) - η συμβολοσειρά user-agent του πελάτη.
  • rows - πίνακας ειδών παραγγελίας, καθένα από τα οποία περιέχει:
    • sku - το SKU της παραλλαγής προϊόντος. Δείτε λεπτομέρειες στο Swagger.
    • quantity - η ποσότητα της παραλλαγής προϊόντος που παραγγέλθηκε.
    • client_barcode (προαιρετικό) - μοναδικό αναγνωριστικό από την πλευρά του πελάτη για κάθε γραμμή παραγγελίας, σε μορφή Code 128.
    • cart_item_key (απαιτείται χωρίς sources) - μοναδικό αναγνωριστικό από την πλατφόρμα που ενσωματώνει το Fabrixa Studio, το οποίο συνδέει τις αποθηκευμένες προσαρμογές με την παραγγελία.
    • sources (απαιτείται χωρίς cart_item_key) - πίνακας αρχείων προέλευσης που σχετίζονται με το προϊόν, καθένα από τα οποία περιέχει:
      • type - ο τύπος προϊόντος, χρησιμοποιήστε "file" από προεπιλογή.
      • url - το URL του αρχείου προέλευσης.
  • customer - στοιχεία πελάτη:
    • first_name, last_name, email, phone.
  • shipping_address - στοιχεία αποστολής:
    • address, address2 (προαιρετικό), address3 (προαιρετικό).
    • city, country_code (ISO 3166-2), country, postal_code, state (προαιρετικό).
    • first_name, last_name, phone (προαιρετικό), company (προαιρετικό).
  • shipping_label (προαιρετικό) - στοιχεία ετικέτας:
    • method_name - π.χ. "Post NL".
    • tracking_number, tracking_url, label_pdf_url.
    • date_created - σε μορφή YYYY-MM-DD HH:MM:SS.

Δείγμα αιτήματος

{
  "number": "NL2024010201",
  "comments": "Customer agrees with a low resolution file.",
  "purchased_at": "2024-06-26 21:12:22",
  "client_ip": "127.0.0.1",
  "client_user_agent": "Mozilla",
  "rows": [
    {
      "variant_id": 2705,
      "quantity": 1,
      "client_barcode": "1234567890",
      "sources": [
        {
          "type": "file",
          "url": "https://samples-files.com/samples/sample.pdf"
        }
      ]
    }
  ],
  "customer": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "3VJtP@example.com",
    "phone": "0647185332"
  },
  "shipping_address": {
    "address": "Pierre cuypershof",
    "address2": "17",
    "city": "Amsterdam",
    "country_code": "NL",
    "country": "Netherlands",
    "postal_code": "1012 AB",
    "state": "North Holland",
    "first_name": "John",
    "last_name": "Doe",
    "phone": "0647185332"
  },
  "shipping_label": {
    "method_name": "Post NL",
    "tracking_number": "3SYZXG1585577",
    "tracking_url": "https://postnl.nl/tracktrace/3SYZXG1585577",
    "label_pdf_url": "https://api.fabrixa.com/storage/8966630826422f36d822f91680012141.pdf",
    "date_created": "2024-01-01 00:00:00"
  }
}
ΠΑΡΑΚΟΛΟΥΘΗΣΤΕ ΤΑ ΕΙΔΗ ΤΗΣ ΠΑΡΑΓΓΕΛΙΑΣ

Παρακολούθηση εκτέλεσης

Για να λάβετε την κατάσταση εκτέλεσης μιας συγκεκριμένης παραγγελίας, στείλτε αίτημα GET στο https://api.fabrixa.com/v2/integration/orders/{order_id}/fulfillments. Η απόκριση παρέχει λίστα των εκτελέσεων που σχετίζονται με την παραγγελία, μαζί με την κατάσταση κάθε είδους, τα στοιχεία του προϊόντος και την πρόοδο των βημάτων παραγωγής.

Δείγμα απόκρισης

{
    "data": [
        {
            "id": 1499,
            "barcode": "1200004169200",
            "status": "unfulfilled",
            "created_at": "2024-08-19T12:38:59.000000Z",
            "updated_at": "2024-08-19T12:39:00.000000Z",
            "variant": {
                "id": 32327,
                "name": "Test iAPI blanket product",
                "subtitle": "100 x 150 cm",
                "SKU": "COF099191"
            },
            "product": {
                "id": 1306,
                "name": "Test iAPI blanket product",
                "subtitle": "Test iAPI blanket product"
            },
            "production_steps": [
                {
                    "id": 5,
                    "name": "Print duvet",
                    "description": "Printing the duvet according to the specified design and dimensions.",
                    "status": {
                        "value": "pending",
                        "notes": null,
                        "updated_at": null
                    }
                },
                {
                    "id": 6,
                    "name": "Print pillow",
                    "description": "Printing the pillow cover with the assigned design.",
                    "status": {
                        "value": "pending",
                        "notes": null,
                        "updated_at": null
                    }
                }
            ]
        }
    ]
}

Η απόκριση περιλαμβάνει λίστα εκτελέσεων, καθεμία από τις οποίες παρέχει:

  • id - μοναδικό αναγνωριστικό της εκτέλεσης.
  • barcode - barcode για εσωτερική παρακολούθηση και αναγνώριση, το οποίο μπορεί να εκτυπωθεί και στο προϊόν.
  • status - η τρέχουσα κατάσταση εκτέλεσης: unfulfilled ή fulfilled.
  • created_at και updated_at - χρονικές σημάνσεις δημιουργίας και τελευταίας ενημέρωσης της εκτέλεσης.
  • variant - αναλυτικές πληροφορίες για την παραλλαγή προϊόντος: όνομα, υπότιτλος, SKU.
  • product - στοιχεία προϊόντος: όνομα, υπότιτλος.
  • production_steps - πίνακας βημάτων παραγωγής. Η λίστα των βημάτων εξαρτάται από τον τύπο του προϊόντος. Για κάθε βήμα:
    • id - μοναδικό αναγνωριστικό του βήματος παραγωγής.
    • name - π.χ. "Εκτύπωση παπλωματοθήκης".
    • description - τι περιλαμβάνει το βήμα παραγωγής.
    • status - η τρέχουσα κατάσταση:
      • pending - δεν έχει ξεκινήσει ακόμη.
      • in progress - βρίσκεται σε εξέλιξη.
      • rejected - το βήμα αντιμετώπισε πρόβλημα και δεν ολοκληρώθηκε επιτυχώς.
      • done - το βήμα ολοκληρώθηκε.
    • notes - πρόσθετες σημειώσεις σχετικά με το βήμα.
    • updated_at - πότε ενημερώθηκε τελευταία η κατάσταση του βήματος.

Κάθε εγγραφή εκτέλεσης αντιστοιχεί σε ένα συγκεκριμένο προϊόν ή παραλλαγή προϊόντος της παραγγελίας, και κάθε τεμάχιο του προϊόντος στην παραγγελία έχει τη δική του εγγραφή εκτέλεσης - κάθε είδος παρακολουθείται ξεχωριστά σε όλη την παραγωγή.

Αν δεν επιστραφούν εκτελέσεις για μια παραγγελία, η παραγγελία δεν έχει εισέλθει ακόμη στο στάδιο επεξεργασίας.

ΠΩΣ ΝΑ ΠΑΡΕΧΕΤΕ ΑΡΧΕΙΑ ΕΚΤΥΠΩΣΗΣ

Απαιτήσεις αρχείων προέλευσης

Όταν συμπεριλαμβάνετε αρχεία προέλευσης στην παραγγελία σας, βεβαιωθείτε ότι πληρούν τις εξής απαιτήσεις:

type

Πρέπει να παρέχετε ένα αρχείο PDF ως προέλευση. Αν το σχέδιό σας περιέχει πολλαπλά επίπεδα προϊόντος, συμπεριλάβετε κάθε επίπεδο ως ξεχωριστή σελίδα στο ίδιο PDF. Κατά την επεξεργασία, κάθε σελίδα αντιμετωπίζεται ως ξεχωριστό επίπεδο, ώστε να μπορείτε να υποβάλετε ένα σχέδιο πολλών επιπέδων ως ένα μόνο αρχείο προέλευσης. Δείτε τις απαιτήσεις PDF και τη σειρά σελίδων.

Το type στο αντικείμενο source πρέπει να έχει την τιμή "file".

"sources": [
    {
        "type": "file",
        "url": "https://samples-files.com/samples/source.pdf"
    }
]

Για περισσότερες λεπτομέρειες, δείτε την τεκμηρίωση Swagger.

url

Το πεδίο url πρέπει να περιέχει άμεσο σύνδεσμο προς το αρχείο προέλευσης. Βεβαιωθείτε ότι το URL είναι προσβάσιμο και ότι το αρχείο μπορεί να ληφθεί χωρίς έλεγχο ταυτότητας. Ο σύνδεσμος πρέπει να παραμείνει προσβάσιμος καθ’ όλη τη διάρκεια της παραγωγής.

Μορφή αρχείου

Παρέχετε αρχεία σε μορφή PDF. Βεβαιωθείτε ότι οι εικόνες είναι υψηλής ποιότητας και κατάλληλες για εκτύπωση.

Διαστάσεις εικόνας

Οι μέγιστες διαστάσεις είναι 15.000 pixel σε κάθε πλευρά. Εικόνες που υπερβαίνουν αυτό το όριο μπορεί να αλλάξουν μέγεθος ή να απορριφθούν. Η ανάλυση της εικόνας πρέπει να ταιριάζει με τις διαστάσεις του προϊόντος, διαφορετικά οι εικόνες μπορεί να αλλάξουν μέγεθος ή να περικοπούν για να προσαρμοστούν.

Ανάλυση

Δεν υπάρχει συγκεκριμένη απαίτηση ανάλυσης - απλώς βεβαιωθείτε ότι η ποιότητα της εικόνας αρκεί για εκτύπωση.

Χρωματικός χώρος

Οι εικόνες πρέπει να είναι σε χρωματικό χώρο RGB για σωστή απόδοση των χρωμάτων. Άλλοι χρωματικοί χώροι μετατρέπονται κατά την επεξεργασία, κάτι που μπορεί να οδηγήσει σε λανθασμένα χρώματα.

Μέγεθος αρχείου

Κάθε αρχείο προέλευσης δεν πρέπει να υπερβαίνει τα 50 MB. Μεγαλύτερα αρχεία μπορεί να απορριφθούν ή να προκαλέσουν καθυστερήσεις στην επεξεργασία.

Απαιτήσεις PDF και σειρά σελίδων

Η σειρά των σελίδων στο PDF έχει σημασία. Οι σελίδες αντιστοιχίζονται στα επίπεδα του προϊόντος με βάση τη θέση τους και η αναμενόμενη σειρά σελίδων εξαρτάται από τον τύπο του προϊόντος. Βεβαιωθείτε ότι οι σελίδες του PDF ακολουθούν τη σωστή σειρά επιπέδων για το προϊόν που υποβάλλετε.

ΠροϊόνΣειρά σελίδων PDF
Duvet Cover
  1. Duvet cover
  2. Pillow front
  3. Pillow back
Curtains
  1. Left curtain
  2. Right curtain
T-shirt
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Collar
Tanktop
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Collar
Sweater
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Left cuff
  6. Right cuff
  7. Collar
  8. Waistband
Hoodie
  1. Front
  2. Back
  3. Left sleeve
  4. Right sleeve
  5. Left cuff
  6. Right cuff
  7. Hood inside left
  8. Hood inside right
  9. Hood outside left
  10. Hood outside right
  11. Waistband
  12. Pocket lower left
  13. Pocket lower right
  14. Pocket upper right
  15. Pocket upper left
Sweatpants
  1. Front right
  2. Front left
  3. Back left
  4. Back right
  5. Left cuff
  6. Right cuff
  7. Waistband
  8. Right pocket
  9. Left pocket
  10. Back pocket
  11. Back pocket interfacing
Sweatshorts
  1. Front right
  2. Front left
  3. Back left
  4. Back right
  5. Waistband
  6. Right pocket
  7. Left pocket

Σημαντικό: κάθε σελίδα του PDF πρέπει να έχει τις απαιτούμενες διαστάσεις για το αντίστοιχο επίπεδο προϊόντος και τον σωστό προσανατολισμό. Τοποθετήστε το γραφικό ώστε το πάνω μέρος του σχεδίου να ευθυγραμμίζεται με το πάνω μέρος της σελίδας. Λανθασμένο μέγεθος ή προσανατολισμός σελίδας μπορεί να προκαλέσει προβλήματα κλιμάκωσης, περιστροφής ή ευθυγράμμισης στην παραγωγή.

ΠΡΟΣΑΡΜΟΓΗ ΠΡΟΪΟΝΤΟΣ

Fabrixa Studio

Το Fabrixa Studio είναι ένα εργαλείο που επιτρέπει στους χρήστες να προσαρμόζουν και να εξατομικεύουν προϊόντα σε πραγματικό χρόνο, με ένα διαισθητικό περιβάλλον όπου μπορούν να δημιουργήσουν ή να ανεβάσουν τα δικά τους σχέδια.

Το Fabrixa Studio είναι ιδανικό για επιχειρήσεις που προσφέρουν προϊόντα κατά παραγγελία - οι πελάτες βλέπουν το σχέδιό τους πριν ολοκληρώσουν την παραγγελία.

ΠΡΟΣΘΕΣΤΕ ΤΟ STUDIO ΣΤΟ ΚΑΤΑΣΤΗΜΑ ΣΑΣ

Ενσωμάτωση του Fabrixa Studio

Μπορείτε να ενσωματώσετε το Fabrixa Studio στον ιστότοπό σας μέσω ενός iframe. Έτσι οι πελάτες σας μπορούν να εξατομικεύουν προϊόντα απευθείας στον ιστότοπό σας κατά την ολοκλήρωση της αγοράς.

Παράδειγμα iframe για την ενσωμάτωση του Fabrixa Studio:

<iframe id="fabrixa-studio"
    src="https://studio.fabrixa.com?application_key={application_key}&sku={product_sku}&cart_item_key={cart_item_key}"
    name="FabrixaStudio"
    scrolling="no"
    frameborder="1"
    width="100%"
    height="100%"
    allowfullscreen="">
</iframe>

Αντικαταστήστε τις τιμές product_sku, cart_item_key και application_key με τις δικές σας δυναμικές τιμές.

Αίτημα δημιουργίας παραγγελίας με cart_item_key

{
  "number": "NL2024010201",
  "purchased_at": "2024-06-26 21:12:22",
  "client_ip": "127.0.0.1",
  "client_user_agent": "Mozilla",
  "rows": [
    {
      "sku": "SB796162",
      "quantity": 1,
      "cart_item_key": "0cb76770-de2d-4524-aa48-47b6e5f0d8a5"
    }
  ],
  "customer": {
    "...": "..."
  },
  "shipping_address": {
    "...": "..."
  },
  "shipping_label": {
    "...": "..."
  }
}
ΠΑΡΑΚΟΛΟΥΘΗΣΤΕ ΤΙΣ ΕΝΕΡΓΕΙΕΣ ΤΩΝ ΠΕΛΑΤΩΝ

Διαχείριση συμβάντων του Studio

Όταν πατηθεί το κουμπί Προσθήκη στο καλάθι μέσα στο iframe, εκτελείται η εξής εντολή:

window.parent.postMessage('customizationFinished', '*');

Αντίστοιχα, όταν πατηθεί το κουμπί Πίσω:

window.parent.postMessage('closeButtonClicked', '*');

Η μέθοδος postMessage διευκολύνει την επικοινωνία μεταξύ διαφορετικών προελεύσεων για το iframe και το γονικό παράθυρο, επιτρέποντάς του να ενημερώνει το γονικό παράθυρο για συγκεκριμένες ενέργειες του χρήστη.

Το πρώτο όρισμα του postMessage είναι τα δεδομένα που θέλετε να στείλετε. Η συμβολοσειρά 'customizationFinished' δηλώνει ότι ο χρήστης ολοκλήρωσε την προσαρμογή και προσθέτει το προϊόν στο καλάθι. Το 'closeButtonClicked' δηλώνει ότι ο χρήστης επέλεξε να επιστρέψει.

Στο γονικό παράθυρο, παρακολουθήστε αυτά τα μηνύματα με έναν listener του συμβάντος message:

window.addEventListener('message', function(event) {
    if (event.origin === 'https://studio.fabrixa.com') {
        if (event.data === 'customizationFinished') {
            // Handle the Add to Cart event
            console.log('Customization finished and item can be added to cart.');
        } else if (event.data === 'closeButtonClicked') {
            // Handle the Back button event
            console.log('Back button clicked.');
        }
    }
});

Ελέγχετε πάντα το origin των εισερχόμενων μηνυμάτων για να βεβαιωθείτε ότι προέρχονται από αξιόπιστη πηγή. Ανάλογα με το μήνυμα που λαμβάνετε, εκτελέστε τις απαραίτητες ενέργειες - ενημέρωση της διεπαφής, επεξεργασία του καλαθιού και τα λοιπά. Η επικύρωση του origin είναι κρίσιμη για την ασφάλεια - εμποδίζει μη εξουσιοδοτημένα scripts να αλληλεπιδράσουν με την εφαρμογή σας.

ΕΜΦΑΝΙΣΤΕ ΤΟ ΤΕΛΙΚΟ ΣΧΕΔΙΟ

Προεπισκόπηση προσαρμογής

Αφού ολοκληρωθεί η προσαρμογή, εμφανίστε το τελικό σχέδιο μέσω του παρακάτω URL προεπισκόπησης. Το URL επιστρέφει εικόνα του προσαρμοσμένου προϊόντος, κατάλληλη ως τιμή src σε ετικέτα <img>. Ιδανικό για την εμφάνιση του προσαρμοσμένου προϊόντος στο καλάθι, στη σύνοψη της παραγγελίας ή οπουδήποτε στο περιβάλλον του καταστήματός σας.

https://api.fabrixa.com/v2/studio/customizations/{CART_ITEM_KEY}/preview?Application-Key={APPLICATION_KEY}

Αντικαταστήστε το {CART_ITEM_KEY} με το πραγματικό κλειδί του είδους καλαθιού και το {APPLICATION_KEY} με το έγκυρο application key σας.

Παράδειγμα χρήσης σε ετικέτα εικόνας:

<img
    src="https://api.fabrixa.com/v2/studio/customizations/{CART_ITEM_KEY}/preview?Application-Key={APPLICATION_KEY}"
    alt="Customized Product Preview"
    style="max-width: 100%; height: auto;" />
ΔΟΚΙΜΑΣΤΕ ΤΟ ΜΕ ΤΙΣ ΤΙΜΕΣ ΣΑΣ

Ζωντανή επίδειξη

Η προεπισκόπηση της προσαρμογής θα εμφανιστεί εδώ μόλις ολοκληρωθεί το σχέδιο.

Customization preview
ΛΑΜΒΑΝΕΤΕ ΕΝΗΜΕΡΩΣΕΙΣ ΣΥΜΒΑΝΤΩΝ

Webhooks

Η Fabrixa χρησιμοποιεί webhooks για να ενημερώνει το σύστημά σας για συμβάντα σε πραγματικό χρόνο - ενημερώσεις ή δημιουργίες παραγγελιών. Όταν συμβεί ένα γεγονός, η Fabrixa στέλνει στον διακομιστή σας ένα webhook με τις σχετικές πληροφορίες. Ο διακομιστής σας πρέπει να διαθέτει δημόσιο endpoint POST για τη διαχείριση των εισερχόμενων webhooks.

ΕΛΕΓΞΤΕ ΤΙΣ ΕΙΣΕΡΧΟΜΕΝΕΣ ΚΕΦΑΛΙΔΕΣ

Κεφαλίδες αιτήματος webhook

Το αίτημα webhook περιλαμβάνει τις εξής κεφαλίδες, που σας βοηθούν να αναγνωρίσετε και να επικυρώσετε το εισερχόμενο αίτημα:

{
  "content-type": "application/json",
  "x-webhook-signature": "YmEwNjBhMGMyMzE3ZWQ5NGQ5NDYwOGVhNzNhMjQ4M2MyODZkZmI3NTQ1YzYxYjdkMzNhZjgzYzBmMTkxYTAxMw==",
  "x-webhook-topic": "order.updated"
}
Ανάλυση κεφαλίδων
ΕΠΙΛΕΞΤΕ ΤΑ ΘΕΜΑΤΑ ΣΥΜΒΑΝΤΩΝ

Συμβάντα webhook

Τα webhooks της Fabrixa ενημερώνουν το σύστημά σας για αλλαγές στην κατάσταση ή τη δραστηριότητα μιας παραγγελίας. Κάθε webhook ενεργοποιείται από μια συγκεκριμένη τιμή x-webhook-topic. Τα θέματα που υποστηρίζονται σήμερα:

ΘέμαΠεριγραφή
order.created Ενεργοποιείται όταν καταχωρείται νέα παραγγελία στη Fabrixa, είτε μέσω αιτήματος API είτε απευθείας στην πλατφόρμα.
order.updated Ενεργοποιείται όταν ενημερώνονται στοιχεία της παραγγελίας, όπως η κατάσταση της παραγγελίας ή η κατάσταση εκτέλεσης.

Καταστάσεις παραγγελίας

Καταστάσεις εκτέλεσης

ΕΞΕΤΑΣΤΕ ΤΟ PAYLOAD ΤΟΥ ΣΥΜΒΑΝΤΟΣ

Παράδειγμα payload webhook

Ένα παράδειγμα του payload που αποστέλλεται με το webhook. Αυτό το payload αντιπροσωπεύει ενημέρωση παραγγελίας:

{
  "id": 23069,
  "number": "1250211835",
  "comments": null,
  "is_archived": false,
  "status": "imported",
  "fulfillment_status": "unfulfilled",
  "purchased_at": "2025-04-17T16:17:21.000000Z",
  "created_at": "2025-04-17T16:17:23.000000Z",
  "updated_at": "2025-04-18T07:43:52.000000Z",
  "rows": [
    {
      "id": 27954,
      "quantity": 1,
      "client_barcode": "1250211835",
      "fulfillment_status": "unfulfilled",
      "variant": {
        "id": 293457,
        "name": "Sherpa fleece deken",
        "subtitle": "100x150",
        "SKU": "SFD787231",
        "product": {
          "id": 5319,
          "name": "Sherpa fleece deken",
          "subtitle": "Sherpa fleece deken"
        }
      },
      "sources": [
        {
          "type": "print",
          "url": "https://storage.googleapis.com/fabrixa-api/storage/99b10aaa-df4d-47e4-9bc9-b1d6a785df4c/orders/merchandise-sources/120002795400.pdf",
          "properties": {
            "fill_style": "contain"
          }
        }
      ]
    }
  ]
}
ΕΠΑΛΗΘΕΥΣΤΕ ΤΗΝ ΠΗΓΗ ΤΟΥ WEBHOOK

Επαλήθευση υπογραφών webhook

Για να βεβαιωθείτε ότι το αίτημα webhook είναι αυθεντικό και δεν έχει αλλοιωθεί, επαληθεύστε την κεφαλίδα x-webhook-signature. Αυτό σημαίνει ότι υπολογίζετε ξανά την υπογραφή HMAC-SHA256 με βάση το ανεπεξέργαστο payload του αιτήματος και το μυστικό κλειδί σας, και τη συγκρίνετε με την υπογραφή που λάβατε.

Παράδειγμα σε καθαρή PHP

$payload = file_get_contents('php://input');
$yourSecret = 'your-secret-key';
$expectedSignature = base64_encode(hash_hmac('sha256', $payload, $yourSecret, true));
$receivedSignature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';

if (!hash_equals($expectedSignature, $receivedSignature)) {
    http_response_code(403);
    exit('Invalid signature');
}

Παράδειγμα σε Laravel

public function handle(Request $request)
{
    $yourSecret = 'your-secret-key';
    $payload = $request->getContent();
    $expectedSignature = base64_encode(hash_hmac('sha256', $payload, $yourSecret, true));
    $receivedSignature = $request->header('x-webhook-signature');

    if (!hash_equals($expectedSignature, $receivedSignature)) {
        abort(403, 'Invalid signature');
    }

    // Continue processing...
}

Αντικαταστήστε το $yourSecret με το κοινό μυστικό κλειδί σας. Χρησιμοποιείτε πάντα hash_equals για τη σύγκριση υπογραφών, ώστε να περιορίσετε τις επιθέσεις χρονισμού.

ΤΙ ΓΙΝΕΤΑΙ ΑΝ ΑΠΟΤΥΧΕΙ Η ΠΑΡΑΔΟΣΗ;

Επαναλήψεις webhook

Τα webhooks απενεργοποιούνται από προεπιλογή μετά από 10 αποτυχημένες προσπάθειες παράδοσης. Αν το endpoint σας επιστρέψει κατάσταση αποτυχίας, όπως 404 ή οποιοδήποτε σφάλμα 5xx, το webhook θα επαναληφθεί συνολικά 10 φορές. Αν συνεχίσει να επιστρέφει κωδικό απόκρισης εκτός 2xx ή 3xx, θα απενεργοποιηθεί. Στις επιτυχείς αποκρίσεις περιλαμβάνονται:

ΕΠΙΣΤΡΕΨΤΕ ΣΑΦΗ ΑΠΟΚΡΙΣΗ

Απόκριση webhook

Συνιστούμε ανεπιφύλακτα το endpoint σας να επιστρέφει κωδικό κατάστασης 200 OK όσο το δυνατόν γρηγορότερα, ώστε να επιβεβαιώνει την επιτυχή λήψη του webhook. Παρότι κάθε απόκριση 2xx ή 3xx θεωρείται επιτυχής, ο 200 είναι ο πιο συνηθισμένος και αξιόπιστος.

Για να αποφύγετε λήξεις χρόνου παράδοσης ή επαναλήψεις, επιστρέψτε αμέσως 200 OK και επεξεργαστείτε το payload του webhook ασύγχρονα, για παράδειγμα μέσω εργασίας παρασκηνίου ή ουράς. Αν το endpoint σας καθυστερεί πολύ να αποκριθεί, μπορεί να θεωρηθεί αποτυχία, ακόμη και αν τελικά η απόκριση είναι επιτυχής.

Αποκρίσεις με κωδικούς κατάστασης στο εύρος 4xx ή 5xx, καθώς και λήξεις χρόνου, ενεργοποιούν επαναλήψεις σύμφωνα με τον μηχανισμό επαναλήψεων.