Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][FireFox] Firefox "przedświeża" stronę...
Forum PHP.pl > Forum > Przedszkole
ixpack
EDIT: dodałem set_time_limit( X ); i teraz FireFox "pozwala" dokończyć skrypt - EDIT2: jednak nie zawsze :/ i nie wiem już o co chodzi!



PayPal... Postanowiłem lekko zmienić flow checkoutu tak, aby użytkownik mógł płacić od razu na PayPal'u, żeby nie musiał klikać "Potwierdź" na mojej stronie. I tu zaczął się jeden wielki "schód" wink.gif
Po kliknięciu "Pay Now" na PayPalu - użytkownik zostaje przekierowany na moją stronę i tu niby prosta rzecz - wywołuję funkcję:

  1. function PPHttpPostt($methodName_, $nvpStr_) {
  2.  
  3. // Set up your API credentials, PayPal end point, and API version.
  4. $API_UserName = user name
  5. $API_Password = pass
  6. $API_Signature = podpis
  7. $API_Endpoint = "https://api-3t.sandbox.paypal.com/nvp";
  8. $version = urlencode('69.0');
  9.  
  10.  
  11. // Set the curl parameters.
  12. $ch = curl_init();
  13. curl_setopt($ch, CURLOPT_URL, $API_Endpoint);
  14. curl_setopt($ch, CURLOPT_VERBOSE, 1);
  15.  
  16. // Turn off the server and peer verification (TrustManager Concept).
  17. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  18. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  19.  
  20. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  21. curl_setopt($ch, CURLOPT_POST, 1);
  22.  
  23. // Set the API operation, version, and API signature in the request.
  24. $nvpreq = "METHOD=$methodName_&VERSION=$version&PWD=$API_Password&USER=$API_UserName&SIGNATURE=$API_Signature$nvpStr_";
  25.  
  26. // Set the request as a POST FIELD for curl.
  27. curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);
  28.  
  29. // Get response from the server.
  30. $httpResponse = curl_exec($ch);
  31.  
  32. if(!$httpResponse) {
  33. exit("$methodName_ failed: ".curl_error($ch).'('.curl_errno($ch).')');
  34. }
  35.  
  36. // Extract the response details.
  37. $httpResponseAr = explode("&", $httpResponse);
  38.  
  39. $httpParsedResponseAr = array();
  40. foreach ($httpResponseAr as $i => $value) {
  41. $tmpAr = explode("=", $value);
  42. if(sizeof($tmpAr) > 1) $httpParsedResponseAr[$tmpAr[0]] = $tmpAr[1];
  43. }
  44.  
  45. if((sizeof($httpParsedResponseAr) == 0) || !array_key_exists('ACK', $httpParsedResponseAr)) {
  46. exit("Invalid HTTP Response for POST request($nvpreq) to $API_Endpoint.");
  47. }
  48. return $httpParsedResponseAr;
  49. }


1sze wywołanie to "GET":
  1. $httpParsedResponseAr = PPHttpPostt('GetExpressCheckoutDetails', $nvpStr);

Kolejne - gdy odpowiedź z pp jest SUCCESS, to "DO":
  1. $httpParsedResponseAr = PPHttpPostt('DoExpressCheckoutPayment', $nvpStr);


Oczywiście w między czasie dołączane są tokeny i id użytkownika PP.

We wszystkich przeglądarkach prócz FireFox wszystko działa wyśmienicie! Wiem jak to obejść - sprawdzam stan checkoutu, ale przez to jest możliwość powtórzenia transakcji - czego nie może być.

Czy FireFox odświeża jakoś stronę w środku wykonywania skryptu? Bo na to wygląda (otrzymuję error, że token został już przetworzony - czyli DO zostało wykonane... Ale DO zostaje wykonane "później" - po wykonaniu się GET'a) - tak jakby FireFox nie dał dokończyć wszystkiego - a już odświeża i odświeża... Dziwne :/

Próbowałem ze sleep'em - ale nadal to samo.
Czy ktoś spotkał się z podobnym problemem, gdzie firefox "odświeża" stronę - mimo, że nie powinien?

Każda wskazówka będzie pomocna :/ siedzę nad tym już 6tą godzinę - jedyne co wykminiłem to "workaround", który jest ostatecznością :/ bo przez niego nie dostaję całego raportu z "DO".
erix
A to nie jest związane z prefetchowaniem stron w tle?
ixpack
Niestety - > about:config, wyłączyłem prefetch i nadal to samo.

Przeniosłem skrypt do osobnego pliku i wszystko jest ok - dodałem trochę js, includu i nadal było ok, ale jak już dodałem więcej js itp. to już nie działa jak powinno. Być może w którymś z dołączanych plików jest bug, ale za dużo tego żeby wszysko po kolei sprawdzać wink.gif tak czy siak - tylko Firefox ma z tym problem. Bardzo to dziwne. Workaround zrobiłem tak, że odsyłam właśnie na osobny plik, w razie "W" dodałem kontrolę sesją i jest ok. Sęk jednak w tym, że Firefox nie zawiódł mnie do wczoraj :/
Siedzę i kombinuję, wykombinowałem jedynie to co napisałem wyżej.
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.