VivaPayments / API

Index of Viva Wallet open source projects on GitHub.
139 stars 163 forks source link

Βοήθεια σχετικά με την ενσωμάτωση του viva wallet #121

Closed crisxz closed 8 years ago

crisxz commented 8 years ago

Καλησπέρα,

Έχω ένα website shop το οποίο είναι γραμμένο με html και javascript και θέλω να ενσωματώσω το viva wallet. Αυτό που δεν καταλαβαίνω είναι πως υλοποιώ το 2 βήμα.

Δηλαδή έχω βάλει το κουμπί και έχω ορίσει public key και τις παραμέτρους, αλλά δεν καταλαβαίνω που πρέπει να μπει ο κώδικας από το 2ο βήμα και αν πρέπει να αλλάξω κάτι.

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

Ευχαριστώ

defilerc commented 8 years ago

Καλησπέρα @crisxz,

Για την υποστήριξη πληρωμών από το site σας, θα πρέπει εκτός από html/javascript να χρησιμοποιηθεί και server-side κώδικας, ο οποίος θα κάνει την διεκπεραίωση της πληρωμής σε συνεργασία με τη Viva.

Για παραδείγματα σε διάφορες γλώσσες στις οποίες μπορεί να γίνει η υλοποίηση, μπορείτε να δείτε στη σελίδα: https://github.com/VivaPayments/API/tree/master/CreateOrder

Ευχαριστούμε για την επικοινωνία

crisxz commented 8 years ago

Καλησπέρα @defilerc ,

Ευχαριστώ για την προηγούμενη καθοδήγηση, εχω προσαρμόσει το create order (από τα δείγματα), με βάση τα δικά μου στοιχεία και δουλεύει τέλεια στο demo.

και έχω 3 ερωτήσεις να σας κάνω. 1) επείδη το checkout στο website που θέλω να φτιάξω είναι single page (το website σας υπενθυμίζω είναι html/javascript και δεν αποθηκεύει σε βάση κάτι) έχω δηλώσει στο create order, το οποίο πέρνει τα δεδομένα από hidden input που έχω δηλώσει στο κουμπί "πληρωμή τώρα", αρχείο να κάνει απευθείας redirect αν δεν βρει λάθος (αντί να ζητάει να ξαναπατήσει το κουμπί για να κάνει την πληρωμή). Υπάρχει περίπτωση να υπάρξει κάποιο πρόβλημα αργότερα;

2) όταν γίνεται redirect στην σελίδα για να πληρώσεις με κάρτα δεν δίνεται κάποιο link/επιλογή στον πελάτη για να ακυρώσει την παραγγελία, πρέπει να κάνω κάτι εγώ για να εμφανιστεί;

τέλος, 3) υπάρχει κάποια σελίδα παράδειγμα για το πως είναι το "DELETE /api/orders/{id} - Cancel an existing Payment Order." που πρέπει να βάλω, όπως αναφέρεται στο 1ο βήμα της σελίδας "Redirect Checkout" και με τί πρέπει να συνδεθεί;

O κώδικας όπως διαμορφώθηκε είναι αυτός <?php $request = 'http://demo.vivapayments.com/api/orders'; // demo environment URL $MerchantId = 'ΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧ'; $APIKey = 'ΧΧΧΧΧΧΧΧΧ'; $price = $_POST['amount']; $Amount = $price * 100; //ο αστερίσκος είναι χωρίς τα κενά στην πραγματικότητα $AllowRecurring = 'false'; $RequestLang = 'el-GR'; $Source = 'ΧΧΧΧ'; $MerchantTrns = $_POST['orderNumber']; $CustomerTrns = $_POST['description']; $DisableCash = 'true'; $DisablePayAtHome = 'true'; $DisableIVR = 'true'; $postargs = 'Amount='.urlencode($Amount).'&DisableCash='.$DisableCash.'&DisablePayAtHome='.$DisablePayAtHome.'&DisableIVR='.$DisableIVR.'&AllowRecurring='.$AllowRecurring.'&RequestLang='.$RequestLang.'&SourceCode='.$Source.'&MerchantTrns='.$MerchantTrns.'&CustomerTrns='.$CustomerTrns; // Get the curl session object $session = curl_init($request); // Set the POST options. curl_setopt($session, CURLOPT_POST, true); curl_setopt($session, CURLOPT_POSTFIELDS, $postargs); curl_setopt($session, CURLOPT_HEADER, true); curl_setopt($session, CURLOPT_RETURNTRANSFER, true); curl_setopt($session, CURLOPT_USERPWD, $MerchantId.':'.$APIKey); curl_setopt($session, CURLOPT_SSL_CIPHER_LIST, 'TLSv1'); // Do the POST and then close the session $response = curl_exec($session); // Separate Header from Body $header_len = curl_getinfo($session, CURLINFO_HEADER_SIZE); $resHeader = substr($response, 0, $header_len); $resBody = substr($response, $header_len); curl_close($session); // Parse the JSON response try { if(is_object(json_decode($resBody))){ $resultObj=json_decode($resBody); }else{ preg_match('#^HTTP/1.(?:0|1) [\d]{3} (.*)$#m', $resHeader, $match); throw new Exception("API Call failed! The error was: ".trim($match[1])); } } catch( Exception $e ) { echo $e->getMessage(); } if ($resultObj->ErrorCode==0){ //success when ErrorCode = 0 $orderId = $resultObj->OrderCode; header( 'Location: http://demo.vivapayments.com/web/newtransaction.aspx?ref='.$orderId ); }

else{ header( 'Location: http://www.mySampleSite.com/error-page.html' ); } ?>

defilerc commented 8 years ago

Καλησπέρα @crisxz ,

  1. Θα πρέπει να διευκρινήσουμε σε ποιά μέθοδο αναφέρεστε. Redirect μετά την πληρωμή, γίνεται μόνο στην περίπτωση που προσπαθείτε να κάνετε integrate με τη μέθοδο "Redirect Checkout". Μπορείτε να μας επιβεβαιώσετε ότι αναφέρεστε σε αυτή τη μέθοδο (οι μέθοδοι αναφέρονται στη σελίδα https://github.com/VivaPayments/API/wiki στην ενότητα "Website Checkout") ;

Αν όντως χρησιμοποιείτε αυτή την περίπτωση, τότε η διαδικασία είναι ως εξής: κάνετε πρώτα create order, στέλνετε το χρήστη στη σελίδα της Viva Payments για την πληρωμή και στη συνέχεια ο χρήστης ανακατευθύνεται από τη σελίδα της Viva πίσω στο site σας, ανάλογα με το status της πληρωμής (sucess/fail). Τα URLs μπορείτε να τα ορίσετε από το εντός login περιβάλλον του εμπόρου.

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

  1. Όταν ο χρήστης γίνεται redirect στη Viva για την πληρωμή, δεν υπάρχει κάποιο κουμπί για ακύρωση της πληρωμής, καθώς η συμπεριφορά αυτού του κουμπιού δε θα είχε κάποιο νοήμα στο συγκεκριμένο βήμα. Σε αυτή την περίπτωση ο χρήστης θα πρέπει απλά να κλείσει τη σελίδα που του έχει εμφανιστεί.
  2. Παράδειγμα για την ακύρωση κάποιας πληρωμής, μπορείτε να βρείτε εδώ: https://github.com/VivaPayments/API/wiki/CancelOrder . Αυτό αφορά την ακύρωση κάποιας πληρωμής σε εκκρεμότητα, καθώς μόνο αυτές μπορούν να ακυρωθούν.

Ευχαριστούμε πολύ για την επικοινωνία.

crisxz commented 8 years ago

Γεια σου και πάλι @defilerc ,

Όντως κάνω χρήση του redirect checkout για την πληρωμή.

Νομίζω με κάλυψες μέχρι ένα σημείο, οπότε για να δω αν κατάλαβα καλά δεν χρειάζεται να κάνω χρήση του "DELETE /api/orders/{id} - Cancel an existing Payment Order. " που αναφέρεται στη σελίδα σελίδα "Redirect Checkout" στο πρώτο βήμα, σωστά; Σε περίπτωση που κάνει κάποιος πληρωμή με viva και δεν την ολοκληρώσει, τότε ο κωδικός πληρωμής δεν ισχύει διαγράφεται από μόνος του.

Την ακύρωση πληρωμής μπορώ να την κάνω και μέσω της διαχείρης του viva wallet ή πρέπει να δημιουργήσω ένα CancelOrder αρχείο;

Ευχαριστώ πολύ για τον χρόνο σου, νομίζω δεν θα έχω άλλες ερωτήσεις προς το παρόν :P

defilerc commented 8 years ago

Καλησπέρα @crisxz ,

Σωστά, δε θα χρειαστεί να γίνει cancel κάποιο order, αν ο πελάτης μεταφερθεί στη redirect checkout και αποφασίσει πως δε θέλει να πληρώσει (π.χ. κλείσει τη σελίδα). Το order δε θα γίνει cancel, αλλά expire από μόνο του.

Cancel order μπορεί να γίνει μόνο με κλήση μέσω του Viva Payments API κα θα πρέπει να γίνετε μόνο στις περιπτώσεις που κρίνεται από τον έμπορο ότι δε θέλει να πληρωθεί για ένα order (π.χ. ο πελάτης ακυρώνει μια υπάρχουσα παραγγελία).

Μέσα από το site μπορεί να γίνει μόνο ο αντιλογισμός ενός επιτυχούς transaction (void/refund ώστε να μη χρεωθεί ο πελάτης ή να του επιστραφούν τα λεφτά, αντίστοιχα).

Ελπίζω να βοήθησαν τα παραπάνω,