Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][HTML][PHP]Adres raportów PayU
Forum PHP.pl > Forum > Przedszkole
programistaarek
Witam, serdecznie mam zakupione konto w systemie PayU i korzystam z typu płatności Classic API. Moja strona to autorski sklep, gdzie będzie maksymalnie 10 produktów do kupna stąd też nie dodawałem sklepu gotowego. Formularz zgłoszenia zamówienia oraz przelew na konto działa bez problemu, lecz rzeczą, której nie jestem w stanie przeskoczyć to zawartość pliku raporty. Mam na serwerze plik, który został podany w PayU w adresie raportów.
Nie wiem co ja mam tam kompletnie wpisać wiem, że jest dokumentacja PayU oraz rozmawiałem z ich pomocą techniczną i nadal nic nie jestem w stanie po prostu tego przeskoczyć nie wiem co mam tam uzupełnić. Oni mi coś mówili, że metodą POST mam im zwrócić wartość „OK” oraz ze zwróconej zmiennej session_id mam wyliczyć sig dodając również post_id ts oraz key1 konta, które zostało założone w serwisie.
Później zaś mam jakąś metodą Payment/get wysłać im tego sig'a oraz dopytać o dane zamówienia jego status. Chciałbym otrzymać gotowe rozwiązanie, gdyż moja cierpliwość do tego się już skończyła. A, więc chcę to wysłanie OK wraz z wyliczonym sigiem+ pobranie od nich statusu zamówienia, aby było ukazane jaki status ma zamówienie. Jeśli status równa się 99 (zakończone) skrypt może wykonać Update na mojej stronie osobie, która zakupi dany produkt.
Więc pobranie statusu dla zakończonego wraz z danymi jak id sesji czy koszt zamówienia.
Teraz pytanie czy jest ktokolwiek w stanie mi w tym pomóc? Chodzi mi o pomoc wysłania gotowego rozwiązania abym mógł sobie tylko gotowe dane wprowadzić.



Obecnie mam taki plik w raportach

  1. <?
  2. include('include/baza.php');
  3.  
  4.  
  5.  
  6.  
  7. $pos_id="**************";
  8. $key1 = "";
  9. $key2 = "**************";
  10. $ts = time();
  11.  
  12.  
  13.  
  14.  
  15.  
  16. function httpPost($url,$params)
  17. {
  18. $postData = '';
  19. //create name value pairs seperated by &
  20. foreach($params as $k => $v)
  21. {
  22. $postData .= $k . '='.$v.'&';
  23. }
  24. $postData = rtrim($postData, '&');
  25.  
  26. $ch = curl_init();
  27.  
  28. curl_setopt($ch,CURLOPT_URL,$url);
  29. curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
  30. curl_setopt($ch,CURLOPT_HEADER, false);
  31. curl_setopt($ch, CURLOPT_POST, count($postData));
  32. curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
  33.  
  34. $output=curl_exec($ch);
  35.  
  36. curl_close($ch);
  37. return $output;
  38.  
  39. }
  40.  
  41. $tablica = array(
  42. "pos_id" => $pos_id,
  43. "ts" => $ts,
  44. "session_id" => $_POST['session_id']
  45. );
  46.  
  47.  
  48. ksort($tablica);
  49. //built url
  50. $zmienna='';
  51. foreach ($tablica as $key => $value){
  52. $zmienna = $zmienna.$key."=".urlencode($value)."&";
  53. }
  54. // sig
  55. $sig = hash('sha256', $zmienna.$key2);
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63. $params = array(
  64. "pos_id" => $pos_id,
  65. "key2" => $key2,
  66. "ts" => $ts,
  67. "sig" => $sig,
  68. "session_id" => $_POST['session_id']
  69. );
  70.  
  71. echo httpPost("https://secure.payu.com/paygw/UTF/Payment/confirm",$params);
  72.  
  73.  
  74.  
  75. /// pobranie danych które zwraca PayU
  76.  
  77.  
  78. $pending = array(1,4,5); // 1 - nowa, 4 - rozpoczęta, 5 - oczekuje na odbiór
  79. $success = array(99); // płatność zaakceptowana
  80. $fail = array(2,3,7,888); // 2-anulowana, 3-odrzucona, 7-płatność odrzucona, 888-bledny status, prosimy o kontakt
  81.  
  82.  
  83.  
  84. if (in_array($status, $pending)){
  85.  
  86. // Raport, że płatność w toku
  87. echo "OK";
  88.  
  89. mysql_query("INSERT INTO `raport` (tresc) VALUES('W toku | sesja => ".$sesja." | numer_zamowienia => ".$numer."')") or die("Błąd rejestracji [server error]");
  90.  
  91.  
  92.  
  93.  
  94.  
  95. }elseif (in_array($status, $success)){
  96.  
  97. // Raport, że opłacono
  98.  
  99. mysql_query("INSERT INTO `raport` (tresc) VALUES('Opłącono | sesja => ".$sesja." | numer_zamowienia => ".$numer."')") or die("Błąd rejestracji [server error]");
  100.  
  101.  
  102. echo "OK";
  103. }elseif (in_array($status, $fail)){
  104.  
  105. // Raport, że odrzucono
  106.  
  107.  
  108.  
  109. mysql_query("INSERT INTO `raport` (tresc) VALUES('Odrzucono | sesja => ".$sesja." | numer_zamowienia => ".$numer."')") or die("Błąd rejestracji [server error]");
  110.  
  111. echo "OK";
  112. }
  113.  
  114. exit('OK');
  115. ?>
  116.  


A treść raportu z PayU ukazuje mi taki błąd : " code (OK): 200, Response (ERROR): "<?xml version="1.0" encoding="UTF-8"?> <response> <status>ERROR</status> <error> <nr>103</nr> <message>Kod błędu: 103</message> </error> </response>OK" "

Jak mam poprawnie wyliczyć ten numer sig? Bo bład 103 wzkasuje na jego złe przesłanie.
Rysh
Użyj gotowego rozwiązania jeśli masz się męczyć:

https://github.com/PayU/openpayu_php
programistaarek
A jeśli bym się miał pomęczyć to jak by to mogło wyglądać smile.gif?
Wiem sprawdzałem tą dokumentację co mi właśnie przesłałęś i który skrypt z niej odpowiada tym raportom o które mi chodzi konkretnie smile.gif?

Mam ważne pytanie już opanowałem w sumie to wysyłanie danych smile.gif teraz problem jest trudniejszy. Pomoc techniczna mówiła mi, że wyślą do mnie dane w formacie .xml

  1. <response>
  2. <status>***************</status>
  3. <trans>
  4. <id>***************</id>
  5. <pos_id>***************</pos_id>
  6. <session_id>***************</session_id>
  7. <order_id>***************</order_id>
  8. <amount>***************</amount>
  9. <status>***************</status>
  10. <pay_type>***************</pay_type>
  11. <pay_gw_name>***************</pay_gw_name>
  12. <desc>***************</desc>
  13. <desc2>***************</desc2>
  14. <create>***************</create>
  15. <init>***************</init>
  16. <sent>***************</sent>
  17. <recv/>
  18. <cancel/>
  19. <auth_fraud>***************</auth_fraud>
  20. <ts>***************</ts>
  21. <sig>***************</sig>
  22. <add_client_street/>
  23. <add_bank_name>***************.</add_bank_name>
  24. <add_owner_name>***************.</add_owner_name>
  25. <add_cc_number_hash>***************</add_cc_number_hash>
  26. <add_client_account>***************</add_client_account>
  27. <add_client_bank_date>***************</add_client_bank_date>
  28. <add_clients_count>***************</add_clients_count>
  29. <add_client_bank_desc>
  30. ***************
  31. </add_client_bank_desc>
  32. <add_trans_prev>
  33. ***************
  34. </add_trans_prev>
  35. <add_cc_number>***************</add_cc_number>
  36. <add_trans_title>***************</add_trans_title>
  37. <add_client_post_code>***************</add_client_post_code>
  38. <add_client_address>
  39. ***************
  40. </add_client_address>
  41. <add_owner_address>***************</add_owner_address>
  42. <add_client_name>
  43. ***************
  44. </add_client_name>
  45. <add_client_city>***************</add_client_city>
  46. </trans>
  47. </response>


I mam pytanie jeśli mi to PayU zwróci jak mam odczytać danę do zmiennej php bym mógł odczytać trans->status ?
Czytałem pobraniu danych z xml do php, ale tam było operowane na jakimś już gotowym pliku a ja miał bym to pobrac z kodu więc skad mam to pobrac obecnie mam taki kod jak go zmodyfikować?


  1. <?
  2. $tcs = simplexml_load_file('dane.xml');
  3.  
  4.  
  5.  
  6.  
  7. $tcs->trans[0]->status;
  8.  
  9.  
  10.  
  11.  
  12. foreach ($tcs->trans as $z) {
  13.  
  14. $status = $z->status;
  15. echo $status;
  16.  
  17. echo "<br>";
  18.  
  19. $order_id = $z->order_id;
  20. echo $order_id;
  21.  
  22.  
  23. echo "<br>";
  24.  
  25. $session_id = $z->session_id;
  26. echo $session_id;
  27.  
  28.  
  29.  
  30. echo "<br>";
  31.  
  32. $amount = $z->amount;
  33. echo $amount;
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40. }
  41.  
  42.  
  43.  
  44.  
  45. ?>
  46.  

Tylko tak jak mówiłem tutaj pobiera mi dane z pliku dane.xml a ja w przypadku otrzymania danych od Pay jak to mam odczytać?
nospor
Przegladanie sekcji "powiazane" w manualu naprawde nie boli.

http://php.net/manual/en/function.simplexml-load-string.php
programistaarek
Okej np to wyglada spoko już z manuala
  1.  
  2. <?php
  3. $string = <<<XML
  4. <?xml version='1.0'?>
  5. <document>
  6.  <title>Forty What?</title>
  7.  <from>Joe</from>
  8.  <to>Jane</to>
  9.  <body>
  10.   I know that's the answer -- but what's the question?
  11.  </body>
  12. </document>
  13. XML;
  14.  
  15. $xml = simplexml_load_string($string);
  16.  
  17. print_r($xml);
  18. ?>


Gdyż tutaj pobiera dane z $string, a ja nie wiem jak mi to osadzi w kodzie PayU :/
nospor
No przeciez to co ci zwraca PayU to masz w jakiejs zmiennej, no nie?
programistaarek
Mhm tylko, że w jakiej nie orientujesz się bo w dokumentacji tego niestety nie znalazłem.

Oraz mam kolejny problem w sumie PayU prosi mnie o przesłanie metodą Payment/get danych jak sig, pos_id, ts, key1 czy taka forma jest prawidłowa i co robię nie tak gdyż mi raport płatności wyrzuca błąd 103 jak by był źle skonstruowany podpis.

  1. function httpPost($url)
  2. {
  3. $postData = '';
  4. //create name value pairs seperated by &
  5.  
  6. $postData = rtrim($postData, '&');
  7.  
  8. $ch = curl_init();
  9.  
  10. curl_setopt($ch,CURLOPT_URL,$url);
  11. curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
  12. curl_setopt($ch,CURLOPT_HEADER, false);
  13. curl_setopt($ch, CURLOPT_POST, count($postData));
  14. curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
  15.  
  16. $output=curl_exec($ch);
  17.  
  18. curl_close($ch);
  19. return $output;
  20.  
  21. }
  22.  
  23. $pos_id = "******";
  24. $key1 = "******";
  25. $key2 = "******"; // dane wpisane z konta PayU
  26. $ts = time();
  27.  
  28.  
  29.  
  30.  
  31.  
  32. $sig = md5( $pos_id + $_POST['session_id'] + $ts + $key1 );
  33.  
  34.  
  35. echo httpPost("https://secure.payu.com/paygw/UTF/Payment/get/xml?sig=".$sig."&ts=".$ts."&pos_id=".$pos_id."&session_id=".$_POST['session_id']."");
  36.  
  37.  
  38.  

Co jest w tym kodzie nie tak?

W obecnej chwili skrypt raportów mam taki

http://wklej.org/id/3080890/

A w historii raportów po stronie PayU mam taki błąd :
Cytat
code (OK): 200, Response (OK): "OK<?xml version="1.0" encoding="UTF-8"?> <response> <status>ERROR</status> <error> <nr>103</nr> <message>Kod błędu: 103</message> </error> </response><br /> <b>Warning</b>: simplexml_load_file(): I/O warning : failed to load external e"


Co źle robię w skrypcie?
nospor
Blad 103 mowi o zlym sig. Jak wyliczac sig masz napisane tu
http://developers.payu.com/en/classic_api....ning_parameters

Byc moze go zle wyliczasz
programistaarek
Wybłagałem PayU O gotowy kod to pluje błedami ... 52 linijka a w raportach taki błąd :
Cytat
code (OK): 200, Response (ERROR): "<br /> <b>Parse error</b>: syntax error, unexpected ''Content-Length: '' (T_CONSTANT_ENCAPSED_STRING) in <b>/raporty.php</b> on line <b>52</b><br /> "

Co jest nie tak w tej linijce jak to naprawić?
  1. <?php
  2. $server = 'www.platnosci.pl';
  3. $server_script = '/paygw/UTF/Payment/get';
  4. define(PLATNOSCI_POS_ID, --------------------);
  5. define(PLATNOSCI_KEY1, "---------------");
  6. define(PLATNOSCI_KEY2, "---------------------");
  7.  
  8. function get_status($parts){
  9. if ($parts[1] != PLATNOSCI_POS_ID) return array('code' => false,'message' => 'błędny numer POS'); //--- wrong POS
  10. $sig = md5($parts[1].$parts[2].$parts[3].$parts[5].$parts[4].$parts[6].$parts[7].PLATNOSCI_KEY2);
  11. if ($parts[8] != $sig) return array('code' => false,'message' => 'bledny podpis'); //--- wrong signature
  12. switch ($parts[5]) {
  13. case 1: return array('code' => $parts[5], 'message' => 'status 1'); break;
  14. case 2: return array('code' => $parts[5], 'message' => 'status 2'); break;
  15. case 3: return array('code' => $parts[5], 'message' => 'status 3'); break;
  16. case 4: return array('code' => $parts[5], 'message' => 'status 4'); break;
  17. case 5: return array('code' => $parts[5], 'message' => 'status 5'); break;
  18. case 6: return array('code' => $parts[5], 'message' => 'no authorization'); break;
  19. case 7: return array('code' => $parts[5], 'message' => 'status 7'); break;
  20. case 99: return array('code' => $parts[5], 'message' => 'status 99'); break;
  21. case 888: return array('code' => $parts[5], 'message' => 'error status'); break;
  22. default: return array('code' => false, 'message' => 'no status'); break;
  23. }
  24. }
  25.  
  26.  
  27. if(!isset($_POST['pos_id']) || !isset($_POST['session_id']) || !isset($_POST['ts']) || !isset($_POST['sig'])) die('ERROR: EMPTY PARAMETERS'); //-- empty parameters
  28.  
  29. if ($_POST['pos_id'] != PLATNOSCI_POS_ID) die('ERROR: WRONG POS ID'); //--- wrong POS
  30.  
  31. $sig = md5( $_POST['pos_id'] . $_POST['session_id'] . $_POST['ts'] . PLATNOSCI_KEY2);
  32. if ($_POST['sig'] != $sig) die('ERROR: WRONG SIGNATURE'); //--- wrong signature
  33.  
  34. $ts = time();
  35. $sig = md5( PLATNOSCI_POS_ID . $_POST['session_id'] . $ts . PLATNOSCI_KEY1);
  36. $parameters = "pos_id=" . PLATNOSCI_POS_ID . "&session_id=" . $_POST['session_id'] . "&ts=" . $ts . "&sig=" . $sig;
  37.  
  38. $fsocket = false;
  39. $curl = false;
  40. $result = false;
  41.  
  42. if ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen('ssl://' . $server, 443, $errno, $errstr, 30)) ) {
  43. $fsocket = true;
  44. } elseif (function_exists('curl_exec')) {
  45. $curl = true;
  46. }
  47.  
  48. if ($fsocket == true) {
  49. $header = 'POST ' . $server_script . ' HTTP/1.0' . "\r\n" .
  50. 'Host: ' . $server . "\r\n" .
  51. 'Content-Type: application/x-www-form-urlencoded' . "\r\n"
  52. 'Content-Length: ' . strlen($parameters) . "\r\n" .
  53. 'Connection: close' . "\r\n\r\n";
  54. @fputs($fp, $header . $parameters);
  55. $platnosci_response = '';
  56. while (!@feof($fp)) {
  57. $res = @fgets($fp, 1024);
  58. $platnosci_response .= $res;
  59. }
  60. @fclose($fp);
  61.  
  62. } elseif ($curl == true) {
  63. $ch = curl_init();
  64. curl_setopt($ch, CURLOPT_URL, "https://" . $server . $server_script);
  65. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  66. curl_setopt($ch, CURLOPT_HEADER, 0);
  67. curl_setopt($ch, CURLOPT_TIMEOUT, 20);
  68. curl_setopt($ch, CURLOPT_POST, 1);
  69. curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
  70. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  71. $platnosci_response = curl_exec($ch);
  72. curl_close($ch);
  73. } else {
  74. die("ERROR: No connect method ...\n");
  75. }
  76.  
  77.  
  78. if (eregi("<trans>.*<pos_id>([0-9]*)</pos_id>.*<session_id>(.*)</session_id>.*<order_id>(.*)</order_id>.*<amount>([0-9]*)</amount>.*<status>([0-9]*)</status>.*<desc>(.*)</desc>.*<ts>([0-9]*)</ts>.*<sig>([a-z0-9]*)</sig>.*</trans>", $platnosci_response, $parts)) $result = get_status($parts);
  79. if ( $result['code'] ) { //--- recognised status of transaction
  80.  
  81. $pos_id = $parts[1];
  82. $session_id = $parts[2];
  83. $order_id = $parts[3];
  84. $amount = $parts[4]; //--in grosze
  85. $status = $parts[5];
  86. $desc = $parts[6];
  87. $ts = $parts[7];
  88. $sig = $parts[8];
  89. /* TODO: change of transaction status in system of the shop */
  90.  
  91.  
  92. if ( $result['code'] == '99' ) {
  93. if ( money_are_on_the_account ) {
  94. // payment sucessful so we send back OK
  95. echo "OK";
  96. }
  97. } else if ( $result['code'] == '2' ) {
  98. // transaction cancelled, we can also cancell transaction
  99. } else {
  100. // other actions
  101. }
  102.  
  103.  
  104. // If all operations are done then we send back OK
  105. // in other case we generate error
  106. // if ( ewerything_ok ) {
  107. echo "OK";
  108. // } else {
  109. //
  110. // }
  111.  
  112.  
  113. } else {
  114. /* TODO: obsluga powiadamiania o blednych statusach transakcji*/
  115. echo "ERROR: Data error ....\n";
  116. echo "code=" . $result['code'] . " message=" . $result['message'] . "\n";
  117. echo $platnosci_response;
  118. // powiadomienie bedzie wyslane ponownie przez platnosci.pl information about changing a status will be send again from platnosci.pl
  119. // we can write information to logs....
  120. }
  121.  
  122. ?>
Pyton_000
brakuje .
programistaarek
W którym miejscu dokładnie?
Pyton_000
Masz błąd to szukaj w jego okolicy
programistaarek
Proszę abyś pokazał gdzie bo tak to bładzę :/

Teraz mam problem inny a mianowicie nie dodaje mi rekordów do bazy danych :/
W raportach na PayU pisze, że nie dodało mi rekordu do bazy.
Co jest tego przyczyną? Nie dodaje mi nowej informacji do "raport".
  1. <?php
  2. // Początek skryptu raportów
  3.  
  4. // Połączenie z bazą danych
  5. $host_bazy_danych = 'localhost'; //serwer bazy danych
  6. $uzytkownik_bazy_danych = '******'; //użytkownik bazy danych
  7. $haslo_bazy_danych = '*********'; //hasło do bazy danych
  8. $nazwa_bazy_danych = '*******_*******8'; //nazwa bazy danych
  9.  
  10. //nawiązujemy połączenie z serwerem bazy danych, jeżeli się nie uda to pokaże informacje
  11. $polacz = mysql_connect($host_bazy_danych, $uzytkownik_bazy_danych, $haslo_bazy_danych) or die('brak połączenia z serwerem');
  12.  
  13. //wybieramy odpowiednią bazę danych
  14. mysql_select_db($nazwa_bazy_danych,$polacz) or die('nie ma takiej bazy danych');
  15.  
  16. //ustawiamy domyślne kodowanie znaków dla połączenia
  17.  
  18. @mysql_query("set names 'utf8'");
  19.  
  20. //Koniec Połączenia z bazą danych
  21.  
  22. //Koniec Połączenia z bazą danych
  23.  
  24. $server = 'www.platnosci.pl';
  25. $server_script = '/paygw/UTF/Payment/get';
  26. define(PLATNOSCI_POS_ID, ---------);
  27. define(PLATNOSCI_KEY1, "----------------");
  28. define(PLATNOSCI_KEY2, "---------------");
  29.  
  30. function get_status($parts){
  31. if ($parts[1] != PLATNOSCI_POS_ID) return array('code' => false,'message' => 'błędny numer POS'); //--- wrong POS
  32. $sig = md5($parts[1].$parts[2].$parts[3].$parts[5].$parts[4].$parts[6].$parts[7].PLATNOSCI_KEY2);
  33. if ($parts[8] != $sig) return array('code' => false,'message' => 'bledny podpis'); //--- wrong signature
  34. switch ($parts[5]) {
  35. case 1: return array('code' => $parts[5], 'message' => 'status 1'); break;
  36. case 2: return array('code' => $parts[5], 'message' => 'status 2'); break;
  37. case 3: return array('code' => $parts[5], 'message' => 'status 3'); break;
  38. case 4: return array('code' => $parts[5], 'message' => 'status 4'); break;
  39. case 5: return array('code' => $parts[5], 'message' => 'status 5'); break;
  40. case 6: return array('code' => $parts[5], 'message' => 'no authorization'); break;
  41. case 7: return array('code' => $parts[5], 'message' => 'status 7'); break;
  42. case 99: return array('code' => $parts[5], 'message' => 'status 99'); break;
  43. case 888: return array('code' => $parts[5], 'message' => 'error status'); break;
  44. default: return array('code' => false, 'message' => 'no status'); break;
  45. }
  46. }
  47.  
  48.  
  49. if(!isset($_POST['pos_id']) || !isset($_POST['session_id']) || !isset($_POST['ts']) || !isset($_POST['sig'])) die('ERROR: EMPTY PARAMETERS'); //-- empty parameters
  50.  
  51. if ($_POST['pos_id'] != PLATNOSCI_POS_ID) die('ERROR: WRONG POS ID'); //--- wrong POS
  52.  
  53. $sig = md5( $_POST['pos_id'] . $_POST['session_id'] . $_POST['ts'] . PLATNOSCI_KEY2);
  54. if ($_POST['sig'] != $sig) die('ERROR: WRONG SIGNATURE'); //--- wrong signature
  55.  
  56. $ts = time();
  57. $sig = md5( PLATNOSCI_POS_ID . $_POST['session_id'] . $ts . PLATNOSCI_KEY1);
  58. $parameters = "pos_id=" . PLATNOSCI_POS_ID . "&session_id=" . $_POST['session_id'] . "&ts=" . $ts . "&sig=" . $sig;
  59.  
  60. $fsocket = false;
  61. $curl = false;
  62. $result = false;
  63.  
  64. if ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen('ssl://' . $server, 443, $errno, $errstr, 30)) ) {
  65. $fsocket = true;
  66. } elseif (function_exists('curl_exec')) {
  67. $curl = true;
  68. }
  69.  
  70. if ($fsocket == true) {
  71. $header = 'POST ' . $server_script . ' HTTP/1.0' . "\r\n" .
  72. 'Host: ' . $server . "\r\n" .
  73. 'Content-Type: application/x-www-form-urlencoded' . "\r\n" .
  74. 'Content-Length: ' . strlen($parameters) . "\r\n" .
  75. 'Connection: close' . "\r\n\r\n";
  76. @fputs($fp, $header . $parameters);
  77. $platnosci_response = '';
  78. while (!@feof($fp)) {
  79. $res = @fgets($fp, 1024);
  80. $platnosci_response .= $res;
  81. }
  82. @fclose($fp);
  83.  
  84. } elseif ($curl == true) {
  85. $ch = curl_init();
  86. curl_setopt($ch, CURLOPT_URL, "https://" . $server . $server_script);
  87. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  88. curl_setopt($ch, CURLOPT_HEADER, 0);
  89. curl_setopt($ch, CURLOPT_TIMEOUT, 20);
  90. curl_setopt($ch, CURLOPT_POST, 1);
  91. curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
  92. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  93. $platnosci_response = curl_exec($ch);
  94. curl_close($ch);
  95. } else {
  96. die("ERROR: No connect method ...\n");
  97. }
  98.  
  99.  
  100. if (eregi("<trans>.*<pos_id>([0-9]*)</pos_id>.*<session_id>(.*)</session_id>.*<order_id>(.*)</order_id>.*<amount>([0-9]*)</amount>.*<status>([0-9]*)</status>.*<desc>(.*)</desc>.*<ts>([0-9]*)</ts>.*<sig>([a-z0-9]*)</sig>.*</trans>", $platnosci_response, $parts)) $result = get_status($parts);
  101. if ( $result['code'] ) { //--- recognised status of transaction
  102.  
  103. $pos_id = $parts[1];
  104. $session_id = $parts[2];
  105. $order_id = $parts[3];
  106. $amount = $parts[4]; //--in grosze
  107. $status = $parts[5];
  108. $desc = $parts[6];
  109. $ts = $parts[7];
  110. $sig = $parts[8];
  111. /* TODO: change of transaction status in system of the shop */
  112.  
  113.  
  114. if ( $result['code'] == '99' ) {
  115.  
  116. $sprawdzenie=mysql_fetch_array(mysql_query("SELECT * FROM `platnosci_czekajace` WHERE `amout`='".$amount."' AND `order_id`='".$order_id."' AND session_id='".$session_id."'"));
  117.  
  118. if(empty($sprawdzenie['id'])){ // sprawdzenie czy taka płatność zamówiona istnieje w bazie
  119.  
  120. // jeśli taka płatność nie istnieje to nie jest wykonywana żadna czynność
  121.  
  122.  
  123. }else{
  124. // jeśli płatność jest w bazie danych zostaje dodane osobie która opłaciła płatność produkt który jest sprawdzany
  125.  
  126. mysql_query("INSERT INTO `raport` (tresc) VALUES('Płatność o numerze sesji ".$_POST['session_id']." jest opłacona')") or die("Błąd rejestracji [server error]");
  127.  
  128.  
  129. // Dodanie do bazy danych testu który osoba zamówiła oraz opłaciła
  130. mysql_query("INSERT INTO `testy_kupione` (nazwa, email, id_testu, id_osoby) VALUES('".$sprawdzenie['nazwa']."','".$sprawdzenie['email']."','".$sprawdzenie['id_testu']."','".$sprawdzenie['id_osoby']."')") or die("Błąd rejestracji [server error]");
  131.  
  132.  
  133. // Usunięcie z bazy danych informacji na temat zamówienia gdyż zostało już zrealizowane
  134.  
  135. mysql_query("DELETE FROM testy_kupione WHERE id=".$sprawdzenie['id']);
  136.  
  137. echo "OK";
  138.  
  139. }
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149. } elseif ( $result['code'] == '2' ) {
  150.  
  151. mysql_query("INSERT INTO `raport` (tresc) VALUES('Płatność o numerze sesji ".$_POST['session_id']." jest odrzucona')") or die("Błąd rejestracji [server error]");
  152.  
  153.  
  154.  
  155. echo "OK";
  156. } else {
  157.  
  158.  
  159. mysql_query("INSERT INTO `raport` (tresc) VALUES('Płatność o numerze sesji ".$_POST['session_id']." jest w toku ") or die("Błąd rejestracji [server error]");
  160.  
  161.  
  162. echo "OK";
  163. }
  164.  
  165.  
  166.  
  167.  
  168.  
  169. echo "OK";
  170.  
  171. } else {
  172. /* TODO: obsluga powiadamiania o blednych statusach transakcji*/
  173. echo "ERROR: Data error ....\n";
  174. echo "code=" . $result['code'] . " message=" . $result['message'] . "\n";
  175. echo $platnosci_response;
  176. // powiadomienie bedzie wyslane ponownie przez platnosci.pl information about changing a status will be send again from platnosci.pl
  177. // we can write information to logs....
  178. }
  179.  
  180. ?>
  181.  


Temat do zamknięcia już ogarnąłem! Dzięki nospor, Pyton_000, oraz Viking na priv za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.