Lefteris Saroukos

programmer

Wooshop Piraeus Bank Gateway

Technologies

  • WordPress Plugin
  • php
  • javascript
  • html
  • css

Description

Ένα plugin του WordPress that adds Piraeus Bank paycenter as a payment gateway for WooCommerce.

Challenges

Ο κώδικας είναι βασισμένος σε δύο υπάρχοντα plugins [https://wordpress.org/plugins/woo-payment-gateway-for-piraeus-bank/ , https://wordpress.org/plugins/woo-payment-gateway-piraeus-bank-greece/]. Όμως, ξαναγράφτηκε και τροποποιήθηκε σημαντικά για να εφαρμοστεί μια αντικειμενοστραφής προσέγγιση και προστέθηκε πλούσιος σχολιασμός.

Ο σκόπός ήταν να ξαναφτιαχτεί ώστε να είναι συμβατό με το Polylang plugin και να προσαρμόζεται ομαλά σε πολύγλωσσες σελίδες. Η δυσκολία εδώ ήταν ότι η τράπεζα ζητά τη δήλωση ενός συγκεκριμένου URL από όπου θα στέλνονται αιτήσεις στη σελίδα της, ενώ το Polylang δημιουργεί διαφορετικά URLs για κάθε μεταφρασμένη έκδοση της ιστοσελίδας (π.χ. www.example.com/gr/index.php, www.example.com/en/index.php).
Για να λυθεί αυτό, το plugin δημιουργεί τη σελίδα 'wc-piraeusbank-common-checkout'. Έπειτα, αφού ο επισκέπτης έχει συπληρώσει τη φόρμα παραγγελίας του Woocommerce (μεταφρασμένη σε οποιαδήποτε γλώσσα), ανακατευθύνεται σε αυτή την κοινή σελίδα που δημιουργήθηκε, στέλνοντας μαζί όλες τις απαραίτητες πληροφορίες από τη διαδικασία της παραγγελίας και από εκεί στέλνεται τελικά αίτημα στη σελίδα της τράπεζας. Έτσι, είναι δυνατή η δήλωση ενός και μόνο URL (/wc-piraeusbank-common-checkout/).

Μετά από κάθε συναλλαγή η ιστοσελίδα δέχεται μια απάντηση από αυτή της τράπεζας με χρήσιμες πληροφορίες για το διαχειριστή. Για παράδειγμα, σε περίπτωση αποτυχημένης ολοκλήρωσης μιας τραπεζική συναλλαγής, ένας κωδικός λάθους στέλνεται και ο διαχειριστής μπορεί να το στείλει στην τράπεζα για να μάθε την αιτία της αποτυχίας. Τα υπάρχοντα plugins απόθήκευαν τις πληροφορίες κάπου στη βάση δεδομένων χωρίς να δίνουν πρόσβαση από τον πίνακα ελέγχου του WordPress. Αυτό σήμαινε ότι σε περίπτωση που ο διαχειριστής δεν είχε απευθείας πρόσβαση στη βάση, θα ήταν αδύνατο να μάθει την αιτία της αποτυχίας. Γι αυτό, ένα custom post type δημιουργήθηκε που αποθηκεύει τις πληροφορίες της κάθε συναλλαγής με τέτοιο τρόπο που να είναι προσβάσιμες από το back-end.

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