Sto scrivendo un modulo per inviare dati a paypal, e questo funziona bene, creo il modulo con campi nascosti e poi ho un pulsante di invio che invia tutto a paypal.Auto invio di un modulo (cURL)
Tuttavia, quando l'utente fa clic su quel pulsante, c'è più che voglio fare, ad esempio cambiare il loro stato del carrello nel database. Quindi, voglio essere in grado di eseguire del codice quando fanno clic su Invia e quindi inviare i dati a PayPal.
Non voglio usare javascript per questo.
Il mio metodo al momento utilizza cURL, il modulo torna alla pagina corrente, quindi controllo i dati $ _POST, altri comandi come l'aggiornamento dello stato del carrello, quindi un comando di arricciatura e inviare i dati del modulo a paypal. Ora, viene pubblicato correttamente, ma il browser non va su paypal.
All'inizio stavo solo riprendendo il risultato in una stringa e poi echeggiando e ho potuto vedere che il post ha avuto successo, quindi ho impostato CURLOPT_FOLLOWLOCATION su 1 supponendo che questo avrebbe permesso al browser di andare su paypal ma non lo fa, quello che sembra fare è prendere alcune cose da paypal e metterle sulla mia pagina.
Sta usando cURL la cosa giusta per questo? e se sì, come faccio a risolvere questo problema? Voglio stare lontano da javascript per questo come solo gli utenti con javascript abilitato avrebbero il loro carrello aggiornato.
Il codice im che usa per arricciare è sotto, il post_data è un array che ho creato e quindi leggo le coppie chiave-valore in post_string.
//Set cURL Options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, false);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_connection, CURLOPT_MAXREDIRS, 20);
//Set Data to be Posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//Execute Request
curl_exec($curl_connection);
grazie, speravo di non doverlo fare nella richiamata da paypal, volevo impostare lo stato del carrello mentre si passa a paypal e uno quando ritorna solo così può accuratamente tenere traccia dei progressi e per aiutare con la correzione di eventuali errori, provare a impostare alcuni header http e vedere, ma potrei doverlo fare solo nel callback. Ho appena pensato che autosubmitting un modulo e seguendo l'azione sarebbe stato più facile. – cast01
Immagino che potresti ancora fare entrambi gli utenti che hanno javascript abilitato.Per quelli che non hanno javascript abilitato viene utilizzata solo la richiamata ma per quelli (maggioranza) che hanno javascript abilitato, è possibile impostare il flag 'going-of-to-paypal' in una chiamata ajax e impostare il 'completo' flag nella richiamata. –