Πίσω στο Portfolio

Skroutz Smart Cart Webhook for PrestaShop

Εξειδικευμένο PrestaShop 8.x module (v3.2.0) για την αυτόματη εισαγωγή παραγγελιών Skroutz Smart Cart σε πραγματικό χρόνο, με 5-επίπεδη ταύτιση SKU/MPN, ακριβή αποφορολόγηση ΦΠΑ και ανίχνευση τιμολογίου.

Κατηγορία
Plug-ins & Modules
Πελάτης
DamiansLab (Bespoke E-Commerce Suite)
Έτος
2024 - 2026
Διάρκεια
Συνεχής εξέλιξη (v3.2.0)
Ρόλος
Lead Full-Stack & PrestaShop Module Architect
Skroutz Smart Cart Webhook for PrestaShop

Η πρόκληση

Η ενσωμάτωση των παραγγελιών του Skroutz Smart Cart στο PrestaShop 8 παρουσιάζει σύνθετες τεχνικές και λογιστικές προκλήσεις: το PrestaShop περιορίζει εκ κατασκευής το πεδίο Order Reference σε 9 χαρακτήρες (ενώ οι κωδικοί παραγγελίας του Skroutz αριθμούν 13-14+ χαρακτήρες), οι τελικές τιμές με ΦΠΑ που αποστέλλει το marketplace προκαλούν αποκλίσεις στρογγυλοποίησης, και οι αυστηροί έλεγχοι τύπων (Strict Typing) του PrestaShop 8 απορρίπτουν ονόματα ή διευθύνσεις με κενά πεδία.

Επιπλέον, τα καταστήματα χρειάζονται έναν αξιόπιστο τρόπο να απομονώνουν τους μεταφορείς του Skroutz (Courier και Παραλαβή από το Κατάστημα) ώστε να μην εμφανίζονται στους απλούς πελάτες λιανικής, καθώς και αυτόματη καταχώρηση των στοιχείων τιμολογίου (ΑΦΜ, ΔΟΥ, Επωνυμία) όταν ο αγοραστής επιλέγει έκδοση τιμολογίου.

Τι φτιάχτηκε

Το Skroutz Smart Cart Webhook (v3.2.0) είναι ένα εξειδικευμένο πρόσθετο (module) για το PrestaShop 8.x, σχεδιασμένο από τον Ηλία Δαμιανίδη (DamiansLab), το οποίο αυτοματοποιεί σε πραγματικό χρόνο την εισαγωγή παραγγελιών από το Skroutz Smart Cart με πλήρη λογιστική ακρίβεια ΦΠΑ, ανίχνευση τιμολογίων ΑΦΜ/ΔΟΥ και απομόνωση μεταφορικών.

Κεντρικές ρυθμίσεις του Skroutz Smart Cart Webhook v3.2.0 στο PrestaShop 8 Back-Office Περιβάλλον ρυθμίσεων του Skroutz Smart Cart Webhook v3.2.0 στο PrestaShop 8.2 με διαμόρφωση IP Whitelist, ομάδων πελατών και μεταφορέων.

Απρόσκοπτη γεφύρωση Skroutz Marketplace και PrestaShop 8

Κάθε φορά που ολοκληρώνεται μια αγορά μέσω του Skroutz Smart Cart, το webhook endpoint του module (/module/skroutzwebhook/webhook) υποδέχεται το JSON payload, επαληθεύει τη διεύθυνση αποστολής μέσω CIDR IP Whitelist και δημιουργεί αυτόματα τον πελάτη, τη διεύθυνση, το καλάθι και την τελική παραγγελία στο PrestaShop — χωρίς καμία χειροκίνητη καταχώρηση και χωρίς την αποστολή ανεπιθύμητων αυτοματοποιημένων emails στον αγοραστή.

Συνδυάζεται εγγενώς με το συνοδευτικό module πληρωμών Πληρωμή μέσω Skroutz (skroutzpayment), αποτυπώνοντας με ακρίβεια τον τρόπο εξόφλησης και τον πραγματικό κωδικό συναλλαγής του marketplace.

Βασικές δυνατότητες και αρχιτεκτονικές καινοτομίες

1. Έξυπνη ταύτιση προϊόντων 5 επιπέδων (Smart Product Matching Cascade)

  • Πολυεπίπεδη αναζήτηση κωδικού (findProduct): Για κάθε γραμμή προϊόντος (shop_uid), ο αλγόριθμος ελέγχει διαδοχικά: (1) το Product ID, (2) το κύριο Reference (SKU) του προϊόντος, (3) το Reference του συνδυασμού/παραλλαγής στον πίνακα ps_product_attribute, (4) το MPN του κύριου προϊόντος και (5) το MPN του συνδυασμού.
  • Πλήρης υποστήριξη συνδυασμών (Combinations): Αποτρέπει τις αστοχίες αποθέματος σε καταστήματα με μεγέθη, χρώματα ή τεχνικές παραλλαγές, δεσμεύοντας ακριβώς το σωστό id_product_attribute.

2. Μηχανή αποφορολόγησης ακριβείας 6 δεκαδικών (Net Price & VAT Engine)

  • Μηδενικές αποκλίσεις στρογγυλοποίησης: Επειδή το Skroutz αποστέλλει τελικές τιμές με ΦΠΑ (unit_price), το module ανακτά δυναμικά τον συντελεστή ΦΠΑ του προϊόντος για τη διεύθυνση παράδοσης ($productObj->getTaxesRate($address)) και υπολογίζει την καθαρή τιμή με ακρίβεια 6 δεκαδικών ψηφίων: round($skroutzPriceGross / (1 + ($taxRate / 100)), 6).
  • Δυναμικό SpecificPrice ανά καλάθι: Δημιουργεί εξατομικευμένη εγγραφή SpecificPrice συνδεδεμένη αποκλειστικά με το id_cart της παραγγελίας, εξασφαλίζοντας 100% ταύτιση του τελικού ποσού πληρωμής.

3. Αυτόματη επέκταση βάσης δεδομένων για 14+ ψηφία Order Reference

  • Αυτόματο Schema Migration (installDb): Κατά την εγκατάσταση, το module εκτελεί αυτόματα ALTER TABLE ps_orders MODIFY reference VARCHAR(32) και ALTER TABLE ps_order_payment MODIFY order_reference VARCHAR(32).
  • Άμεση αναζήτηση με τον κωδικό Skroutz: Αντικαθιστά τον τυχαίο 9ψήφιο κωδικό του PrestaShop με τον πραγματικό κωδικό παραγγελίας του Skroutz (π.χ. 261016-849201) τόσο στην παραγγελία όσο και στην εγγραφή πληρωμής.

4. Απομόνωση μεταφορικών (Hidden Carrier Logic) και Store Pickup

  • Αποκλειστική ομάδα πελατών: Μέσω των μεθόδων $customer->cleanGroups() και $customer->addGroups([$targetGroupId]), οι πελάτες του Skroutz εντάσσονται αποκλειστικά στην ειδική ομάδα (π.χ. Skroutz Only), κρατώντας τους μεταφορείς του marketplace αόρατους από το κοινό της λιανικής.
  • Αυτόματη ανίχνευση Παραλαβής από το Κατάστημα: Ελέγχει τα πεδία dispatch_method και courier του payload και, εφόσον εντοπίσει store_pickup, δρομολογεί αυτόματα την παραγγελία στον ξεχωριστό μεταφορέα SKROUTZ_CARRIER_PICKUP.

5. Υποστήριξη τιμολογίων (ΑΦΜ / ΔΟΥ) και Silent Order Status

  • Καταγραφή στοιχείων τιμολόγησης B2B: Όταν η παραγγελία απαιτεί τιμολόγιο (invoice: true), το module αποθηκεύει την Επωνυμία, το Επάγγελμα, το ΑΦΜ (vat_number) και τη ΔΟΥ τόσο στον πίνακα invoice της βάσης όσο και ως ιδιωτικό μήνυμα (Private Order Message) μέσα στην καρτέλα της παραγγελίας.
  • Κατάσταση παραγγελίας χωρίς ειδοποιήσεις email: Δημιουργεί αυτόματα την κατάσταση Payment Accepted (Skroutz) με send_email = false, αποφεύγοντας τις διπλές ειδοποιήσεις προς τον πελάτη.

Οι οθόνες της εφαρμογής σε desktop και mobile

Σημείωση: Για λόγους προστασίας προσωπικών δεδομένων, όλες οι οθόνες απεικονίζουν αποκλειστικά συνθετικά δεδομένα δοκιμών (εικονικά ονόματα, τηλέφωνα 21000000xx και εικονικά ΑΦΜ).

Πίνακας καταγραφής Webhook Logs στο PrestaShop 8 με JSON payloads και κουμπιά View Order και Force Retry Καρτέλα Webhook Logs: παρακολούθηση εισερχόμενων JSON payloads σε πραγματικό χρόνο, έλεγχος κατάστασης και άμεση μετάβαση στην παραγγελία. Αλγόριθμος 5 επιπέδων ταύτισης προϊόντων ID, SKU, MPN και υπολογισμού καθαρής τιμής ΦΠΑ Αναλυτική απεικόνιση της μηχανής ταύτισης προϊόντων/συνδυασμών 5 επιπέδων και του υπολογισμού καθαρής τιμής (Net Price Engine). Προβολή εισαγόμενης παραγγελίας Skroutz Smart Cart στο PrestaShop 8 με 14ψήφιο κωδικό αναφοράς Εισαγόμενη παραγγελία στο PrestaShop 8 με τον αυθεντικό κωδικό αναφοράς Skroutz, την ομάδα Skroutz Only και τη μέθοδο Πληρωμή μέσω Skroutz. Αυτόματη ανίχνευση τιμολογίου ΑΦΜ και ΔΟΥ από το Skroutz Smart Cart payload Αυτόματη εξαγωγή στοιχείων τιμολογίου (Επωνυμία, ΑΦΜ, ΔΟΥ, Δραστηριότητα) από το JSON payload και διπλή καταχώρηση στο Back-Office. Απομόνωση μεταφορικών μέσω αποκλειστικής ομάδας πελατών Skroutz Only και εναλλαγή Store Pickup Μηχανισμός απομόνωσης μεταφορικών μέσω Customer Group Isolation και αυτόματης εναλλαγής μεταξύ Courier και Παραλαβής από Κατάστημα. Αυτόματη επέκταση πεδίου reference σε VARCHAR(32) και Validate.php override στο PrestaShop 8 Εσωτερική θωράκιση: αυτόματη επέκταση των στηλών reference σε VARCHAR(32) και override της κλάσης Validate για συμβατότητα με το PrestaShop 8. Επανεκτέλεση αποτυχημένου webhook payload με ένα κλικ μέσω της λειτουργίας Force Retry Μηχανισμός Manual Retry (reprocessLog): επανεκτέλεση αποθηκευμένου JSON payload με ένα κλικ μετά τη διόρθωση κωδικού SKU. Mobile προβολή των ρυθμίσεων του Skroutz Smart Cart Webhook σε smartphone Responsive προβολή σε κινητό: γρήγορος έλεγχος και αποθήκευση των παραμέτρων του webhook από smartphone. Mobile προβολή του ιστορικού Webhook Logs και των κουμπιών Retry και View Order Responsive προβολή σε κινητό: παρακολούθηση των εισερχόμενων παραγγελιών Skroutz και επανεκτέλεση payloads εν κινήσει.

Στο παρασκήνιο: Ασφάλεια, Idempotency και Strict Typing

  • Έλεγχος IP & CIDR Subnet Filtering (isIpAllowed): Ο SkroutzWebhookWebhookModuleFrontController επαληθεύει τη διεύθυνση REMOTE_ADDR έναντι των επίσημων IP subnets της Skroutz (π.χ. 185.6.76.0/22) με bitwise mask calculation, απορρίπτοντας κάθε μη εξουσιοδοτημένη κλήση με 403 Forbidden.
  • Προστασία Διπλοεγγραφών (Idempotency Guard): Η μέθοδος orderExists($skroutzCode) ελέγχει ταυτόχρονα τα πεδία ps_orders.reference, ps_orders.note και ps_order_payment.transaction_id ώστε καμία παραγγελία να μην καταχωρηθεί διπλή ακόμη κι αν το Skroutz επαναλάβει την αποστολή του webhook.
  • Συμβατότητα με PHP 8.1+ & PrestaShop 8 Strict Typing: Αρχικοποίηση όλων των προαιρετικών πεδίων του πίνακα ps_address σε κενό αλφαριθμητικό ("" αντί NULL) και ενσωμάτωση του override/classes/Validate.php (isName / isCustomerName) για απρόσκοπτη επεξεργασία πελατών στο Back-Office.

Η λύση

Αναπτύχθηκε το Skroutz Smart Cart Webhook v3.2.0 σε συνδυασμό με το module πληρωμής skroutzpayment, ενσωματώνοντας αυτόματη επέκταση των πεδίων reference της βάσης σε 32 χαρακτήρες, μηχανή αποφορολόγησης 6 δεκαδικών ψηφίων μέσω SpecificPrice και 5-επίπεδη αναζήτηση προϊόντων και συνδυασμών (ID, SKU, Combination SKU, MPN).

Παράλληλα, υλοποιήθηκε αυτόματη απομόνωση πελατών σε αποκλειστικό Customer Group, δυναμική εναλλαγή μεταφορέα για Store Pickup, καταχώρηση στοιχείων τιμολογίου (ΑΦΜ/ΔΟΥ) και πίνακας Webhook Logs με δυνατότητα επανεκτέλεσης (Manual Retry) με ένα κλικ.

Το αποτέλεσμα

Η ροή παραγγελιών από το Skroutz Smart Cart αυτοματοποιήθηκε πλήρως, εκμηδενίζοντας τον χρόνο χειροκίνητης καταχώρησης και εξασφαλίζοντας 100% λογιστική ταύτιση μεταξύ των παραστατικών του e-shop και των εκκαθαρίσεων του marketplace.

Τα αποθέματα ενημερώνονται ακαριαία ακόμα και σε προϊόντα με συνδυασμούς, τα τιμολόγια B2B καταγράφονται αυτόματα και η ομάδα εξυπηρέτησης διαθέτει πλήρη εικόνα και δυνατότητα επανεκτέλεσης κάθε webhook μέσα από το PrestaShop Back-Office.

Γκαλερί