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

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

Δημοσ.

Καλησπέρα παιδιά,
Θα ήθελα να κάνω μια ερώτηση σχετικά με το σύστημα πληρωμών της Viva Payments.
Εχω ανοίξει ένα λογαριασμό για ένα πελάτη μου και ως εκεί μια χαρά..
Αυτό που θέλω να κάνω είναι να συνδέσω το site του με το σύστημα πληρωμών τους.
Είναι ένα site απο "ενοικιαζόμενα δωμάτια" και αυτό που θέλω είναι ο επισκέπτης να μπορεί να πληρώσει το ποσό το οποίο συμφώνησε με τον ιδιοκτήτη μέσω viva.
Γνωρίζει κάποιος πως μπορεί να γίνει αυτό;
Γίνεται κάποιο redirect;
Σχετικά με τον κώδικα που χρειάζεται;
Ευχαριστώ πολύ!!!

Δημοσ.

το έχω ακουστά αυτό το visa payment, αλλά δεν ξέρω λεπτομέρειες.

αν δεν μπορείς παντός να βγάλεις άκρη, την ίδια δουλειά την κάνεις και με το paypal, μπορεί δηλαδή ο οποιοσδήποτε με μια απλή κάρτα visa/ master card/ amex να κάνει αγορά.

 

γιατί δεν του ζητάς να βγάλει μια άδεια από visa/ master card/ amex ώστε να αποφύγει τους μεσάζοντες και τις προμήθειες τους?

Δημοσ.

Ευχαριστώ για την απάντση σου,

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

Οσο για την άδεια...δεν θέλει να μπει σε αυτήν την διαδικασία...

Οπως και να'χει ευχαριστώ και πάλι

Δημοσ.

Καλησπέρα η σύνδεση είναι σχετικά απλή.

Σου στέλνω τον κώδικα PHP απο μια δική μου ιστοσελίδα.

 

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

 

$txt_email
$txt_phone

$txt_firstname

$txt_lastname

$payment_price

$x_guid

 

 

<?php

 

$xml_data = "";
 
$xml_data = $xml_data . "{";
$xml_data = $xml_data . "  \"Tags\": [";
$xml_data = $xml_data . "    \"TO ONOMA TOY SITE ΣΟΥ\",";
$xml_data = $xml_data . "    \"\",";
$xml_data = $xml_data . "    \"\"";
$xml_data = $xml_data . "  ],";
$xml_data = $xml_data . "  \"Email\": \"" . $txt_email . "\",";
$xml_data = $xml_data . "  \"Phone\": \"" . $txt_phone . "\",";
$xml_data = $xml_data . "  \"FullName\": \"" . $txt_firstname . " " . $txt_lastname . "\",";
$xml_data = $xml_data . "  \"PaymentTimeOut\": 86400,";
$xml_data = $xml_data . "  \"RequestLang\": \"en-US\",";
$xml_data = $xml_data . "  \"MaxInstallments\": 1,";
$xml_data = $xml_data . "  \"AllowRecurring\": false,";
$xml_data = $xml_data . "  \"AllowTaxCard\": false,";
$xml_data = $xml_data . "  \"IsPreAuth\": false,";
$xml_data = $xml_data . "  \"Amount\": " . $payment_price . ",";
$xml_data = $xml_data . "  \"MerchantTrns\": \"" . $x_guid . "\",";
$xml_data = $xml_data . "  \"CustomerTrns\": \"ΟΝΟΜΑΣΙΑ ΙΣΤΟΣΕΛΙΔΑΣ Η ΕΠΙΧΕΙΡΗΣΗΣ\",";
$xml_data = $xml_data . "}";
 
$username = "το όνομα χρήσης API μέσα απο την ιστοσελίδα του viva payments ";
$password = "κωδικός";
 
$ch = curl_init($URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
$output = curl_exec($ch);
$arr = json_decode($output,true);
$paymentid =  $arr["OrderCode"];
 
curl_close($ch);
?>
  • Like 1
  • 1 χρόνο αργότερα...
  • 6 μήνες μετά...
Δημοσ.

Επαναφέρω το topic. Θέλει ένας πελάτης μου να βάλει πληρωμή με viva wallet. Το site είναι φτιαγμένο σε php.

 

Κάποιος συνάδελφος να βοηθήσει την κατάσταση;

 

Ευχαριστώ,

Βασίλης.

Δημοσ.

Με το class που θα δεις παρακάτω (έβγαλα τα comments γιατί είχαν κάποια στοιχεία), αφού βάλεις merchant id και api key, κάνεις κλήσεις κάπως έτσι:

(προφανώς αλλάζεις τα namespaces όπως είναι λογικό για εσένα)

$viva = new VivaPayment;

$amount = 100;
$vivadata = $viva->pay($amount);

if ($vivadata['status'] === 'ok') {
 //to viva sou apantise ok, exeis oti xreiazesai sto $vivadata
}

για να τσεκάρεις κάποια πληρωμή με κωδικό $payment->code:

                $viva = new \App\Shop\Services\Apis\VivaPayment;
		if ($viva->isTransactionValid($payment->code)) {
                  //update payment status? or whatever
		}
<?php namespace App\Shop\Services\Apis;

class VivaPayment {

	protected $request =  'https://www.vivapayments.com/api/orders';

	protected $MerchantId = '...';
	protected $APIKey = '...';

	public function pay($amount, $recurring = false, $lang = 'el-GR') {

		$Amount = (int)($amount * 100);	

		$AllowRecurring = $recurring; 
		$RequestLang = $lang; 

		$postargs = 'Amount='.urlencode($Amount).'&AllowRecurring='.$AllowRecurring.'&RequestLang='.$RequestLang;

		$session = curl_init($this->request);

		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, $this->MerchantId.':'.$this->APIKey);
		curl_setopt($session, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');

		$response = curl_exec($session);

		$header_len = curl_getinfo($session, CURLINFO_HEADER_SIZE);
		$resHeader = substr($response, 0, $header_len);
		$resBody =  substr($response, $header_len);

		curl_close($session);

		$answer = array( 'status' => 'error');

		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]));
					$answer['msg'] = 'Api call error';
					return $answer;
			}
		} catch( Exception $e ) {
			$answer['msg'] = 'Api call error';
			return $answer;
		}

		if ($resultObj->ErrorCode==0){
			
			$orderId = $resultObj->OrderCode;

			$answer['status'] = "ok";
			$answer['msg'] = 'url';
			$answer['orderid'] = $orderId;
			
			$answer['url'] = 'https://www.vivapayments.com/web/newtransaction.aspx?ref='.$orderId;

			return $answer;

		}

		else{
			$answer['msg'] = 'Returned with error code';
			return $answer;
		}

	}

	public function getTransaction ($id) {

		$session = curl_init('https://www.vivapayments.com/api/transactions/?ordercode='.$id);

		curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($session, CURLOPT_USERPWD, $this->MerchantId.':'.$this->APIKey);
		curl_setopt($session, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');

		$reply = json_decode(curl_exec($session));

		if ( !isset($reply->Transactions[0]) ) {
			return null;
		}

		return $reply->Transactions[0];

	}

	public function isTransactionValid ($id) {

		$session = curl_init('https://www.vivapayments.com/api/transactions/?ordercode='.$id);

		curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($session, CURLOPT_USERPWD, $this->MerchantId.':'.$this->APIKey);
		curl_setopt($session, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');

		$data = json_decode(curl_exec($session));

		if ( !isset($data->Transactions[0]) ) {
			return 1 === 0;
		}

		return $data->Transactions[0]->StatusId === 'F';

	}
	
}

  • Like 2
  • 2 εβδομάδες αργότερα...
Δημοσ.

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

 

Στέλνω το τελικό:

<?php

class VivaPayment {

	protected $request =  'https://www.vivapayments.com/api/orders';

	protected $MerchantId = 'ΧΧΧΧΧΧΧ';
	protected $APIKey = 'ΧΧΧΧΧ';

	public function pay($amount, $Source = 'Default', $recurring = false, $lang = 'el-GR') {

		$Amount = (int)($amount * 100);

		$AllowRecurring = $recurring; 
		$RequestLang = $lang;
		$SourceCode = $Source;

		$postargs = 'Amount='.urlencode($Amount).'&AllowRecurring='.$AllowRecurring.'&RequestLang='.$RequestLang.'&SourceCode='.$Source;

		$session = curl_init($this->request);

		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, $this->MerchantId.':'.$this->APIKey);
		curl_setopt($session, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');

		$response = curl_exec($session);

		$header_len = curl_getinfo($session, CURLINFO_HEADER_SIZE);
		$resHeader = substr($response, 0, $header_len);
		$resBody =  substr($response, $header_len);

		curl_close($session);

		$answer = array( 'status' => 'error');

		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]));
					$answer['msg'] = 'Api call error';
					return $answer;
			}
		} catch( Exception $e ) {
			$answer['msg'] = 'Api call error';
			return $answer;
		}

		if ($resultObj->ErrorCode==0){
			
			$orderId = $resultObj->OrderCode;

			$answer['status'] = "ok";
			$answer['msg'] = 'url';
			$answer['orderid'] = $orderId;
			
			$answer['url'] = 'https://www.vivapayments.com/web/newtransaction.aspx?ref='.$orderId;

			return $answer;

		}

		else{
			$answer['msg'] = 'Returned with error code';
			return $answer;
		}

	}	
}


$viva = new VivaPayment;

$amount = 0.3;
$sourcecode = 'XXXX';
$vivadata = $viva->pay($amount, $sourcecode);

if ($vivadata['status'] === 'ok') {
	
}
?>

2-3 παρατηρήσεις από εμένα για να μην παιδευτείτε άδικα όπως εγώ:

  1. Η χαμηλότερη συναλλαγή που δέχεται το Viva είναι 30 λεπτά
  2. Θα πρέπει στο εταιρικό προφίλ του πελάτη που συνδέεται το Viva να μπείτε στο "Οι πωλήσεις μου > Πηγές πληρωμών" και να φτιάξετε μια νέα σελίδα εφαρμογή. Ο κωδικός που δημιουργείται τον χρησιμοποιείται στο κομμάτι του κώδικα που χρησιμοποιώ την μεταβλητή $sourcecode

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

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

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

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

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

Σύνδεση

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

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