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"

Po kliknięciu "Pay Now" na PayPalu - użytkownik zostaje przekierowany na moją stronę i tu niby prosta rzecz - wywołuję funkcję:
function PPHttpPostt($methodName_, $nvpStr_) { // Set up your API credentials, PayPal end point, and API version. $API_UserName = user name $API_Password = pass $API_Signature = podpis $API_Endpoint = "https://api-3t.sandbox.paypal.com/nvp"; // Set the curl parameters. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $API_Endpoint); curl_setopt($ch, CURLOPT_VERBOSE, 1); // Turn off the server and peer verification (TrustManager Concept). curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); // Set the API operation, version, and API signature in the request. $nvpreq = "METHOD=$methodName_&VERSION=$version&PWD=$API_Password&USER=$API_UserName&SIGNATURE=$API_Signature$nvpStr_"; // Set the request as a POST FIELD for curl. curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq); // Get response from the server. $httpResponse = curl_exec($ch); if(!$httpResponse) { } // Extract the response details. foreach ($httpResponseAr as $i => $value) { } } return $httpParsedResponseAr; }
1sze wywołanie to "GET":
$httpParsedResponseAr = PPHttpPostt('GetExpressCheckoutDetails', $nvpStr);
Kolejne - gdy odpowiedź z pp jest SUCCESS, to "DO":
$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".