Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

κάνω ένα eshop με wordpress (woocommerce) αυτή την περίοδο και θέλω να βάλω την πληρωμή με πιστωτική κάρτα.

Μίλησα με την τράπεζα κτλπα και μου δώσαν οδηγίες (ένα αρχειο pdf 70 σελίδες) για το πως να στηθεί η σύνδεση μεταξύ του eshop και του checkout της τράπεζας (πειραιώς) και ήθελα να ρωτήσω αν ξέρετε κάποιον πιο εύκολο τρόπο για την σύνδεση αυτή ή μήπως κάποιος έχει κάνει ήδη κάτι ανάλογο πριν αρχίσω και μπλέκω με τον κώδικα να μ βοηθήσει.

 

Ευχαριστώ εκ των προτέρων.

Δημοσ.

Υπάρχει άλλος τρόπος εκτός απο το woocommerce winbank της webit?

 

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

Δημοσ.

Υπάρχει άλλος τρόπος εκτός απο το woocommerce winbank της webit?

 

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

να υλοποιήσεις ένα gateway μεταξύ του API της τράπεζας και του site σου

  • Like 1
Δημοσ.

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

 

Η δική μου πρόταση είναι να βάλεις το PayPal ως ενδιάμεσο, στους premium & business λογαριασμούς το PayPal μπορεί να δεχτεί πληρωμές απευθείας από πιστωτική, χωρίς να χρειάζεται ο επισκέπτης του eshop να έχει λογαριασμό PayPal.

Δημοσ. (επεξεργασμένο)

να υλοποιήσεις ένα gateway μεταξύ του API της τράπεζας και του site σου

Συμφωνώ με τον cyclo... 

Δεν γνωρίζω για το woocommerce καθώς είχα αναπτύξει παλιότερα ένα Plugin για το winbank Redirect αλλά για το Wp-ecommerce

Ξεκίνα να διαβάζεις το Documentation που σου έστειλαν από την τράπεζα.. Λογικά θα ασχοληθείς με το SOAP API της τράπεζας πειραιώς..

Ξεκινάς λοιπόν και κάνεις μια αίτηση για να πάρεις το Ticket. Παίρνοντας το Ticket. Η απάντηση που θα σου έρθει θα περιέχει το Ticket καθώς και άλλες παραμέτρους όπως το ResultCode. Απ οτι θυμάμαι αν το ResultCode = 0 τότε το Τιcketing έγινε με επιτυχία και μπορείς να το χρησιμοποιήσεις για να κάνεις την συναλλαγή.. Σου παραθέτω και ένα παράδειγμα: 

 

<?php
$POSTAmount = number_format((float) $_POST['Amount'],2);
$MerchantReference = $_POST['MerchantReference'];
?>

<!-- BEGIN CUSTOM PAYMENT FORM -->

<?php
				
// Pull in the NuSOAP code
require_once('wp-content/plugins/wp-e-commerce/wpsc-includes/nusoap/nusoap.php');
$client = new nusoap_client('https://paycenter.piraeusbank.gr/services/tickets/issuer.asmx?WSDL','wsdl');
	 $params = array(
	    "Username" => "", // Στοιχεία του πελάτη σου σίγουρα η τράπεζα του έχει δώσει ένα username & password  ( kai nomizo ena merchantid kai ena AcquireId)
	    "Password" => md5(""),
	    "MerchantId" => (int) "",
	    "PosId" => (int) "",
	    "AcquirerId" => (int) "",
	    "MerchantReference" => $MerchantReference,
	    "RequestType" => "02",
	    "ExpirePreauth" => (int) "0",
	    "Amount" =>  $POSTAmount,
	    "CurrencyCode" => (int) "978",
	    "Installments" => 0,
	    "Bnpl" => 0,
	    "Parameters" => $ParametersValue
	);
				
	// Call the SOAP method
	$result = $client->call(
	 'IssueNewTicket',                     // method name
	 array("Request" => $params),         // input parameters
	'http://piraeusbank.gr/paycenter/redirection', //namespace
	'http://piraeusbank.gr/paycenter/redirection/IssueNewTicket'       // SOAPAction
	);

	//print_r($result); // Βλέπεις το Result 
				 
	foreach($result[IssueNewTicketResult] as $res => $value)
	{ 
	       $$res = $value; // Apo8hkeush se omonumes vars.
	}
				  
	switch ($ResultCode) {
			case "0":
				//echo "<br/><b>Authentication Successfull</b>";
				//echo "<br/>Transaction ticket: ".$TranTicket; 
				//echo "<br/>Timestamp: ".$Timestamp;
				//echo "<br/>Minutes To Expiration: ".$MinutesToExpiration;
						
				$_SESSION['Tranticket'] = $TranTicket;    
                          // Βάζεις την φόρμα που θα ποστάρει στο paycenter redirect της πειραιώς 
                                break;
                       case:!("0"): // Authentication Error
                                    //Kapoio minima pou tha vgazeis sto case ayto
                                   break;
      }
?>


Βέβαια πριν από αυτό θα πρέπει να φέρνεις όλες τις απαραίτητες πληροφορίες που σου ζητάει η τράπεζα προκειμένου να σου δώσει το Ticket.

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

 

Μετά το redirect στην φόρμα της τράπεζας και την αποδοχή πληρωμής του πελάτη η τράπεζα κάνει redirect τον πελάτη σε μια δικιά σου σελίδα οπού εκεί πρέπει να ελέγχεις όλα τα cases, και είναι αρκετά. 

Επεξ/σία από chrism4111
  • Like 3
Δημοσ.

@chrism4111, ναι ξεκίνησα να διαβάζω το documentation και αναφέρεται στο SOAP API της τράπεζας. Σε ευχαριστώ για τον κόπο σου και την απάντηση σου. Ελπίζω να με βοηθήσει ο κώδικας σου.

 

 

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

 

Η δική μου πρόταση είναι να βάλεις το PayPal ως ενδιάμεσο, στους premium & business λογαριασμούς το PayPal μπορεί να δεχτεί πληρωμές απευθείας από πιστωτική, χωρίς να χρειάζεται ο επισκέπτης του eshop να έχει λογαριασμό PayPal.

 

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

Δημοσ.

@chrism4111, ναι ξεκίνησα να διαβάζω το documentation και αναφέρεται στο SOAP API της τράπεζας. Σε ευχαριστώ για τον κόπο σου και την απάντηση σου. Ελπίζω να με βοηθήσει ο κώδικας σου.

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

  • 11 μήνες μετά...
Δημοσ.
	    "Password" => md5(""),
	    

@chrism4111   Αυτό το md5 ήταν life saver. Κάνω Πειραιώς για virtuemart , δεν θυμάμαι σε άλλη υλοποίηση ελληνικής τράπεζας που έχω κάνει να το χρησιμοποιεί  και θα κολλούσα κανα αιώνα στο no object reference .. κλπ  . Ευχαριστώ πολύ κι εγω για την βοήθεια!

 

 

YΓ: Μεχρι στιγμης εχω παρατηρησει οτι μερικες ονομασίες των παραμέτρων στο pdf της τραπεζας ειναι λαθος, (βλεπε PosID αντι PosId κλπ) και φυσικά ούτε λόγος γίνεται για το encrypt του password. Απορω πως το ανακάλυψες  @chrism4111  , ελπίζω όχι the hard way.

  • 3 χρόνια αργότερα...
Δημοσ.

@chrism4111 φίλε έκανα λογαριασμό μόνο και μόνο για να σε ευχαριστήσω, απλό και όμορφο κομμάτι κώδικα που για κάποιον που γράφει γενικά php και είναι ενός επιπέδου σχετικού του λύνει ΟΛΟ το θέμα σύνδεσης με την Πειραιώς.. Να σαι καλά, την (παραπανίσια) μπύρα που θα προλάβω να πιω την χαρίζω σε σένα! ;)

  • 11 μήνες μετά...
Δημοσ.
Λαμβάνω σφάλμα κατα την έκδοση του ticket
 
Array ( [faultcode] => soap:Client [faultstring] => Server was unable to read request. ---> There is an error in XML document (1, 850). ---> Instance validation error: '' is not a valid value for RecurringIndType. [detail] => )
 
H απάντηση της τράπεζας ήταν:

Έχουν προστεθεί κάποια επιπλέον elements στο WSDL.

Αυτό που σας δημιουργεί πρόβλημα είναι το <RecurringInd>. Το συγκεκριμένο element είναι nillable και κατά συνέπεια μπορείτε είτε να μην το αποστείλετε καθόλου είτε να στείλετε null value (οπότε μετά το serialization σε μας θα φθάσει <RecurringInd xsi:nil="true" />).

Δεν στέλνω πουθενά Reccuringind όμως (ούτε με αναζήτηση το βρίσκω πουθενά σε κανένα αρχείο) ... Έχει συναντήσει κανείς παρόμοιο πρόβλημα;

  • 2 εβδομάδες αργότερα...
Δημοσ. (επεξεργασμένο)
Στις 16/8/2019 στις 2:09 ΜΜ, korobas είπε
Λαμβάνω σφάλμα κατα την έκδοση του ticket
 
Array ( [faultcode] => soap:Client [faultstring] => Server was unable to read request. ---> There is an error in XML document (1, 850). ---> Instance validation error: '' is not a valid value for RecurringIndType. [detail] => )
 
H απάντηση της τράπεζας ήταν:

Έχουν προστεθεί κάποια επιπλέον elements στο WSDL.

Αυτό που σας δημιουργεί πρόβλημα είναι το <RecurringInd>. Το συγκεκριμένο element είναι nillable και κατά συνέπεια μπορείτε είτε να μην το αποστείλετε καθόλου είτε να στείλετε null value (οπότε μετά το serialization σε μας θα φθάσει <RecurringInd xsi:nil="true" />).

Δεν στέλνω πουθενά Reccuringind όμως (ούτε με αναζήτηση το βρίσκω πουθενά σε κανένα αρχείο) ... Έχει συναντήσει κανείς παρόμοιο πρόβλημα;

το πρόβλημα σου είναι μάλλον γιατί χρησιμοποιείς παλιό soap client πχ nusoap που δεν κάνει σωστά parse τα custom types στη περίπτωση RecurringIndType.

άλλαξε τον κώδικα σου σε native php soap client:

 

$soap = new SoapClient("https://paycenter.piraeusbank.gr/services/tickets/issuer.asmx?WSDL");

$params = array(
            "Username" => "xxxx",
            "Password" => md5("xxxxx"),
            "MerchantId" => (int) "xxxxx",
            "PosId" => (int) "xxxx",
            "AcquirerId" => (int) "xx",
            "MerchantReference" => $refid,
            "RequestType" => "xxx",
            "ExpirePreauth" => (int) "0",
            "Amount" => $yourvalue,
            "CurrencyCode" => (int) "978",
            "Installments" => 0,
            "Bnpl" => 0,
            "Parameters" => '' 
        );

$soap = new SoapClient("https://paycenter.piraeusbank.gr/services/tickets/issuer.asmx?WSDL");
$xml = array('Request' => $params);

$result = $soap->IssueNewTicket($xml);

Αν έκανες χρήση το $result ως array τώρα πλέον γυρίζει object, οπότε είτε γύρνα τον κώδικα σου σε object references είτε κάνε το object array για να παίξεις out of the box, example:

 

$result = json_encode($result);
$result = json_decode($result, true);

 

Επεξ/σία από dinko
  • Like 1
Δημοσ.

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

Array ( [faultcode] => soap:Client [faultstring] => Server was unable to read request. ---> There is an error in XML document (1, 850). ---> Instance validation error: '' is not a valid value for RecurringIndType. [detail] => )

Μπορώ απλά να στέλνω και αυτή την μεταβλητή άδεια να τελειώνω? Τι πρόβλημα είναι αυτό?
 

  • Like 1
Δημοσ.

Για μένα έδωσε την λύση ο dinko, απλά ανέβηκα στην php 5.4.45 που έχει enabled τον soap client και άλλαξα 3 γραμμές και πέταξα την nusoap. 

Verified πως η nusoap έχει θέματα με custom σχήματα.

Πολύ ωραίος, θενκς!

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...