Witam,
Od kilku dni próbuję swoich sił z przelewami24. Kod którego używam jest poniżej. Płatność przechodzi, email dostaje o rozpoczęciu i potwierdzeniu płątności ale w kodzie nie wiem jak mogę to zweryfikować. W sensie zapisałem sobie do sesji $oPrzelewy24_API->Verify($_POST) i mam odpowiedź true. Ale jest ona zwracana niezależnie czy płatność jest potiwerdzona czy klient po prostu odrzuci ją w trakcie. Pytanie które nie daje mi spać. Jak zweryfikować wynik tak, żeby w momencie kiedy ktoś ZAPŁACIŁ ja o tym wiem i np zapisuje sobe do zmiennej sesji wynik "zapłacił" i na odwrót.
plik przelewy24.php
<?php
define('PRZELEWY24_MERCHANT_ID', '69694'); define('PRZELEWY24_CRC', '2ebb21475adfaf03'); // sandbox - środowisko testowe, secure - środowisko produkcyjne
define('PRZELEWY24_TYPE', 'sandbox');
class Przelewy24_API
{
public function CreateToken($p24_amount = null, $p24_description = null, $p24_email = null, $p24_url_return = null, $p24_url_status = null)
{
$headers[] = 'p24_merchant_id=' . PRZELEWY24_MERCHANT_ID;
$headers[] = 'p24_pos_id=' . PRZELEWY24_MERCHANT_ID;
$headers[] = 'p24_crc=' . PRZELEWY24_CRC;
$headers[] = 'p24_session_id=' . $p24_session_id;
$headers[] = 'p24_amount=' . $p24_amount;
$headers[] = 'p24_currency=PLN';
$headers[] = 'p24_description=' . $p24_description;
$headers[] = 'p24_country=PL';
$headers[] = 'p24_url_return=' . urlencode($p24_url_return); $headers[] = 'p24_url_status=' . urlencode($p24_url_status); $headers[] = 'p24_api_version=3.2';
$headers[] = 'p24_sign=' . md5($p24_session_id . '|' . PRZELEWY24_MERCHANT_ID
. '|' . $p24_amount . '|PLN|' . PRZELEWY24_CRC
); $headers[] = 'p24_email=' . $p24_email;
$oCURL = curl_init();
curl_setopt($oCURL, CURLOPT_POST, 1);
curl_setopt($oCURL, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');
curl_setopt
($oCURL, CURLOPT_POSTFIELDS
, implode('&', $headers)); curl_setopt($oCURL, CURLOPT_URL, 'https://' . PRZELEWY24_TYPE . '.przelewy24.pl/trnRegister');
curl_setopt($oCURL, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($oCURL, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($oCURL, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($oCURL, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($oCURL);
curl_close($oCURL);
return isset($output['token']) ?
$output['token'] : 0; }
public function Pay($p24_amount = null, $p24_description = null, $p24_email = null, $p24_url_return = null, $p24_url_status = null)
{
$token = $this->CreateToken($p24_amount, $p24_description, $p24_email, $p24_url_return, $p24_url_status);
return 'https://' . PRZELEWY24_TYPE . '.przelewy24.pl/trnRequest/' . $token;
}
public function Verify($data = null)
{
$headers[] = 'p24_merchant_id=' . $data['p24_merchant_id'];
$headers[] = 'p24_pos_id=' . $data['p24_pos_id'];
$headers[] = 'p24_session_id=' . $data['p24_session_id'];
$headers[] = 'p24_amount=' . $data['p24_amount'];
$headers[] = 'p24_currency=PLN';
$headers[] = 'p24_order_id=' . $data['p24_order_id'];
$headers[] = 'p24_sign=' . md5($data['p24_session_id'] . '|' . $data['p24_order_id'] . '|' . $data['p24_amount'] . '|PLN|' . PRZELEWY24_CRC
);
$oCURL = curl_init();
curl_setopt($oCURL, CURLOPT_POST, 1);
curl_setopt($oCURL, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');
curl_setopt
($oCURL, CURLOPT_POSTFIELDS
, implode('&', $headers)); curl_setopt($oCURL, CURLOPT_URL, 'https://' . PRZELEWY24_TYPE . '.przelewy24.pl/trnVerify');
curl_setopt($oCURL, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($oCURL, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($oCURL, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($oCURL, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($oCURL);
curl_close($oCURL);
if ($output['error'] == 0) {
$cos = 'true';
}else{
$cos = 'false';
}
return $cos;
}
}
?>
plik payments.php
<?php
// ob_start();
include_once('przelewy24.php');
$oPrzelewy24_API = new Przelewy24_API();
// Powrotny adres URL
$p24_url_return = 'http://37.28.156.151/projekty/przelewy24-test/payments.php';
// Adres dla weryfikacji płatności
$p24_url_status = 'http://37.28.156.151/projekty/przelewy24-test/payments.php';
$oPrzelewy24_API->Verify($_POST);
if(isset($_POST['submit'])){ // Kwota do zapłaty musi być pomnożona razy 100.
// Czyli, jeżeli użytkownik ma zapłacić 499 złotych, to kwota do zapłaty
// to 499 * 100 (wyrażona w groszach)
$redirect = $oPrzelewy24_API->Pay('45', 'platnosc', 'daniel.kozinaa@gmail.com', $p24_url_return, $p24_url_status);
$_SESSION['test'] = $oPrzelewy24_API->Verify($_POST);
}
?>
<form action="" method="post">
<input type="submit" name="submit" value="send">
</form>
<?php
?>