Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem ze sprawdzaniem kodów SMS w AllPay
Forum PHP.pl > Forum > PHP
Jojo
W serwisie nad którym pracuję są wdrożone płatności SMS poprzez AllPay.

Z początku wydawało się, że wszystko działa poprawnie, ale od jakiegoś czasu pojawiają się reklamacje. Ludzie dostają kody i po wpisaniu ich w formularz dostają informację, że kod jest nieprawidłowy, a kody po stronie AllPaya są oznaczane jako zużyte. Do sprawdzania kodów użyłem skryptu CURL ściągniętego ze strony AllPay.

Mnie nigdy się nie zdarzyła taka sytuacja. Klientka naciska na szybkie załatwienie sprawy, a ja nie wiem co robić.

Wczoraj moja klientka dzwoniła do nich i uzyskała informację, że zdarzają się, jak to określili, "nieprawidłowe zapytania". Dziś rano napisałem im e-mail z prośbą o szczegółowe wyjaśnienie co to może oznaczać. Odpowiedzi jak dotąd nie otrzymałem, a sprawa jest dość pilna.

W związku z tym moje pytanie: Czy ktoś z Was spotkał się już z takim problemem? Jeśli tak, to co można na to poradzić?
macek
miałem podobną sytuację, spójrz czy ładując kody do bazy (dodając je) obcinasz znak końca linii (sądzę, że ładujesz plik tekstowy do zmiennej przy pomicy file() )
Jojo
Pudło. Tak jak pisałem sprawdzam kody po stronie AllPaya przez CURL. Wszystkie kody są przechowywane u nich, a nie u mnie w bazie.
php programmer
@jojo
a co to zaserwis?
macek
a, fakt, nie skojarzyłem. więc skoro używasz curla do sprawdzania haseł i czasami jest ok, czasami nie to wina chyba leży po stronie allpay ? bynajmniej jak na moją logikę winksmiley.jpg podaj fragment w którym odwołujesz się do skryptu allpayowego, może czegoś się dopatrzymy winksmiley.jpg
Jojo
Cytat(macek @ 6.10.2006, 12:29:48 ) *
a, fakt, nie skojarzyłem. więc skoro używasz curla do sprawdzania haseł i czasami jest ok, czasami nie to wina chyba leży po stronie allpay ?

Tak jak napisałem wyżej dostaliśmy od nich odpowiedź, że zdarzają się "nieprawidłowe zapytania". Dlatego próbuję to wyjaśnić.

Cytat(macek @ 6.10.2006, 12:29:48 ) *
podaj fragment w którym odwołujesz się do skryptu allpayowego, może czegoś się dopatrzymy winksmiley.jpg

Kod jest żywcem przeklejony z przykładowych skryptów dostarczanych przez AllPay. Oto i on:

  1. <?php
  2. private function checkCodeAllpay( $strService, $strCode, $strType = 'sms' )
  3. {
  4. $id = xxxx; # numer ID zarejestrowanego klienta
  5. $code = $strService;  # nazwa konta z bezobsługowymi kodami
  6. $type = $strType; # typ konta: sms dla sprawdzania SMSow
  7. $check = $strCode; # kod podany na stronie 
  8. $del  = 1;  # jezeli kod ma byc jednorazowy to ustaw wartosc na 1;
  9.  
  10. //Tu zaczyna się kod wklejony z AllPay. Na wszelki wypadek nie zmieniałem w nim an
    i linijki.
  11.  
  12. $array = array();
  13. $array['code'] = $code;
  14. $array['check']= $check;
  15. $array['id']  = $id;
  16. $array['type'] = $type;
  17. $array['del'] = $del;
  18. $ch = curl_init ();
  19. curl_setopt ($ch, CURLOPT_URL, 'https://ssl.allpay.pl/check_code.php');
  20. curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  21. curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2);
  22. curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
  23. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  24. curl_setopt ($ch, CURLOPT_TIMEOUT, 100);
  25. curl_setopt ($ch, CURLOPT_POST, 1);
  26. curl_setopt ($ch, CURLOPT_POSTFIELDS, $array);
  27. $recv = curl_exec ($ch);
  28. curl_close ($ch);
  29.  
  30. $dane = explode("n", $recv);
  31. $status = $dane[0];
  32. $czas_zycia = $dane[1];
  33.  
  34. //Od tego miejsca wprowadziłem pewne zmiany, bo nie było mi potrzebne ustawienie 
  35. //cookie tak jak to jest w oryginale tylko zwrócenie odpowiedniej wartości.
  36.  
  37. if( $status == 0 )
  38. {
  39. return false; # gdy kod niepoprawny
  40. }
  41. else 
  42. {
  43. return true; # gdy kod poprawny
  44. }
  45. }
  46. ?>

Dla porządku jakby ktoś miał uwagi:
1. Powyższy fragment jest składową klasy i słówko private jest tam jak najbardziej zamierzone.
2. Wszystkie parametry do metody przekazywane są prawidłowo.
macek
jak dla mnie wina leży ewidentnie po dtsornie allpay i nic na to nie poradzisz ;/ zasada działania jest tu prosta jak drut - sesja curlowa zwraca ci dwie linijki -w pierwszej wynik sprawdania poprawnosci kodu, w drugiej czas jego żywotności, widzę że ot kody jednorazowe , więc tak jakby jej nie było winksmiley.jpg w sprawdzaniu czy $status jest zerem wrzuć zero w ciapki ( '0' ), ich brak to niby nie błąd, lecz raz na 1000 przez to się wysypie winksmiley.jpg
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.