Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Platnosci.pl Premium SMS + skrypt.
cahais
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 23.02.2011

Ostrzeżenie: (0%)
-----


Witam koledzy.

Ostatnio mam mały problem z platnosci.pl SMS. Otóż z tego co zrozumiałem czytając dokumentację wyglądało by na to że wszystko robię dobrze. Oczywiście się mylę bo coś nie działa.

Chce osiągnąć efekt podobny jak na nk.pl. Po wyborze usługi przenosi nas do serwisu platnosci.pl, gdzie wyświetlany jest koszt i kod sms jaki wysyłamy. A po wysłaniu wszystko robi za nas skrypt tj. aktywuje usługę.

kod odbioru płatności:

  1. require_once('../config.php');
  2. require_once('../funkcje.php');
  3.  
  4. $server = 'www.platnosci.pl';
  5. $server_script = '/paygw/ISO/Payment/get';
  6. define(PLATNOSCI_POS_ID, 83000);
  7. define(PLATNOSCI_KEY1, "asdasdasdasd");
  8. define(PLATNOSCI_KEY2, "baasdasdasd");
  9.  
  10. function get_status($parts){
  11. if ($parts[1] != PLATNOSCI_POS_ID) return array('code' => false,'message' => 'błędny numer POS'); //--- bledny numer POS
  12. $sig = md5($parts[1].$parts[2].$parts[3].$parts[5].$parts[4].$parts[6].$parts[7].PLATNOSCI_KEY2);
  13. if ($parts[8] != $sig) return array('code' => false,'message' => 'błędny podpis'); //--- bledny podpis
  14. switch ($parts[5]) {
  15. case 1: return array('code' => $parts[5], 'message' => 'nowa'); break;
  16. case 2: return array('code' => $parts[5], 'message' => 'anulowana'); break;
  17. case 3: return array('code' => $parts[5], 'message' => 'odrzucona'); break;
  18. case 4: return array('code' => $parts[5], 'message' => 'rozpoczęta'); break;
  19. case 5: return array('code' => $parts[5], 'message' => 'oczekuje na odbiór'); break;
  20. case 6: return array('code' => $parts[5], 'message' => 'autoryzacja odmowna'); break;
  21. case 7: return array('code' => $parts[5], 'message' => 'płatność odrzucona'); break;
  22. case 99: return array('code' => $parts[5], 'message' => 'płatność odebrana - zakończona'); break;
  23. case 888: return array('code' => $parts[5], 'message' => 'błędny status'); break;
  24. default: return array('code' => false, 'message' => 'brak statusu'); break;
  25. }
  26. }
  27.  
  28.  
  29. if(!isset($_POST['pos_id']) || !isset($_POST['session_id']) || !isset($_POST['ts']) || !isset($_POST['sig'])) die('ERROR: EMPTY PARAMETERS'); //-- brak wszystkich parametrow
  30.  
  31. if ($_POST['pos_id'] != PLATNOSCI_POS_ID) die('ERROR: WRONG POS ID'); //--- błędny numer POS
  32.  
  33. $sig = md5( $_POST['pos_id'] . $_POST['session_id'] . $_POST['ts'] . PLATNOSCI_KEY2);
  34. if ($_POST['sig'] != $sig) die('ERROR: WRONG SIGNATURE'); //--- błędny podpis
  35.  
  36. $ts = time();
  37. $sig = md5( PLATNOSCI_POS_ID . $_POST['session_id'] . $ts . PLATNOSCI_KEY1);
  38. $parameters = "pos_id=" . PLATNOSCI_POS_ID . "&session_id=" . $_POST['session_id'] . "&ts=" . $ts . "&sig=" . $sig;
  39.  
  40. $fsocket = false;
  41. $curl = false;
  42. $result = false;
  43.  
  44. if ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen('ssl://' . $server, 443, $errno, $errstr, 30)) ) {
  45. $fsocket = true;
  46. } elseif (function_exists('curl_exec')) {
  47. $curl = true;
  48. }
  49.  
  50. if ($fsocket == true) {
  51. $header = 'POST ' . $server_script . ' HTTP/1.0' . "\r\n" .
  52. 'Host: ' . $server . "\r\n" .
  53. 'Content-Type: application/x-www-form-urlencoded' . "\r\n" .
  54. 'Content-Length: ' . strlen($parameters) . "\r\n" .
  55. 'Connection: close' . "\r\n\r\n";
  56. @fputs($fp, $header . $parameters);
  57. $platnosci_response = '';
  58. while (!@feof($fp)) {
  59. $res = @fgets($fp, 1024);
  60. $platnosci_response .= $res;
  61. }
  62. @fclose($fp);
  63.  
  64. } elseif ($curl == true) {
  65. $ch = curl_init();
  66. curl_setopt($ch, CURLOPT_URL, "https://" . $server . $server_script);
  67. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  68. curl_setopt($ch, CURLOPT_HEADER, 0);
  69. curl_setopt($ch, CURLOPT_TIMEOUT, 20);
  70. curl_setopt($ch, CURLOPT_POST, 1);
  71. curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
  72. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  73. $platnosci_response = curl_exec($ch);
  74. curl_close($ch);
  75. } else {
  76. die("ERROR: No connect method ...\n");
  77. }
  78.  
  79.  
  80. 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);
  81. if ( $result['code'] ) { //--- rozpoznany status transakcji
  82.  
  83. $pos_id = $parts[1];
  84. $session_id = $parts[2];
  85. $order_id = $parts[3];
  86. $amount = $parts[4]; //-- w groszach
  87. $status = $parts[5];
  88. $desc = $parts[6];
  89. $ts = $parts[7];
  90. $sig = $parts[8];
  91. /* TODO: zmiana statusu transakcji w systemie Sklepu */
  92.  
  93. if( $status['code']=='99' ){
  94.  
  95. mysql_query("UPDATE transakcje SET status='1' WHERE uid='$session_id' LIMIT 1");
  96.  
  97. $res = mysql_query("SELECT * FROM transakcje WHERE uid='$session_id' LIMIT 1");
  98. $order = mysql_fetch_assoc($res);
  99.  
  100. if( $order['amount']==$amount ){
  101.  
  102. mysql_query("UPDATE usługa SET `on`='1' WHERE `uid`='$session_id' LIMIT 1;");
  103.  
  104.  
  105. }
  106. }
  107.  
  108.  
  109. } else {
  110. /* TODO: obsługa powiadamiania o błędnych statusach transakcji*/
  111. echo "ERROR: Blad danych ....\n";
  112. echo "code=" . $result['code'] . " message=" . $result['message'] . "\n";
  113. echo $platnosci_response;
  114. // powiadomienie bedzie wysłane ponownie przez platnosci.pl
  115. // ewentualnie dodajemy sobie jakis wpis do logow ...
  116. }


ktoś ma jakiś pomysł(IMG:style_emoticons/default/questionmark.gif) Pilne
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
modern-web
post
Post #2





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


Rozumiem, że oczekujesz gotowego rozwiązania, tak?
Zadam Ci zasadnicze pytanie - czy Ty tak właściwie wiesz co robi dana część podanego przez Ciebie skryptu?
Spróbuj sam i pokaż co już zrobiłeś, bo to co nam pokazałeś to tylko skrypt przyjmowania płatności.

Pozdrawiam.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:25