Developers

ΞΕΚΙΝΩΝΤΑΣ ΜΕ ΤΟ EVERYPAY

EveryPay REST Service



Σχεδιασμένο για Developers

Καλύψαμε τις ανάγκες που έως σήμερα απαιτούσαν χρόνο και ήταν αρκετά πολύπλοκες ή αδύνατον να αναπτυχθούν.


Έτοιμες βιβλιοθήκες

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


Ασφάλεια συναλλαγών

Προτεραιότητα στις υπηρεσίες μας έχει η ασφάλεια των συναλλαγών.

Γενικά

Δημιουργήσαμε το API μας βασισμένο στην αρχιτεκτονική REST, όπου όλες οι αποκρίσεις επιτρέφονται ως αντικείμενα JSON.

Για εύκολες δοκιμές και ταυτόχρονα διασφάλιση της ακεραιότητας του κανονικού λογαριασμού η EveryPay υποστηρίζει δοκιμαστικά και κανονικά κλειδιά, που αντιστοιχούν στο δοκιμαστικό και το κανονικό περιβάλλον λειτουργίας. Ο χρήστης μπορεί ταυτόχρονα με την έναρξη χρήσης της κανονικής λειτουργίας να επιστρέφει πάντα στο δοκιμαστικό περιβάλλον, με τα αντίστοιχα δοκιμαστικά του κλειδιά, τα οποία δεν πραγματοποιούν πραγματική συναλλαγή.

Τα παραδείγματα που παρουσιάζονται παρακάτω μπορούν να χρησιμοποιηθούν ως έχουν στον κώδικά σας ή να τρέξουν σε τερματικό αν πρόκειται για curl. Απλά αντικαθιστάται κάθε φορά το κλειδί του παραδείγματος με το δικό σας δοκιμαστικό κλειδί.


Πιστοποίηση χρήστη

Για να πιστοποιηθείται ως χρήστης του EveryPay API, χρειάζεται να χρησιμοποιήσετε το ιδιωτικό σας κλειδί είτε του δοκιμαστικού είτε του κανονικού σας λογαριασμού. Το σύστημα χρησιμοποιεί βασική πιστοποίηση χρήσης του http (HTTP Basic authentication). Το κλειδί σας θα χρησιμεύσει ως το όνομα χρήστη που δηλώνετε κατά τη διαδικασία, ενώ θα αφήνετε κενό τον κωδικό χρήστη.

Χρειάζεται να χρησιμοποιείτε το ιδιωτικό σας κλειδί σε κάθε αίτηση πληρωμής προς το API μας. Με το δημόσιο κλειδί μπορείτε μόνο να δημιουργείτε token για χρήση σε μελλοντικές συναλλαγές - για τις οποίες και πάλι απαιτείται το ιδιωτικό σας κλειδί.

Παράδειγμα πιστοποίησης με το ιδιωτικό κλειδί:

curl https://api.everypay.gr/payments
  -u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
  // παράμετροι -d key=value
  
// σεττάρισμα του ιδιωτικού σας κλειδιού
Everypay::setApiKey('sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R');

//  αίτηση πληρωμής
$payment = Payment::create(array(
//παράμετροι key =>  value
));
Παρατηρήστε ότι στην περίπτωση κλήσης του API με curl, η άνω-κάτω τελεία δεν είναι μέρος του κλειδιού, αλλά δίνεται ως διαχωριστικό ανάμεσα στο όνομα χρήστη (κλειδί) και τον κωδικό (κενό).
    Προσοχη:
  • Παρακαλώ διατηρείται τα ιδιωτικά σας κλειδιά ασφαλή και μην τα γνωστοποιείτε σε κανέναν. Αυτά τα ιδιωτικά κλειδιά φέρουν εξαιρετικά απόρρητες πληροφορίες για το λογαριασμό σας και τις συναλλαγές σας.

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

  • Oι κωδικοί και ID των token, καρτών, πληρωμών, πελατών κλπ. καθώς και τα δημόσια και ιδιωτικά κλειδιά που φαίνονται στα παραδείγματα είναι τυχαία και δεν έχουν πραγματικό αντίκρυσμα.

Κωδικοί απόκρισης

Το JSON object της απόκρισης της υπηρεσίας περιέχει, στην περίπτωση λάθους, κάποια πεδία που χαρακτηρίζουν την συναλλαγή:

  • το πεδίο status που συμβαδίζει με τους κωδικούς κατάστασης του HTTP

  • το πεδίο code που χαρακτηρίζει μοναδικά το αποτέλεσμα της αίτησης

  • το πεδίο message που επεξηγεί άμεσα την κατάσταση στην οποία βρέθηκε η συναλλαγή

Παράδειγμα απόκρισης λανθασμένης αίτησης:

{
    "error": {
        "status": 400,
        "code": 20008,
        "message": "Card holder name is empty or too long (max. 255 chars)."
    }
}
stdClass Object
(
    [error] => stdClass Object
        (
            [status] => 400
            [code] => 20008
            [message] => Card holder name is empty or too long (max. 255 chars).
        )

)
Μην βασίζεστε μόνο στην περίπτωση που το πεδίο status έχει τιμή 2xx για να θεωρείσετε επιτυχή μια συναλλαγή. Τα παραπάνω ισχύουν όταν όντως υπάρχει σφάλμα στη συναλλαγή, ενώ σε επιτυχή συναλλαγή το πεδίο status φέρει συγκεκριμένη τιμή - για παράδειγμα οι επιστροφές και οι πληρωμές προέγκρισης φέρουν ως status ένα κατάλληλο μήνυμα που φανερώνει το αποτέλεσμα της συναλλαγής.
Περισσότερα για τους κωδικούς απόκρισης στο Πλήρες ευρετήριο ΑPI

Σχεδιασμένο για developers




Καθαρό και ορθολογικό API που σας επιτρέπει να επικεντρωθείτε στη δημιουργία και ανάπτυξη των εφαρμογών σας.

Δείτε πόσο απλό είναι:

curl https://api.everypay.gr/payments
  -u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
  -d card_number=4242424242424242
  -d expiration_year=2019
  -d expiration_month=04
  -d cvv=334
  -d amount=1037
  -d currency=eur
  -d description="Παραγγελία #4357"
  -d holder_name="John Doe"
require_once '../autoload.php';

use Everypay\Everypay;
use Everypay\Payment;

// σεττάρισμα του ιδιωτικού σας κλειδιού
Everypay::setApiKey("sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R");

//  η χρέωση της κάρτας για 10,37 ευρώ
$payment = Payment::create(array(
  'card_number' => '4242424242424242',
  'expiration_year' => '2019',
  'expiration_month' => '04',
  'cvv' => '334',
  'amount' => '1037', // το ποσό σε λεπτά
  'currency' => 'eur',
  'description' => 'Παραγγελία Νο.4357',
  'holder_name' => 'John Doe')
);

Λειτουργία Button : "Γρήγορο κουμπί"

<form class="payment-card-form" method="POST" action="/cart/step3">
    <script type="text/javascript" class="everypay-script"
        src="https://button.everypay.gr/js/button.js"
        data-key="YOUR_PUBLIC_KEY"
        data-amount="54399"
        data-description="IPHONE 5s METALLIC BLUE">
    </script>
</form>

Με το "γρήγορο κουμπί" γλιτώνετε ώρες δουλειάς αφού σας παρέχει έτοιμη τη φόρμα πληρωμής μέσα σε λίγες γραμμές κώδικα!


Δοκιμάστε το
Μάθετε περισσότερα

Ο λογαριασμός σας


To EveryPay παρέχει μία πολύ ευέλικτη πλατφόρμα διαχείρισης. Μερικές από αυτές που θα δούμε:


Ενεργοποίηση λογαριασμού - δημιουργία εταιρείας

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

  1. το ΑΦΜ της εταιρείας
  2. ένα τηλέφωνο επικοινωνίας (βεβαιωθείτε για δική σας διευκόλυνση οτι είναι το πλέον ενημερωμένο)
  3. και τον τραπεζικό λογαριασμό στον οποίο θα γίνεται κατάθεση των πληρωμών που δέχεται η επιχείρησή σας.

Θα ακολουθήσει μια σύντομη διαδικασία επαλήθευσης των στοιχείων από την EveryPay και αφ'ότου εγκριθεί μπορούν πλέον να πραγματοποιηθούν κινήσεις προς αυτή την εταιρεία.

Η εταιρία σας πλέον έχει ένα μοναδικό ζευγάρι από δημόσιο και ιδιωτικό κλειδί και μπορεί να δεχθεί πληρωμές με κάρτα εφόσον έχει ενεργοποιηθεί και πιστοποιηθεί από την EveryPay. Μέσα από τον πίνακα διαχείρισης, έχετε τη δυνατότητα να απενεργοποιήσετε τον λογαριασμό σας ανα πάσα στιγμή (μη αναστρέψιμη διαδικασία).


Δημόσιο, Ιδιωτικό και Κοινόχρηστο κλειδί

Κάθε εταιρεία χρησιμοποιεί ένα ζεύγος δημόσιου και ιδιωτικού κλειδιού. Σε ειδικότερες περιπτώσεις χρησιμομποιεί και ένα τρίτο δημόσιο κλειδί που ονομάζεται κοινόχρηστο.

Το Δημόσιο κλειδί χρησιμοποιείται για την ταυτοποίηση της εταιρείας σε κλήσεις μέσω της βιβλιοθήκης Javascript everypay.js ή της λειτουργίας button. Η μόνη λειτουργία που μπορεί να εκτελεστεί με αυτό το κλειδί είναι η έκδοση Τoken.

Το Iδιωτικό κλειδί χρησιμοποιείται για να πραγματοποιούνται όλα τα υπόλοιπα είδη των κινήσεων μέσω API, π.χ Χρέωση, Ανάκτηση δεδομένων κ.ά. Η χρήση του Ιδιωτικού κλειδιού γίνεται μέσα στον κώδικα που εκτελεί η εφαρμογή σας, δηλαδή στον server σας, οπότε θα πρέπει να το "γνωρίζει" μόνο η εφαρμογή σας.

Το Κοινόχρηστο κλειδί (Shared key) προορίζεται για χρήση από πιθανούς συνεργάτες της εταιρείας σας, οι οποίοι επιθυμουν να εκτελούν συναλλαγές μέσω του λογαριασμού σας, για λογαριασμό σας.
Με το συγκεκριμένο κλειδί μπορούν να εκετελεστούν μόνο οι ενέργειες πληρωμής και προέγκρισης πληρωμής.

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

renew
Εικόνα 1: Tα κλεδιά της εταιρείας

Δοκιμαστικές συναλλαγές

Στη διεύθυνση https://sandbox-dashboard.everypay.gr βρίσκεται η δοκιμαστική πλατφόρμα του EveryPay όπου μπορείτε να εκτέλεσετε συναλλαγές σε εικονικό περιβάλλον. Η πλατφόρμα είναι ακριβώς ίδια με την live έκδοση οπότε η μετάβαση σε αυτή γίνεται πολύ εύκολα αλλάζοντας στην εφαρμογή σας μόνο τo Δημόσιo και Ιδιωτικό κλειδί.
Προτείνεται πριν από κάθε νέα χρήση του EveryPay στην εφαρμογή σας να πραγματοποιείτε δοκιμαστικές συναλλαγές στo sandbox περιβάλλον https://sandbox-api.everypay.gr.


Πληρωμή με κάρτα (χρέωση)


Στo κομμάτι αυτό θα δούμε πώς μπορεί να πραγματοποιηθεί μία πληρωμή με κάρτα (χρέωση). Τα απαραίτητα στοιχεία που χρειάζεστε είναι ένα ενεργό token (δείτε εδώ πώς μπορείτε να δημιουργήσετε ένα token) και το ιδιωτικό κλειδί του λογαριασμού σας "PRIVATE_API_KEY".

Μπορείτε να χρησιμοποιήσετε τις έτοιμες βιβλιοθήκες μας σε PHP, όπως και τα παρακάτω παραδείγματα.

Σημαντικό: Προς αποφυγή σφαλμάτων, για τις δοκιμαστικές πληρωμές να χρησιμοποιείτε πάντα τα κλειδιά απο τον λογαριασμό σας στο sandbox https://sandbox-dashboard.everypay.gr και την διεύθυνση https://sandbox-api.everypay.gr για τις κλησεις του api.

Χρέωση κάρτας με χρήση του token

Στη σελίδα επεξεργασίας του token στον web server σας, έχετε το token που δημιουργήθηκε με χρήση της φόρμας από το everypay.js, στην προηγούμενη σελίδα.

Θυμηθείτε: το ιδιωτικό κλειδί δεν πρέπει να βρίσκεται σε δημόσια θέα παρά μόνο στον κώδικα που βρίσκεται εντός του web server σας.

Η χρέωση της κάρτας γίνεται με μια απλή κλήση:

curl https://api.everypay.gr/payments
-u sk_chgRcz8C2UvhytYlzEcS86KpAsHenMOG:
-d token=ctn_497boB69uAPNAhezFOmVuXV2
-d amount=1037
-d currency=eur
-d description="Παραγγελία Νο.7294"
require_once '../autoload.php';

use Everypay\Everypay;
use Everypay\Payment;

// σεττάρισμα του ιδιωτικού σας κλειδιού
Everypay::setApiKey('sk_chgRcz8C2UvhytYlzEcS86KpAsHenMOG');

// παίρνουμε το token από τη φόρμα της προηγούμενης σελίδας
$cardtoken = $_POST['everypayToken'];

//  η χρέωση της κάρτας για 10,37 ευρώ
$payment = Payment::create(array(
  "amount" => 1037, // το ποσό σε λεπτά (10,37€)
  "currency" => "eur", // το νόμισμα
  "token" => $cardtoken,
  "description" => "Παραγγελία Νο.7294"
));

Δημιουργία πελάτη με token κάρτας


Στo κομμάτι αυτό θα δούμε πώς μπορεί να χρησιμεύσει ενα token κάρτας για δημιουργία πελάτη. Το αντικείμενο του πελάτη με τη σειρά του μπορεί να χρησιμοποιηθεί μελλοντικά για πληρωμές προς τον συγκεκριμένο έμπορο, όπως είναι για παράδειγμα οι συνδρομητικές πληρωμές. Τα απαραίτητα στοιχεία που χρειάζεστε είναι ένα ενεργό token κάρτας (δείτε εδώ πώς μπορείτε να δημιουργήσετε ένα token) και το ιδιωτικό κλειδί του λογαριασμού σας "PRIVATE_API_KEY".

Μπορείτε να χρησιμοποιήσετε τις έτοιμες βιβλιοθήκες μας σε PHP, όπως και τα παρακάτω παραδείγματα.

Σημαντικό: Προς αποφυγή σφαλμάτων, για τις δοκιμαστικές πληρωμές να χρησιμοποιείτε πάντα τα κλειδιά απο τον λογαριασμό σας στο sandbox https://sandbox-dashboard.everypay.gr και την διεύθυνση https://sandbox-api.everypay.gr για τις κλησεις του api.

Δημιουργια πελατη με χρήση του token

Στη σελίδα επεξεργασίας του token στον web server σας, έχετε το token που δημιουργήθηκε με χρήση της φόρμας από το everypay.js, στην προηγούμενη σελίδα.

Θυμηθείτε: το ιδιωτικό κλειδί δεν πρέπει να βρίσκεται σε δημόσια θέα παρά μόνο στον κώδικα που βρίσκεται εντός του web server σας.

Η δημιουργια πελατη γίνεται με μια απλή κλήση:

curl https://api.everypay.gr/payments
-u sk_chgRcz8C2UvhytYlzEcS86KpAsHenMOG:
-d token=ctn_497boB69uAPNAhezFOmVuXV2
-d amount=1037
-d currency=eur
-d description="Παραγγελία Νο.7294"
-d create_customer=1
require_once '../autoload.php';

use Everypay\Everypay;
use Everypay\Payment;

// σεττάρισμα του ιδιωτικού σας κλειδιού
Everypay::setApiKey('sk_chgRcz8C2UvhytYlzEcS86KpAsHenMOG');

// παίρνουμε το token από τη φόρμα της προηγούμενης σελίδας
$cardtoken = $_POST['everypayToken'];

//  η χρέωση της κάρτας για 10,37 ευρώ
$payment = Payment::create(array(
  "amount" => 1037, // το ποσό σε λεπτά (10,37€)
  "currency" => "eur", // το νόμισμα
  "token" => $cardtoken,
  "description" => "Παραγγελία Νο.7294",
  "create_customer" => 1
));

Τελικά δημιουργείται ένας πελάτης με ένα μοναδικό customer token, πχ cus_b7QO01Ie4csrDAkRjXijK7aM με το οποίο μπορούμε να κάνουμε μελλοντικές πληρωμές, προς τον συγκεκριμένο έμπορο για τον οποιο δημιουργήθηκε αυτός ο πελάτης.

Πληρωμή με αυτόν τον πελάτη. Δείτε

Τι κάρτες μπορώ να χρεώσω με το EveryPay?

Το EveryPay έχει εξασφαλίσει συνεργασία με όλες τις κάρτες Visa και Mastercard.

Κουμπί


Tι είναι?

Απλά ο πιο γρήγορος, ασφαλής και εύκολος τρόπος για να ενσωματώσετε πληρωμή με κάρτα στο eshop σας. Δουλεύει με Plain Javascript και θα "φτιάξει" για εσάς μία έτοιμη φόρμα πληρωμής.


Δοκιμάστε το


Πώς δουλεύει?

Ενσωματώνοντας το κουμπί πληρωμών έχετε έτοιμη μια φόρμα οπού μπορεί να συμπληρώσει ο χρήστης τα στοιχεία της κάρτας του. Αφού τα συμπληρώσει και η κάρτα γίνει αποδεκτή θα λάβετε στην φόρμα σας το μοναδικό token, το οποίο μπορείτε να χρησιμοποιήσετε σε επόμενο βήμα για να εκτελέσετε τη χρέωση του πελάτη (πάντα με τη χρήση του Ιδιωτικού σας κλειδιού).
Ο κώδικας που χρειάζεται να γράψετε είναι ελάχιστος όσο μια γραμμή! Tο μόνο που χρειάζεται είναι να κάνετε include ένα script, με τις παραμέτρους που επιθυμείτε. Απαραίτητο είναι μόνο το δημόσιο κλειδί σας και η κλάση "everypay-script".


Γιατί να το χρησιμοποιήσω?

Η απάντηση είναι απλή και ξεκάθαρη: Ξενοιάζετε απ'όλα τα θέματα ασφαλείας και κινδύνους που εγκυμονούν οι πληρωμές με κάρτα στο e-shop σας. Αυτό συμβαίνει γιατί ουσιαστικά ο χρήστης δεν συμπληρώνει τα στοιχεία στη δικιά σας σελίδα αλλά στην ασφαλή σελίδα της EveryPay. Παράλληλα ο χρήστης ΔΕΝ εγκαταλείπει τη σελίδα του e-shop σας όπως συμβαίνει σε άλλες υπηρεσίες πληρωμών.
Αυτό για όσους είναι γνώστες και όχι μόνο σημαίνει οτι το e-shop σας δεν χρειάζεται να έχει έγκριση PCI-DSS. Προτείνεται η χρήση απλής SSL.

Ενσωματώνοντας το κουμπί πληρωμών έχετε έτοιμη μια φόρμα οπού μπορεί να συμπληρώσει ο χρήστης τα στοιχεία της κάρτας του. Αφού τα συμπληρώσει και η κάρτα γίνει αποδεκτή θα λάβετε στην φόρμα σας το μοναδικό token, με το οποίο μπορείτε να εκτελέσετε τη χρέωση του πελάτη στο επόμενο βήμα.
Ο κώδικας που χρειάζεται να γράψετε είναι ελάχιστος όσο μια γραμμή! Tο μόνο που χρειάζεται είναι να κάνετε include ένα script, με τις παραμέτρους που επιθυμείτε. Απαραίτητο είναι μόνο το δημόσιο κλειδί σας και η κλάση "everypay-script".


Συμβατότητα

Το κουμπί της EveryPay έχει δοκιμαστεί και είναι συμβατό με τους παρακάτω browsers

  • Safari ≥ 5
  • Firefox ≥ 16
  • IE 7, 8, 9, 10
  • iOS Safari
  • Android Browser
  • Android Chrome
Σημείωση: Δεν είναι απαραίτητο να συμπεριλάβετε κάποια βιβλιοθήκη της Javascript στη σελίδα σας (π.χ. jQuery, MooTools κλπ.), καθώς το button λειτουργεί με Plain Javascript.

Παράδειγμα 1

Βασική χρήση

<form class="payment-card-form" method="POST" action="/cart/step3" >
    <script type="text/javascript" class="everypay-script"
        src="https://button.everypay.gr/js/button.js"
        data-key="{YOUR_PUBLIC_KEY}"
        data-amount="9945">
    </script>
</form>

Yπενθύμιση: Αντικαταστήστε την τιμή {YOUR_PUBLIC_KEY} με το Δημόσιο κλειδί σας

Δοκιμή:


Το token σας . Τι μπορώ να κάνω με αυτό το Token?


Παράδειγμα 2

Χρήση με παραμέτρους

Εδώ περνάμε τις παραμέτρους γλώσσα εμφάνισης (locale) και περιγραφή της πληρωμής (description).

<form class="payment-card-form" method="POST" action="/cart/step3" >
    <script type="text/javascript" class="everypay-script"
        src="https://button.everypay.gr/js/button.js"
        data-key="{YOUR_PUBLIC_KEY}"
        data-amount="54399"
        data-locale="en"
        data-description="SAMSUNG E2350 METALLIC BLUE">
    </script>
</form>

Yπενθύμιση: Αντικαταστήστε την τιμή {YOUR_PUBLIC_KEY} με το Δημόσιο κλειδί σας

Δοκιμή:


Το token σας . Τι μπορώ να κάνω με αυτό το Token?


Παράδειγμα 3

Χρήση με 3D Secure

Η φόρμα και στην περίπτωση αυτή είναι ακριβώς η ίδια. Ο χρήστης και ο προγραμματιστής δεν ασχολούνται με την πιστοποίηση 3D Secure - αυτή την αναλαμβάνει η Everypay. Για να δρομολογηθεί μία πληρωμή από τον επιπλέον έλεγχο 3D Secure πρέπει ο λογαριασμός του έμπορου να το επιτρέπει.

<form class="payment-card-form" method="POST" action="/cart/step3" >
    <script type="text/javascript" class="everypay-script"
        src="https://button.everypay.gr/js/button.js"
        data-key="{YOUR_PUBLIC_KEY}"
        data-amount="54399"
        data-locale="en"
        data-description="SAMSUNG E2350 METALLIC BLUE">
    </script>
</form>

Yπενθύμιση: Αντικαταστήστε την τιμή {YOUR_PUBLIC_KEY} με το Δημόσιο κλειδί σας

Χρησιμοποιήστε μήνα λήξης της κάρτας 01, για δοκιμαστική συναλλαγή με 3D-secure.

Δοκιμή:


Το token σας . Τι μπορώ να κάνω με αυτό το Token?


Παράδειγμα 4

Υποστήριξη δόσεων.

Ο λογαριασμός του έμπορου πρέπει να υποστηρίζει δόσεις.

<form class="payment-card-form" method="POST" action="/cart/step3" >
    <script type="text/javascript" class="everypay-script"
        src="https://button.everypay.gr/js/button.js"
        data-key="{YOUR_PUBLIC_KEY}"
        data-amount="54399"
        data-max_installments="12"
        data-description="SAMSUNG E2350 METALLIC BLUE">
    </script>
</form>

Yπενθύμιση: Αντικαταστήστε την τιμή {YOUR_PUBLIC_KEY} με το Δημόσιο κλειδί σας

Χρησιμοποιήστε τον δοκιμαστικό αριθμό κάρτας 4908440000000003, για έγκυρη συναλλαγή με δόσεις.

Δοκιμή:


Το token σας . Τι μπορώ να κάνω με αυτό το Token?


Παράδειγμα 5

Δημιουργία του Button με Json Object.

  • Φορτώνουμε το button.js της Everypay όπως φαίνεται παρακάτω, έξω από την φόρμα, χωρίς δεδομένα και χωρίς κάποια κλάση.
  • Δημιουργούμε ένα javascript object (στο παράδειγμα είναι το αντικείμενο EVERYPAY_DATA) με τα δεδομένα της πληρωμής (ποσό, δημόσιο κλειδί του έμπορου κλπ).
  • Περιμένουμε να δημιουργηθεί το αντικείμενο EverypayButton μετά τη φόρτωση του button.js. Για το λόγο αυτό χρησιμοποιούμε try / catch με κάποιο χρόνο αναμονής (setInterval)
  • Δημιουργούμε μια φόρμα με συγκεκριμένο id που θα δοθεί σαν όρισμα στην συνάρτηση jsonInit. Η φόρμα δεν έχει άλλα δεδομένα παρά ένα div με κλάση button-holder. Εκεί θα δημιουργηθεί το κουμπί της πληρωμής.
<script type="text/javascript" src="https://button.everypay.gr/js/button.js"></script>
<script type="text/javascript">
            var EVERYPAY_DATA = {
                    amount: "4459",
                    description: "Button with jSON init",
                    key: "{YOUR_PUBLIC_KEY}",
                    locale: "el-GR",
                    callback: 'example5'
            }
            var loadButton = setInterval(function () {
                  try {
                    EverypayButton.jsonInit(EVERYPAY_DATA, $("#everypay-payment-form"));
                    clearInterval(loadButton);
                  } catch (err) { console.log(err) }
            }, 100);
</script>
<form class="payment-card-form" method="POST" action="/cart/step3" id="everypay-payment-form">
    <div class="button-holder"></div>
</form>

Yπενθύμιση: Αντικαταστήστε την τιμή {YOUR_PUBLIC_KEY} με το Δημόσιο κλειδί σας

Δοκιμή:


Το token σας . Τι μπορώ να κάνω με αυτό το Token?


Παράδειγμα 6

Πληρωμή στον δοκιμαστικό λογαριασμό του έμπορου (Sandbox).

Πρέπει να παρέχουμε το sandbox δημόσιο κλειδί του έμπορου.

<form class="payment-card-form" method="POST" action="/cart/step3" >
    <script type="text/javascript" class="everypay-script"
        src="https://button.everypay.gr/js/button.js"
        data-key="{YOUR_SANDBOX_PUBLIC_KEY}"
        data-amount="54399"
        data-description="SAMSUNG E2350 METALLIC BLUE",
        data-sandbox="1">
    </script>
</form>

Yπενθύμιση: Αντικαταστήστε την τιμή {YOUR_SANDBOX_PUBLIC_KEY} με το Sandbox Δημόσιο κλειδί σας

Δοκιμή:


Το token σας . Τι μπορώ να κάνω με αυτό το Token?


Παράδειγμα 7

Δικό σας κείμενο στο button.

<form class="payment-card-form" method="POST" action="/cart/step3" >
    <script type="text/javascript" class="everypay-script"
        src="https://button.everypay.gr/js/button.js"
        data-key="{YOUR_PUBLIC_KEY}"
        data-amount="54399"
        data-description="SAMSUNG E2350 METALLIC BLUE",
        data-label="Συνέχεια Πληρωμής">
    </script>
</form>

Yπενθύμιση: Αντικαταστήστε την τιμή {YOUR_PUBLIC_KEY} με το Δημόσιο κλειδί σας

Δοκιμή:


Το token σας . Τι μπορώ να κάνω με αυτό το Token?



Χρήσιμες πληροφορίες

  • Το script πρέπει να εμπεριέχεται πάντα μέσα σε μία φόρμα (form)

  • Mετά την ορθή συμπλήρωση των στοιχείων της κάρτας, η φόρμα θα στείλει το token στην επόμενη σελίδα που έχετε δηλώσει στο πεδίο action της. Εκεί μπορείτε να προχωρήσετε στην πραγματική χρέωση του ποσού που επιθυμείτε χρησιμοποιώντας το Iδιωτικό σας κλειδί.

  • Tο ποσό και η περιγραφή είναι προαιρετικά πεδία καθ'ότι η πραγματική χρέωση γίνεται στην επόμενη σελίδα σας οπου επεξεργάζεστε το token. Το ποσό πρέπει να δίνεται σε ακέραιο αριθμό και αντιπροσωπεύει τα λεπτά της χρέωσης,π.χ. 1567 για 15,67 ευρώ.

  • Οι παράμετροι που μπορείτε να χρησιμοποιήσετε βρίσκονται στον παρακάτω πίνακα:
    attribute Περιγραφή Παράδειγμα Απαιτείται
    data-key Το δημόσιο κλειδί data-key = "pk_vI1tWSHzaskrVBobzcqvwk0uYAWXR8BP"
    data-amount Το ποσό της πληρωμής σε λεπτά data-amount = "2000" (20,00€)
    data-description Η περιγραφή της πληρωμής data-description = "SAMSUNG E2350 METALLIC BLUE"
    data-locale Η γλώσσα στην οποία θα εμφανιστεί η φόρμα data-locale = "en"
    data-callback H συνάρτηση που θα χειριστεί το token data-callback = "alertTheToken"
    data-max_installments Ο μέγιστος αριθμός δόσεων για αυτή την πληρωμή. data-max_installments = "12"
    data-sandbox Θέτει το button σε δοκιμαστική λειτουργία. Σε αυτή την περίπτωση θα πρέπει να εισάγεται τα κλειδία απο τον λογαριασμό σας στο https://sandbox-dashboard.everypay.gr data-sandbox="1"

  • Εάν επιθυμείτε μετά τη λήψη του token να μην προχωρήσετε αυτόματα στην αποστολή της φόρμας (να μην γίνεται submit), μπορείτε να χρησιμοποιήσετε το χαρακτηριστικό data-callback και να δηλώσετε σε αυτό το όνομα της συνάρτησης που θα χειριστεί την απάντηση:

    <form class="payment-card-form" method="POST" action="/cart/step3" >
        <script type="text/javascript" class="everypay-script"
            src="https://button.everypay.gr/js/button.js"
            data-key="{YOUR_PUBLIC_KEY}"
            data-amount="1488"
            data-description="Custom Token"
            data-callback="alertTheToken">
        </script>
    </form>
    
    <script type="text/javascript">
        alertTheToken = function(message){
            alert('Το token είναι: ' + message.token);
        };
    </script>

    Δοκιμή:

Έχουμε το Token. Και τώρα?

Με το token που εκδόσαμε μπορούμε να προχωρήσουμε σε:

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

3D Secure


Tι είναι;

Η EveryPay δέχεται την αίτηση για πληρωμή με την κάρτα του χρήστη και το Δημόσιο Κλειδί του εμπόρου και ανιχνεύει αν η αυτή η κάρτα είναι εγγεγραμμένη στην υπηρεσία 3d-secure. Αν ναι, τότε εκτελεί την διαδικασία πιστοποίησης όπου ζητείται από τον χρήστη να πληκτρολογήσει τον κωδικό 3d-secure που διαθέτει, διαφορετικά προχωράει χωρίς την εν λόγο πιστοποίηση.

Σε κάθε περίπτωση, αν τα στοιχεία της κάρτας είναι σωστά και η διαδικασία πιστοποίησης 3d-secure είτε δεν χρειάζεται είτε ολοκληρώθηκε επιτυχώς, επιστρέφεται στον έμπορο ένα token κάρτας στο callback url που έχει δηλωθεί στην αρχική φόρμα.

Στη συνέχεια το token κάρτας μπορεί να χρησιμοποιηθεί σε νέα αίτηση που περιέχει αυτή τη φορά το Ιδιωτικό Κλειδί του εμπόρου, για:

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


Πως να το χρησιμοποιήσετε;

    1 Η εφαρμογή του έμπορου πρέπει να περιέχει μία φόρμα με τα εξής στοιχεία:

    attribute Περιγραφή Παράδειγμα Απαιτείται
    card_number Ο αριθμός της κάρτας (16 ψηφια) <input name="card_number">
    expiration_month Μήνας λήξης της κάρτας (2 ψηφία). <input name="expiration_month">
    expiration_year Έτος λήξης της κάρτας (4 ψηφία). <input name="expiration_year">
    cvv Ο τριψήφιος κωδικός ασφαλείας στο πίσω μέρος της κάρτας. <input name="cvv">
    holder_name To όνομα κατόχου της κάρτας. <input name="holder_name">
    public_key Το δημόσιο κλειδί του έμπορου. (hidden field) <input type="hidden" name="public_key" value="pk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R">
    amount Το ποσό της συναλλαγής σε cents (χωρίς σημεία στίξης π.χ. 1099 αντί 10,99). (hidden field) <input type="hidden" name="amount" value="1099">
    callback_url Το url όπου θα λάβει το ο χρήστης το token. (hidden field) <input type="hidden" name="callback_url" value="https://www.myshop.gr/tds-callback">
    md Πεδίο με παράμετρους του χρήστη που θα του επιστραφούν μετά την επιτυχή ολοκλήρωση της διαδικασίας πιστοποίησης. (hidden field) <input type="hidden" name="md" value="ORDER189500">


    2 Στη συνέχεια η EveryPay εκτελεί την διαδικασία της πιστοποίησης της κάρτας με την υπηρεσία του πρωτόκολλου 3d-secure


    3 Στο τέλος μιας επιτυχημένης διαδικασίας πιστοποίησης επιτρέφεται το token της κάρτας (πχ ctn_QEbq4jdOkAhNebqDL0vynxFc) και οι παράμετροι που τυχόν δόθηκαν στο πεδίο md. Ο τελικός χρήστης δεν γνωρίζει αν η κάρτα αυτή χρειάστηκε να πιστοποιηθεί και με τη διαδικασία 3d-secure - από την αντίστοιχη υπηρεσία του οργανισμού της κάρτας.


    4 Τώρα πρέπει να κάνετε μία κλήση στο API (https://api.everypay.gr/payments) με το πρόσφατα ανακτημένο token της κάρτας (είναι έγκυρο για 15 λεπτά), το ποσό της πληρωμής, και φυσικά με το ιδιωτικό πια κλειδί του έμπορου.

    Συμβουλευτείτε το πλήρες ευρετήριο της υπηρεσίας API για παράδειγμα πληρωμής με χρήση token κάρτας.




Παραδειγμα λήψης token με απλή φορμα

<form action="https://button.everypay.gr/tds" method="post" id="payment-form">
    <div class="form-row">
        <label>Αριθμός κάρτας</label>
        <input type="text" maxlength="16" autocomplete="off" name="card_number"/>
    </div>
    <div class="form-row">
        <label>Όνομα κατόχου</label>
        <input type="text" maxlength="30" autocomplete="off" name="holder_name"/>
    </div>
    <div class="form-row">
        <label>CVV</label>
        <input type="text" maxlength="3" autocomplete="off" name="cvv"/>
    </div>
    <div class="form-row">
        <label>Ημερομηνία Λήξης</label>
        <select name="expiration_month"/>
            <option value="1">1</option>
            <option value="2">2</option>
            ...
            <option value="12">12</option>
        </select>
        <span> / </span>
        <select name="expiration_year"/>
            <option value="2015">2015</option>
            <option value="2016">2016</option>
            <option value="2017">2017</option>
            <option value="2018">2018</option>
            <option value="2019">2019</option>
        </select>
    </div>
    <input type="hidden" name="public_key" value="{PUBLIC_KEY}"/>
    <input type="hidden" name="amount" value="{AMOUNT}"/>
    <input type="hidden" name="callback_url" value="{CALLBACK_URL}"/>

    <button>Πληρωμή</button>
</form>
    Προσοχη:
  • Αντικαταστήστε την τιμή {PUBLIC_KEY} με το Δημόσιο κλειδί σας.

  • Αντικαταστήστε την τιμή {AMOUNT} με το ποσό της πληρωμής σε cents δηλαδή 12000 για 120,00

  • Αντικαταστήστε την {CALLBACK_URL} με το url όπου θα κατευθυνθεί το νέο token κάρτας για την μετέπειτα ολοκλήρωση της πληρωμής. Πιθανόν να είναι το url του δικού σας ιστότοπου.

Everypay.js


Στη σελίδα αυτή θα δούμε τι ακριβώς είναι και πώς λειτουργεί η βιβλιοθήκη everypay.js

Εισαγωγή του script στη σελίδα σας

Η φόρτωση της βιβλιοθήκης Javascript μπορεί να γίνει μέσα στο <head> της σελίδας αλλά προτείνεται να φορτώνεται ακριβώς πριν κλείσει η ετικέτα <body>, και αυτό γίνεται για βελτιστοποίηση της ταχύτητας φορτώματος της σελίδας σας. To javascript αρχείο πρέπει να φορτώνεται από τους servers του EveryPay για να εξασφαλίζεται οτι η έκδοση είναι η πλέον ενημερωμένη.

<script type="text/javascript" src="https://js.everypay.gr/everypay.js"></script>

setPublicKey

Η μέθοδος setPublicKey('PUBLIC_API_KEY') απαιτείται πριν από τη χρήση του Everypay.js για να ταυτοποιηθεί ο λογαριασμός που θα χρησιμοποιήσετε για τις συναλλαγές σας με το EveryPay. Όλα τα κλειδιά δημόσια και ιδιωτικά μπορείτε να τα δείτε στη διαχείριση του λογαριασμού σας.

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

<script type="text/javascript">

    /* Δήλωση του δημόσιου κλειδιού */
    Everypay.setPublicKey('pk_vI1tWSHzaskrVBobzcqvwk0uYAWXR8BP');

    /* Ενεργοποίηση του δοκιμαστικού περιβάλλοντος */
    Everypay.setSandbox();

</script>

Η μέθοδος createToken

Η μέθοδος αυτή δημιουργεί ένα token που έχει ισχύ για 15 λεπτά και μόνο στον λογαριασμό που έχει ταυτοποιηθεί (βλ. setPublicKey). Τα ορίσματα που πρέπει να δώσουμε είναι δύο. Το πρώτο είναι ένα αντικείμενο με τα στοιχεία της κάρτας (όπως έχουν συμπληρωθεί στη φόρμα) και το δεύτερο το όνομα της μεθόδου callback που θα εκτελεστεί μετά το τέλος της createToken.


Χρήση της createToken

<script type="text/javascript">
    Everypay.createToken({
        holder_name: 'John Doe',
        card_number: '4242424242424242',
        cvv: '123',
        expiration_month: '03',
        expiration_year: '2015',
        amount: '1050'
    }, handleTokenResponse);
</script>


Tα πεδία της κάρτας που πρέπει να στείλουμε για να πραγματοποιήσουμε μια ασφαλή συναλλαγή φαίνονται στον παρακάτω πίνακα:

πεδίο περιγραφή
card_number Ο αριθμός της κάρτας
cvv Ο τριψήφιος αριθμός στο πίσω μέρος της κάρτας
expiration_month Μήνας λήξης της κάρτας
expiration_year Έτος λήξης της κάρτας
holder_name Το όνομα κατόχου της κάρτας
amount Το ποσό της πληρωμής σε cents

Εναλλακτική χρήση της createToken

Όπως φαίνεται και στο παράδειγμα στη σελίδα της φόρμας πληρωμής, μπορεί να "περαστεί" μία ολόκληρη φόρμα ως πρώτο όρισμα της createToken. Για το σκοπό αυτό μπορεί να χρησιμοποιήθεί απλή javascript ή μία βιβλιοθήκη όπως η jQuery. Για παράδειγμα:

<script type="text/javascript">
    //απλή javascript
    var form = document.forms['payment-form'];
    //ή επιλογή με jQuery
    var form = jQuery('#payment-form');

    Everypay.createToken(form, handleTokenResponse);
</script>

Η συγκεκριμένη χρήση της createToken προϋποθέτει πως όλα τα πεδία που βρίσκονται στη φόρμα πληρωμής έχουν το χαρακτηριστικό data-card και αυτό έχει την σωστή τιμή σύμφωνα με τον παραπάνω πίνακα. Για παράδειγμα το πεδίο με τον αριθμό της κάρτας θα πρέπει να είναι ορισμένο ως εξής:

<input type="text" autocomplete="off" data-card="card_number">


H μέθοδος handleTokenResponse

Το δεύτερο όρισμα όπως αναφέρθηκε είναι η μέθοδος που θα χειριστεί την απάντηση για τη δημιουργία του token από τους servers της EveryPay. Η λειτουργία που πρέπει να εκτελεί είναι να υποβάλει τη φόρμα στην επόμενη σελίδα για περαιτέρω επεξεργασία με χρήση του token, αφού πρώτα έχει προσθέσει ένα hidden πεδίο με το token που πήρε σαν απάντηση. Σε περίπτωση που η δημιουργία του token δεν ήταν επιτυχημένη απλώς δείχνει το μήνυμα του λάθους.

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

<script type="text/javascript">
function handleTokenResponse(status, response) {
    var $form = $("#payment-form");
    if (response.error) {
        ...
        /* προβολή του λάθους στο χρήστη */
        $form.find(".form-error").html(response.error.message).show();
        $form.find('button').prop('disabled', false);
    } else {
        var token = response['token'];
        /* προσθήκη του token στη φόρμα */
        $form.append($('<input type="hidden" name="everypayToken"/>').val(token));
        /* αποστολή */
        $form.unbind('submit').submit();
    }
}
</script>

Περίπτωση 1. Η επιτυχής λήψη του token

{
    "token": "crd_bed96ed62ad862659a9379b8a7decf7c", /* Το id του token*/
    "is_used": false, /* δείχνει εάν το token αυτό έχει ξαναχρησιμοποιηθεί*/
    "has_expired": false, /* δείχνει αν το token έχει λήξει */
    "date_requested": "06-12-2012 15:24:42", /* ημερομηνία δημιουργίας */
    "card": { /* στοιχεία της κάρτας */
        "expiration_month": "04",
        "expiration_year": "2014",
        "last_four": "4242",
        "type": "Visa",
        "holder_name": null,
        "supports_installments": false,
        "max_installments": 0
    }
}

Περίπτωση 2. Εσφαλμένη απάντηση

{
    "error": {
        "status": 400,
        "code": 20001,
        "message": "Provide a valid expiration year for the card."
    }
}

Όλοι οι κωδικοί σφαλμάτων βρίσκονται εδώ


Βοηθητικές μέθοδοι

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

μέθοδος περιγραφή τύπος ορίσματος επιστρέφει
validateCardNumber Έλεγχος εγκυρότητας αριθμού κάρτας string boolean
validateCVV Έλεγχος εγκυρότητας του τριψήφιου πεδίου CVV string boolean
validateExpiry Έλεγχος εγκυρότητας ημερομηνίας λήξης string month, string year boolean
cardType Επιστρέφει τον τύπο της κάρτας string "Visa", "MasterCard", "American Express", "Discover", "Diners Club", "JCB", "Unknown"

Παραδείγματα κλήσης

<script type="text/javascript">
/* Αριθμός κάρτας */
Everypay.validateCardNumber('4012888888881881')     //true
Everypay.validateCardNumber('4012-88888888-1881')   //true
Everypay.validateCardNumber('4012-8888-8888-1881')  //true
Everypay.validateCardNumber('12345678')             //false
Everypay.validateCardNumber('a-card-number')        //false
Everypay.validateCardNumber('4242-1234-1232-1234')  //false


/* Αριθμός CVV */
Everypay.validateCVV('443') // true
Everypay.validateCVV('3')   // false


/* Ημερομηνία λήξης */
Everypay.validateExpiry('04', '17')      // false
Everypay.validateExpiry('04', '11')      // false
Everypay.validateExpiry('04', '2019')    // true
Everypay.validateExpiry(4, 2019)         // true


/* Τύπος κάρτας */
Everypay.cardType('4012-8888-8888-1881')  // "Visa"
Everypay.cardType('5555555555554444')     // "Mastercard"
Everypay.cardType('1234')                 // "Unknown"
</script>

getToken

H μέθοδος αυτή μπορεί να χρησιμοποιηθεί για τη λήψη πληροφοριών σχετικά με ένα ήδη δημιουργημένο token. Οι πληροφορίες που επιστρέφονται είναι ίδιες με το αντικείμενο στην createToken (βλ.παραπάνω περίπτωση 1).


Παράδειγμα χρήσης

<script type="text/javascript">
Everypay.getToken(token, function(status, response){
    if (response.error){
        alert(response.error.message);
    } elseif (!response.used) {
        alert('To token αυτό είναι ακόμα ενεργό');
    } elseif (response.used) {
        alert('To token αυτό έχει ήδη χρησιμοποιηθεί');
    }
});
</script>

Δημιουργία φόρμας πληρωμής


Στη σελίδα αυτή θα δούμε πώς μπορείτε να δημιουργήσετε μία λειτουργική φόρμα πληρωμών σε μια σελίδα στο site σας. Για λόγους συντομίας το όνομα του site σας θα αναφέρεται ως yourshop.com.

Απαραίτητη προϋπόθεση πριν ξεκινήσετε είναι να έχετε στο λογαριασμό σας τουλάχιστον μία ενεργοποιημένη και διαπιστευμένη εταιρεία, από την οποία χρειαζόμαστε το Δημόσιο και Ιδιωτικό κλειδί για χρήση με το API. Στο παράδειγμά μας το δημόσιο κλειδί θα αναφέρεται ως 'PUBLIC_KEY' και το ιδιωτικό ως 'SECRET_KEY'.

Σημαντικό: Προς αποφυγή σφαλμάτων, για τις δοκιμαστικές πληρωμές να χρησιμοποιείτε πάντα τα κλειδιά απο τον λογαριασμό σας στο sandbox https://sandbox-dashboard.everypay.gr και την διεύθυνση https://sandbox-api.everypay.gr για τις κλησεις του api.
Tip: Στον παρακάτω σύνδεσμο θα βρείτε πληροφορίες για τη λειτουργία του κουμπιού το οποίο σας παρέχει έτοιμο όλο τον παρακάτω κώδικα. Με το script αυτό έχετε έτοιμη την φόρμα πληρωμής στο site σας γράφοντας μόνο λίγες σειρές κώδικα!


Βήμα 1. Η φόρμα με HTML

Στο βήμα αυτό θα δούμε τον HTML κώδικα που απαιτείται για την δημιουργία της φόρμας. Αυτός ο κώδικας θα περιέχεται στη σελίδα πληρωμής της σελίδας σας π.χ. yourshop.com/pay-step1

<form action="/yourshop.com/payment-step-2" method="POST" id="payment-form">
    <div class="form-row">
        <label>Αριθμός κάρτας</label>
        <input type="text" maxlength="16" autocomplete="off" data-card="card_number"/>
    </div>
    <div class="form-row">
        <label>Όνομα κατόχου</label>
        <input type="text" maxlength="30" autocomplete="off" data-card="holder_name"/>
    </div>
    <div class="form-row">
        <label>CVV</label>
        <input type="text" maxlength="3" autocomplete="off" data-card="cvv"/>
    </div>
    <div class="form-row">
        <label>Ημερομηνία Λήξης</label>
        <select data-card="expiration_month"/>
            <option value="1">1</option>
            <option value="2">2</option>
            ...
            <option value="12">12</option>
        </select>
        <span> / </span>
        <select data-card="expiration_year"/>
            <option value="2015">2015</option>
            <option value="2016">2016</option>
            <option value="2017">2017</option>
            <option value="2018">2018</option>
            <option value="2019">2019</option>
        </select>
    </div>
    <input type="hidden" data-card="amount" value="10001"/>
    <div class="form-error" style="display:none"></div>
    <button>Πληρωμή</button>
</form>

Σημαντικές παρατηρήσεις:


  1. Στη φόρμα δεν υπάρχει κουμπί τύπου "submit" για να αποφύγουμε τυχόν άμεση αποστολή των στοιχείων της κάρτας.
  2. Το ποσό της πληρωμής, καθώς και τα στοιχεία της κάρτας (όνομα κατόχου, αριθμός κάρτας, ημερ/νία λήξης και κωδικός ασφαλείας CVV) είναι υποχρεωτικά πεδία. Η πλήρης λίστα με όλα τα πεδία που μπορούν να χρησιμοποιηθούν βρίσκεται στο ευρετήριο του everypay.js.
  3. Κανένα από τα πεδία δεν πρέπει να έχει όνομα (attribute name) για να αποφευχθεί το 'ποστάρισμά' του στον server σας. Αντ'αυτού χρησιμοποιείται η ετικέτα "data-card" που χαρακτηρίζει τα πεδία.

Τα στοιχεία της κάρτας που θα αποσταλούν στον server της EveryPay πρέπει να αποστέλλονται μέσα από το πρωτόκολλο SSL, ωστόσο επειδή δεν αποθηκεύονται στην εφαρμογή σας δεν χρειάζεται να πάρετε πιστοποίηση PCI-DSS. Εάν χρησιμοποιείτε και τους προτεινόμενους τρόπους από το ΕveryPay, τότε δεν χρειάζεται να έχετε κάποια πιστοποίηση SSL στον δικό σας server.

Το επιθυμητό αποτέλεσμα είναι μία φόρμα όπως την παρακάτω εικόνα.

payment-form-everypay



Η μορφοποίηση με css μπορεί να γίνει κατά βούληση χωρίς να επηρεάσει το αποτέλεσμα και τη λειτουργικότητα της φόρμας. Μπορείτε να την εμφανίσετε ακόμη και σε popup modal.



Βήμα 2. Οι λειτουργίες Javascript

Πρώτα θα πρέπει να φορτωθεί η βιβλιοθήκη Javascript του EveryPay. Η φόρτωση μπορεί να γίνει μέσα στην ετικέττα <head> της σελίδας αλλά προτείνεται να φορτώνεται στο τέλος, ακριβώς πριν το τέλος της ετικέττας <body> για βελτιστοποίηση της ταχύτητας φορτώματος. To javascript αρχείο θα πρέπει να φορτώνεται από τους servers του EveryPay για να εξασφαλίζεται οτι η έκδοση είναι η τελευταία καθώς και η αυθεντικότητά του.

Σημείωση: Στο παράδειγμά μας χρησιμοποιούμε την βιβλιοθήκη jQuery για ευκολία. Εσείς δεν είναι απαραίτητο να συμπεριλάβετε κάποια βιβλιοθήκη στη σελίδα σας (π.χ. jQuery, MooTools κλπ.), καθώς η βιβλιοθήκη everypay.js λειτουργεί με Plain Javascript.
<script type="text/javascript" src="https://js.everypay.gr/everypay.js"></script>

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

<script type="text/javascript">

    /* Δήλωση του δημόσιου κλειδιού */
    Everypay.setPublicKey('pk_vI1tWSHzaskrVBobzcqvwk0uYAWXR8BP');

    /* Ενεργοποίηση του δοκιμαστικού περιβάλλοντος */
    Everypay.setSandbox();

</script>

Η μέθοδος Εverypay.setPublicKey(..) χρησιμοποιείται για να γνωστοποιήσουμε στο EveryPay ποιός λογαριασμός/εταιρεία θα χρησιμοποιηθεί στις επόμενες κινήσεις. Αντικαταστείστε την τιμή pk_vI1tWSHzaskrVBobzcqvwk0uYAWXR8BP με το δικό σας Δημόσιο Κλειδί.


Βήμα 3. Δημιουργία token

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

H δημιουργία του token γίνεται όταν ο χρήστης πατήσει το κουμπί της πληρωμής που βρίσκεται στη φόρμα. Γι'αυτό το σκοπό γίνεται χρήση των event handlers της Javascript. Στο παρακάτω παράδειγμα χρησιμοποιούμε τη βιβλιοθήκη jQuery και "πιάνουμε" το event click του κουμπιού Πληρωμή που υπάρχει στη φόρμα.


Αποστολή των στοιχείων της κάρτας και λήψη του token

<script type="text/javascript">
$(document).ready(function() {
    $('#payment-form').submit(function(event){
        event.preventDefault();
        var $form = $(this);

        /*  απενεργοποίηση όλων των κουμπιών της φόρμας */
        $form.find('button').prop('disabled', true);
        /*  σβήσιμο των λαθών που υπάρχουν από τυχόν προήγουμενες αποτυχημένες προσπάθειες  */
        $form.find(".form-error").html('').hide();
        /*  δημιουργία του token */
        Everypay.createToken($form, handleTokenResponse);
        /*  Ακύρωση ποσταρίσματος της φόρμας */
        return false;
    });
});
</script>

Όπως φαίνεται χρησιμοποιούμε την μέθοδο everypay.createToken(arg1, arg2).

arg1: Ως πρώτο όρισμα δίνουμε την φόρμα η οποία περιέχει τα πεδία με τα στοιχεία της κάρτας. Εναλλακτικά μπορούμε να δώσουμε ένα αντικείμενο με τα στοιχεία της κάρτας ως εξής:

var card_details = {
    holder_name: $('[data-card="holder_name"]').val(),
    card_number: $('[data-card="card_number"]').val(),
    cvv: $('[data-card="cvv"]').val(),
    expiration_month: $('[data-card="expiration_month"]').val(),
    expiration_year: $('[data-card="expiration_year"]').val(),
    amount: $('[data-card="amount"]').val()
}
Everypay.createToken(card_details, handleTokenResponse);

arg2: To δεύτερο όρισμα (handleTokenResponse) είναι η μέθοδος callback που θα χειριστεί την απάντηση που θα λάβετε από το EveryPay. Όταν η μέθοδος createToken ολοκληρωθεί θα εκτελεστεί η μέθοδος handleTokenResponse. Η απάντηση που θα λάβετε από την δικιά μας υπηρεσία είναι ένα αντικείμενο με διάφορα πεδία. Εάν προκύψει κάποιο σφάλμα (π.χ. η κάρτα έχει λήξει) τότε το αντικείμενο αυτό περιέχει ένα πεδίο error με περισσότερες λεπτομέρειες αλλιώς ένα αντικείμενο με τις λεπτομέρειες του token.


Περίπτωση 1. Η επιτυχής λήψη του token

{
    "token": "crd_bed96ed62ad862659a9379b8a7decf7c", /* Το id του token*/
    "used": false, /* δείχνει εάν το token αυτό έχει ξαναχρησιμοποιηθεί*/
    "has_expired": false, /* δείχνει αν το token έχει λήξει */
    "date_requested": "06-12-2012 15:24:42", /* ημερομηνία δημιουργίας */
    "card": { /* στοιχεία της κάρτας */
        "expiration_month": "04",
        "expiration_year": "2014",
        "last_four": "4242",
        "type": "Visa",
        "holder_name": null
    }
}

Περίπτωση 2. Εσφαλμένη απάντηση

{
    "error": {
        "status": 400,
        "code": 20001,
        "message": "Provide a valid expiration year for the card."
    }
}

Όλοι οι κωδικοί των σφαλμάτων βρίσκονται εδώ


Βήμα 4. Υποβολή της φόρμας στην επόμενη σελίδα σας

  • Εάν η απάντηση που λάβατε στο προηγούμενο βήμα είναι αρνητική, τότε μπορείτε να κάνετε alert στον χρήστη την αιτία του λάθους.
  • Εάν η απάντηση είναι επιτυχής (το token δημιουργήθηκε), τότε θα προστεθεί ένα πεδίο με το token στη φόρμα και θα γίνει υποβολή της φόρμας στην επόμενη σελίδα του server σας για περαιτέρω επεξεργασία. Εδώ την σελίδα επεξεργασίας θα την ονομάζουμε yourshop.com/pay-step2.

Διαχείριση της απάντησης από το EveryPay

<script type="text/javascript">
function handleTokenResponse(status, response) {
    var $form = $('#payment-form');

    if (response.error) {
        /* προβολή του λάθους στο χρήστη */
        $form.find(".form-error").html(response.error.message).show();
        /* επανενεργοποίηση των κουμπιών της φόρμας */
        $form.find('button').prop('disabled', false);
    } else {
        var token = response.token;
        //* προσθήκη του token στη φόρμα */
        $form.append($('<input type="hidden" name="everypayToken"/>').val(token));
        /* αποστολή της φόρμας*/
        $form.unbind('submit').submit();
    }
}
</script>

Σημείωση: To μόνο στοιχείο που ουσιαστικά χρειάζεται να 'περάσει' στην επόμενη σελίδα είναι το token. Τα υπόλοιπα όπως προαναφέραμε δεν έχουν όνομα οπότε και δεν θα 'ποσταριστούν'.

Τι μπορούμε να κάνουμε με αυτό το Token?

Με το token που εκδόσαμε μπορούμε να προχωρήσουμε σε:

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

Webhooks


Tι είναι;

Είναι η δυνατότητα που παρέχεται στον έμπορο να ειδοποιείται σε url της επιλογής του για κάποιο συμβάν όπως είναι η πραγματοποίηση πληρωμής από έναν πελάτη προς τον ίδιο ή η πραγματοποίηση επιστροφής πάνω σε μία πληρωμή. Ο έμπορος πρέπει να δηλώσει στην σχετική φόρμα που βρίσκεται στον λογαριαμό του, στο περιβάλλον Dashboard (https://dashboard.everypay.gr), ένα url στο οποίο θα αποστέλλεται με μέθοδο PUT η απάντηση που δίνει το API της EveryPay μετά από τις αντίστοιχες λειτουργίες.

Τα συμβάντα που μπορεί να επιλέξει ο έμπορος για τα webhooks είναι:

  • Νέα πληρωμή
  • Επιστροφή ποσού

Για παράδειγμα, μετά από μια επιτυχημένη πληρωμή το API θα αποστείλει - με μέθοδο PUT - στο url που δήλωσε ο έμπορος ένα JSON string, με τα εξής στοιχεία:

{
    "token": "pmt_ETF9EaZURr3l6mC8n6TzClBS",
    "date_created": "2015-11-09T19:03:58+0200",
    "description": "Order #A-777",
    "currency": "EUR",
    "status": "Captured",
    "amount": 10480,
    "refund_amount": 0,
    "fee_amount": 272,
    "payee_email": null,
    "payee_phone": null,
    "refunded": false,
    "refunds": [],
    "installments_count": 0,
    "installments": [],
    "card": {
        "expiration_month": "08",
        "expiration_year": "2016",
        "last_four": "0003",
        "type": "Visa",
        "holder_name": "John Doe",
        "supports_installments": false,
        "max_installments": 0
    }
}

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


Πως να το χρησιμοποιήσετε;

Ο έμπορος ανοίγει τη σελίδα των ρυθμίσεων του λογαριασμού του, από το περιβάλλον του Dashboard (https://dashboard.everypay.gr) - αφού έχει εισέλθει κανονικά στο σύστημα με τα διαπιστευτήριά του. Απο τη σελίδα των ρυθμίσεων του λογαριασμού του επιλέγει Webhooks.



Εκεί μπορεί να προσθέσει όσα webhooks θέλει, από το αντίστοιχο κουμπί, όπου δηλώνει το url και το είδος των συμβάντων για το συγκεκριμένο webhook.



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




Παραδειγμα κώδικα στον server του έμπορου

Στο url που έδωσε ο έμπορος για τα webhooks θα μπορούσε να τρέχει απλά ένας server που δέχεται την PUT αιτηση με το JSON string, και να το αποθηκεύει σαν κείμενο ή να το αποδομεί στα επιμέρους τμήματά του και να τα χειρίζεται όπως θέλει ο έμπορος.

Ένα παράδειγμα τέτοιου κώδικα σε PHP.
<?php
//retrieve data from PUT request
$input = @file_get_contents("php://input");

//either just save entire string
file_put_contents("/tmp/newEvent.txt", $input);

//or retrieve the token and use it as an id somewhere
$payload = json_decode($input);
file_put_contents("/tmp/newEvent".$payload->token.".txt", $input);
        

Πρόσθετα (Plugins)


Στη σελίδα αυτή θα βρείτε έτοιμα plugins για άμεση χρήση στο e-commerce site ή το e-shop σας. Απλά εγκαθιστάτε την αντίστοιχη έκδοση που επιθυμείτε, παραμετροποιείτε το λογαριασμό σας και είστε έτοιμοι!

Μέσα σε κάθε αρχείο θα βρείτε αναλυτικές οδηγίες για την εγκατάσταση και παραμετροποίησή του plugin.


Prestashop 1.4.x Github Download Zip
Prestashop 1.5.x Github Download Zip

Για σχετικές απορίες ή συνεισφορά στην ανάπτυξη των Plugin μπορείτε να επικοινωνήσετε με την ομάδα υποστήριξης στο support@everypay.gr



Βιβλιοθήκες


Στη σελίδα αυτή θα βρείτε τις βιβλιοθήκες που θα σας βοηθήσουν να χρησιμοποιήσετε την υπηρεσία του EveryPay στην δικιά σας εφαρμογή. Σας υπενθυμίζουμε πως εάν χρησιμοποιείτε ήδη κάποια έτοιμη πλατφόρμα όπως Magento, Prestashop, OsCommerce κλπ. μπορείτε να ενσωματώσετε ακόμη πιο έυκολα το EveryPay εάν εγκαταστήσετε το αντίστοιχο πρόσθετο(plugin) που θα βρείτε στη σελίδα των πρόσθετων.

Μέσα σε κάθε αρχείο θα βρείτε αναλυτικές οδηγίες για τη χρήση της κάθε βιβλιοθήκης.


everypay-php library Github Αρχείο Zip
everypay-virtuemart Github Αρχείο Zip
everypay-woocommerce-addon Github Αρχείο Zip
everypay-ruby Github Αρχείο Zip
everypay_prestashop_1_4_x Github Αρχείο Zip
everypay_prestashop_1_5_x Github Αρχείο Zip

Για σχετικές απορίες ή συνεισφορά στην ανάπτυξη των βιβλιοθηκών μπορείτε να επικοινωνήσετε με την ομάδα υποστήριξης στο support@everypay.gr.


Δοκιμές και έλεγχος ορθότητας


Τι πρέπει να δοκιμάσετε στην εφαρμογή σας

Όταν χρησιμοποιείτε το everypay.js πρέπει να ελέγξετε τα παρακάτω:
  • Οι τιμές των πεδίων που βρίσκονται στη φόρμα πληρωμής "περνιούνται" σωστά στην μέθοδο createToken
  • Σύμφωνα με την απάντηση που λαμβάνετε από την createToken, εκτελούνται οι επιθυμητές λειτουργίες (ανακατεύθυνση ή προβολή του σφάλματος)
  • Από τη φόρμα της κάρτας, μόνο το πεδίο token "ποστάρεται" στην επόμενη σελίδα σας
  • Τα υπόλοιπα στοιχεία (αριθμός κάρτας, ημερομηνία λήξης και CVV) δεν μεταδίδονται πουθενά

Στον web server της εφαρμογής σας, ελέγξτε τα παρακάτω:
  • Όλες οι τιμές που λαμβάνετε στις σελίδες επεξεργασίας (π.χ. yourshop.com/payment-step2) είναι οι επιθυμητές και αναμενόμενες
  • Οι διάφορες περιπτώσεις των λαθών χειρίζονται αναλόγως από την εφαρμογή σας

Αριθμοί καρτών για δοκιμές

Μπορείτε να χρησιμοποιείτε τους παρακάτω αριθμούς καρτών για να εκτελέσετε δοκιμαστικά σενάρια συναλλαγών

Αριθμός κάρτας Τύπος κάρτας Χρήση
4888137257116730 Visa Προκαθορισμένα σενάρια
4916915111701144 Visa Προκαθορισμένα σενάρια
4853451426120387 Visa Προκαθορισμένα σενάρια
5206140271967502 MasterCard Προκαθορισμένα σενάρια
5217925525906273 MasterCard Επιτυχής συναλλαγή
4556390755719395 Visa Επιτυχής συναλλαγή
4908440000000003 Visa Επιτυχής συναλλαγή με δόσεις

Παρακάτω αναλύονται τα σενάρια με κάρτες που επιστρέφουν συγκεκριμένα λάθη ώστε να μπορείτε να ελέγξετε τη συμπεριφορά της εφαρμογής σας σε ανάλογες περιπτώσεις.

Ενέργεια δημιουργίας πληρωμής

Αριθμός κάρτας Status Κωδικός Περιγραφή
4888137257116730 500 99999 Unexpected error
4853451426120387 502 40013 Payment failed in remote gateway
4916915111701144 200   Θα δημιουργήσει μια επιτυχής πληρωμή η οποία σε περίπτωση refund θα αποτύχει με κωδικό λάθους 502.
5206140271967502 200   Θα δημιουργήσει μια επιτυχής πληρωμή η οποία σε περίπτωση επιστροφής (refund) θα αποτύχει με κωδικό λάθους 500.
Οποιαδήποτε άλλη έγκυρη κάρτα 200   Θα δημιουργήσει μια επιτυχής πληρωμή.

Ενέργεια προέγκρισης πληρωμής

Αριθμός κάρτας Status Κωδικός Περιγραφή
4888137257116730 500 99999 Unexpected error
4853451426120387 502 40013 Payment failed in remote gateway
4916915111701144 200   Θα δημιουργήσει μια επιτυχής προέγκριση η οποία σε περίπτωση δέσμευσης (capture) θα αποτύχει με κωδικό λάθους 502.
5206140271967502 200   Θα δημιουργήσει μια επιτυχής προέγκριση η οποία σε περίπτωση δέσμευσης (capture) θα αποτύχει με κωδικό λάθους 500.
Οποιαδήποτε άλλη έγκυρη κάρτα 200   Θα δημιουργήσει μια επιτυχής προέγκριση πληρωμής.

Έλεγχος περιπτώσεων

Μερικές από τις πιο κοινές περιπτώσεις που μπορείτε να δοκιμάσετε είναι οι εξής:

Σφάλμα Πώς να το αναπαράγετε
Λάθος αριθμός κάρτας δοκιμάστε την κάρτα 4242424242424241
Μη αποδεκτός μήνας δοκιμάστε στο πεδίο του μήνα τον αριθμό 15
Μη αποδεκτή ημερομηνία λήξης δοκιμάστε την ημερομηνία 12/2001
Αποτυχία ελέγχου CVV Χρησιμοποιήστε τον αριθμό 12 στο πεδίο CVV

Όλες οι περιπτώσεις και οι κωδικοί σφαλμάτων βρίσκονται εδώ.


Λογότυπα EveryPay


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


Έγχρωμo σε άσπρο φόντο (JPG)     Κατεβάστε
feature bootstrap

Έγχρωμo σε διάφανο φόντο (PNG)      Κατεβάστε
feature bootstrap

Έγχρωμo σε διάφανο φόντο (PNG)      Κατεβάστε
feature bootstrap

Έγχρωμo σε διάφανο φόντο (PNG)      Κατεβάστε
feature bootstrap

Έγχρωμo σε διάφανο φόντο (PNG)      Κατεβάστε
feature bootstrap

Έγχρωμo σε διάφανο φόντο (PNG)      Κατεβάστε
feature bootstrap

Έγχρωμo σε διάφανο φόντο (PNG)      Κατεβάστε
feature bootstrap


Για οποιαδήποτε πληροφορία σχετικά με παραλλαγές των εικόνων μπορείτε να επικοινωνήσετε με το τμήμα πωλήσεων στο e-mail sales@everypay.gr