Closed crisxz closed 8 years ago
Καλησπέρα @crisxz,
Για την υποστήριξη πληρωμών από το site σας, θα πρέπει εκτός από html/javascript να χρησιμοποιηθεί και server-side κώδικας, ο οποίος θα κάνει την διεκπεραίωση της πληρωμής σε συνεργασία με τη Viva.
Για παραδείγματα σε διάφορες γλώσσες στις οποίες μπορεί να γίνει η υλοποίηση, μπορείτε να δείτε στη σελίδα: https://github.com/VivaPayments/API/tree/master/CreateOrder
Ευχαριστούμε για την επικοινωνία
Καλησπέρα @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' ); } ?>
Καλησπέρα @crisxz ,
Αν όντως χρησιμοποιείτε αυτή την περίπτωση, τότε η διαδικασία είναι ως εξής: κάνετε πρώτα create order, στέλνετε το χρήστη στη σελίδα της Viva Payments για την πληρωμή και στη συνέχεια ο χρήστης ανακατευθύνεται από τη σελίδα της Viva πίσω στο site σας, ανάλογα με το status της πληρωμής (sucess/fail). Τα URLs μπορείτε να τα ορίσετε από το εντός login περιβάλλον του εμπόρου.
Σε αυτή την περίπτωση και αν ο χρήστης έχει κάνει την πληρωμή επιτυχώς, δεν μπορεί να υπάρξει κάποιο πρόβλημα αργότερα όπως αναφέρετε.
Ευχαριστούμε πολύ για την επικοινωνία.
Γεια σου και πάλι @defilerc ,
Όντως κάνω χρήση του redirect checkout για την πληρωμή.
Νομίζω με κάλυψες μέχρι ένα σημείο, οπότε για να δω αν κατάλαβα καλά δεν χρειάζεται να κάνω χρήση του "DELETE /api/orders/{id} - Cancel an existing Payment Order. " που αναφέρεται στη σελίδα σελίδα "Redirect Checkout" στο πρώτο βήμα, σωστά; Σε περίπτωση που κάνει κάποιος πληρωμή με viva και δεν την ολοκληρώσει, τότε ο κωδικός πληρωμής δεν ισχύει διαγράφεται από μόνος του.
Την ακύρωση πληρωμής μπορώ να την κάνω και μέσω της διαχείρης του viva wallet ή πρέπει να δημιουργήσω ένα CancelOrder αρχείο;
Ευχαριστώ πολύ για τον χρόνο σου, νομίζω δεν θα έχω άλλες ερωτήσεις προς το παρόν :P
Καλησπέρα @crisxz ,
Σωστά, δε θα χρειαστεί να γίνει cancel κάποιο order, αν ο πελάτης μεταφερθεί στη redirect checkout και αποφασίσει πως δε θέλει να πληρώσει (π.χ. κλείσει τη σελίδα). Το order δε θα γίνει cancel, αλλά expire από μόνο του.
Cancel order μπορεί να γίνει μόνο με κλήση μέσω του Viva Payments API κα θα πρέπει να γίνετε μόνο στις περιπτώσεις που κρίνεται από τον έμπορο ότι δε θέλει να πληρωθεί για ένα order (π.χ. ο πελάτης ακυρώνει μια υπάρχουσα παραγγελία).
Μέσα από το site μπορεί να γίνει μόνο ο αντιλογισμός ενός επιτυχούς transaction (void/refund ώστε να μη χρεωθεί ο πελάτης ή να του επιστραφούν τα λεφτά, αντίστοιχα).
Ελπίζω να βοήθησαν τα παραπάνω,
Καλησπέρα,
Έχω ένα website shop το οποίο είναι γραμμένο με html και javascript και θέλω να ενσωματώσω το viva wallet. Αυτό που δεν καταλαβαίνω είναι πως υλοποιώ το 2 βήμα.
Δηλαδή έχω βάλει το κουμπί και έχω ορίσει public key και τις παραμέτρους, αλλά δεν καταλαβαίνω που πρέπει να μπει ο κώδικας από το 2ο βήμα και αν πρέπει να αλλάξω κάτι.
Η γνώσεις μου πάνω στο προγραμματισμό είναι μηδαμινές :P οπότε αν υπάρχει η περίπτωση να με καθοδηγήσετε βήμα βήμα θα με βοηθούσατε πάρα πολύ.
Ευχαριστώ