Skocz do zawartości
Zaloguj się, aby obserwować  
Gość Roothek

Homepay paysafecard - success_url

Polecane posty

Gość Roothek

Witam, mam taki problem.

Po poprawnej płatności klient zostaje przekierowany na adres, ale mam pytanie jak zabezpieczyć ten skrypt, żeby wykonał pętle tylko po poprawnej płatności?

 

Skrypty udostępnione przez homepay:

 

paysafecard.php:

<?php
$key = ''; // KLUCZ PRYWATNY, HOMEPAY > PANEL PARTNERA > PAYSAFECARD > USTAWIENIA
$data = array(
	'uid' => 0, // IDENTYFIKATOR UŻYTKOWNIKA HOMEPAY
	'public_key' => '', // KLUCZ PUBLICZNY, HOMEPAY > PANEL PARTNERA > PAYSAFECARD > USTAWIENIA
	'amount' => (1 * 100), // KWOTA W GROSZACH
	'label' => '', // ETYKIETA PŁATNOSCI, np. ADRES.PL
	'control' => '', // UNIKALNY IDENTYFIKATOR DLA PŁATNOCI NADAWANY PRZEZ PARTNERA
	'success_url' => urlencode(''), // LINK NA KTÓRY ZOSTANIE PRZEKIEROWANY KLIENT PRZY POMYSLNEJ PŁATNOSCI
	'failure_url' => urlencode(''), // LINK NA KTÓRY ZOSTANIE PRZEKIEROWANY KLIENT W PRZYPADKU BŁĘDU W PŁATNOSCI
	'notify_url' => urlencode('') // LINK NA KTÓRY ZOSTANIE WYSŁANE POWIADOMIENIE API O DOKONANEJ PŁATNOSCI
);
$data['crc'] = md5(join('', $data) . $key);

echo '<form method="post" name="paysafecard" action="https://ssl.homepay.pl/paysafecard/">';
foreach($data as $field => $value)
	echo '<input type="hidden" name="' . $field . '" value="' . $value . '">';


echo '</form>
<p>Za chwile zostaniesz przekierowany do strony wpłaty.</p>
<p>Jeśli przekierowanie nie nastąpi w ciągu kilku sekund, kliknij <a href="#" onclick="document.paysafecard.submit(); return false;">tutaj</a>.</p>
<script>setTimeout(function() { document.paysafecard.submit(); }, 2000);</script>';

api.php:

 <?php
// TEN SKRYPT TYLKO ODBIERA WIADOMOSCI Z HOMEPAY
// NIE POWINIEN BYC DOSTEPNY DLA NIKOGO SPOZA IP HOMEPAY

function check_ip()
{
	if(empty($_SERVER['REMOTE_ADDR']))
		return false;

	if(ini_get('allow_url_fopen') != 1)
		return gethostbyname("get.homepay.pl") == $_SERVER['REMOTE_ADDR'];

	$handle = fopen('http://get.homepay.pl/index.htm', 'r');
	$data = trim(stream_get_contents($handle));
	fclose($handle);
	return in_array($_SERVER['REMOTE_ADDR'], explode(',', $data));
}

if(!check_ip()) die; // do testow mozesz zakomentowac ta linijke, pozniej dla zachowania bezpieczenstwa, sprawdzaj czy IP pochodzi od homepay
if(!isset($_POST['json']) || empty($_POST['json'])) die;
$json = json_decode($_POST['json']);

$result = array();
foreach($json as $payment)
{
	// $payment->psc_id - identyfikator płatności
	// $payment->psc_usr_id - identyfikator użytkownika Homepay
	// $payment->psc_time - znacznik czasu (unix timestamp)
	// $payment->psc_status - status płatności
	// $payment->psc_amount - kwota płatności
	// $payment->psc_provision - prowizja płatności (dla Homepay, prowizja użytkownika = 1 - $payment->provision)
	// $payment->psc_email - adres e-mail płacącego
	// $payment->psc_merchant_label - etykieta płatności
	// $payment->psc_merchant_data - unikalny identyfikator dla płatności nadawany przez partnera

	// tu powinienes na biezaco obrabiac platnosc, np. dodawac do bazy
	// ten plik nie powinien wypisywac zadnych danych, ewentualne logi zapisuj do pliku
	array_push($result, array(
		'psc_id' => $payment->psc_id,
		'psc_return' => 1 // status płatności, inny niż 1 powoduje ponowienia odpytania przez API Homepay
	));
}

echo json_encode($result);

Jak to zrobić, aby skrypt się wykonał po poprawnej płatności?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Masz od tego 2 zmienne które powinny być w dokumentacji dokładniej opisane:

// $payment->psc_status - status płatności

// $payment->psc_amount - kwota płatności

 

Wystarczy że sprawdzisz status płatności oraz kwotę która jest do zapłacenia. Jeśli oba parametry się zgodzą to znaczy że płatność jest poprawna.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×