- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problemi IPN Paypal recupero dati transazione e inserimento nel database
-
Ciao Shad e grazie ancora del tuo intervento. Posso assicurarti che lo script scrive i dati nel database perchè è lo stesso script che scrive alcuni dati nel database dal form precedente a quello di PayPal.
Quindi quando il cliente inserisce dati mittente e destinatario nel form precedente questi dati vengono scritti nel database. La query è praticamente la stessa. Comunque ora provo a fare qualche altra modifica e vedo se riesco a cavarne piede.
Ti ringrazio della disponibilità e tornerò a scrivere in caso avessi bisogno. Ti auguro una buona domenica.
Saluti
-
Cosa molto strana.....ho tolto i controlli e ho dato la query diretta al rientro dal form di pagamento. Ho provato a lasciare solo txn_id come dato da inserire e riesce a inserirlo. Pero se richiedo di inserire altri dati come payer_mail, amount etc non li inserisce. Ora non riesco a spiegarmi il perchè !!!
-
Inserito anche il prezzo pagato......inizia a tornarmi il buon' umore °____°
-
ok aggiornamento....sono riuscito a far inserire i valori che voglio.....problema sull' inserimento del prezzo. Il mio form non ha un prezzo fisso, infatti il prezzo va in base al numero di parole che un utente inserisce nel form. Quindi varia in questo modo....fino a 20 parole 4,40 € da 21 a 50 6,75 € etc etc. Ho provato a recuperare la variabile "amount" ma non riesce a recuperarla e nel database la stringa "amount" resta vuota. Qualche suggerimento?
-
Se abilito il controllo prima della query......non inserisce nessun valore nel database. Ora mi chiedo .....com'è possibile? Senza controllo la query parte e funziona, con il controllo non funziona niente che @@
-
Per spiegarmi meglio incollo i due pezzi di codice. Cosi funziona tutto senza controllo:
// verifica l'apertura della connessione al socket
if (!$fp) {
{$query = "INSERT INTO notifiche (
txn_id
, payer_status, payer_email, first_name, last_name, address_street, address_city, address_state, address_zip,amount
) VALUES ('$txn_id', '$payer_status', '$payer_email', '$first_name', '$last_name', '$address_street', '$address_city', '$address_state', '$address_zip', '$mc_gross')";
if (@mysql_query($query)) {
}Cosi NON funziona niente quando abilito il controllo:
// verifica l'apertura della connessione al socket
if (!$fp) {// se la connessione non avviene l'esecuzione dello script viene bloccata exit(); // in alternativa è per esempio possibile inviare un'email al venditore } else { // elaborazione delle informazioni fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); // azioni in caso di risposta positiva da parte di PayPal if (strcmp ($res, "VERIFIED") == 0) { // controllo sull'email del venditore if($receiver_email == "[email protected]"){ // controllo sull'identificatore della transazione if (mysqli_num_rows == 0){ // query per l'inserimento dei dati $result = $mysqli->query("INSERT INTO notifiche (`txn_id`, payer_status, payer_email, first_name, last_name, address_street, address_city, address_state, address_zip, `amount`) VALUES ('$txn_id', '$payer_status', '$payer_email', '$first_name', '$last_name', '$address_street', '$address_city', '$address_state', '$address_zip', '$mc_gross')"); } // liberazione della memoria dal risultato della query $count->close(); // chiusura della connessione $mysqli->close();
-
Shad credi comporti qualcosa se non abilito la verifica? Tanto nel database vedo se il pagamento è stato completato o meno....mi inserisce lo stato di pagamento tramite la variabile "payer_status". Pensi possa bastare per essere sicuri del pagamento? Io credo di si visto che è una variabile che proviene da Paypal giusto?. Una domanda....se voglio ricevere una mail di avviso quando un utente ha richiesto il servizio come faccio? Puoi scrivermi un codicino?....se non chiedo troppo ovviamente.....mi basta anche un buon link su cui buttarci gli occhi °___° e studiccchiare un po.
-
Ciao,
un controllo lo farei lo stesso. Non dare per scontato che lo script sia chiamato da paypal. Se per qualche motivo si individuasse come chiamare lo script lo si potrebbe fare da un sito diverso passandoti le stesse informazioni che richiedi a paypal.Per ricevere la mail di avviso basta usare la funzione mail di PHP nello script che inserisce la conferma di pagamento nel DB.
Occhio che la configurazione della funzione può cambiare da server a server.
Una piccola ricerca di partenza su google potrebbe essere questa:
https://www.google.it/#q=php+invio+mailSaluti
-
Ok proverò a sistemare questa cosa del controllo Shad. Grazie del link, ora ci do uno sguardo
Saluti
-
Shad scusa se rompo ancora e "approffitto" del tuo sapere.
Non riesco a risolvere il problema. Se tolgo la verifica funziona tutto alla grande.
Ora mi chiedo, ma la funzione fsockopen può dare problemi su TopHost? Credo di no....ma inizio a dubitare e chiederò delucidazioni al loro staff domani.
Inizio a deprimermi...per la frustrazione.
Mi consigli di fare una prova togliendo sandbox ed eseguendo una transazione da 0,01 € in ambiente "reale" paypal, per vedere se la verifica funzionia in ambiente "reale"?
Per quanto riguarda la funzione mail ho dato uno sguardo a quel link e implementarla nello script non è difficile. Ma se non risolvo questo problema della verifca....tutto il lavoro andra buttato al vento....e mi rodeeeeee. Se qualcun' altro leggesse e ha un' idea....gradirei leggerla almeno non scasso le @@ a Shad :x.
Buonanotte ai lettori!!!
-
Non ti preoccupare, nessun fastidio.
La fsockopen a mio parere può dare problemi. Per verificarlo fai una pagina dove usi solo quella funzione e vedi che succede.Sconsiglio invece di fare prove "reali" in quanto la sandbox di paypal è la perfetta riproduzione simulata dell'ambiente di produzione. In altre parole se non ti funziona in sandbox è inutile provare in produzione.
-
Ciao Shad, ho verificato la funzione....e gira tutto. Il problema me lo da questo pezzo di codice che incollo sotto. Se tolgo questo pezzo funziona tutto.
exit();// in alternativa è per esempio possibile inviare un'email al venditore } else { // elaborazione delle informazioni fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); // azioni in caso di risposta positiva da parte di PayPal if (strcmp ($res, "VERIFIED") == 0) { // controllo sull'email del venditore if($receiver_email == "[email protected]"){
Quindi partendo da // verifica l'apertura della connessione al socket
if (!$fp) {
e inserendo subito la query tutto gira a meraviglia.
Ma che diamine può essere? Più spremo il cervello e più mi va a fuoco.....sono 15 gg che combatto con questo script!!!
Ma in tutti i 6723467236473268 forum e pagine web che ho visitato questo pezzo di codice esiste ...sarà meglio chiamare un prete e farmi liberare dal diavolo che sta crescendo in me? :bho:
-
Shad, ma se l' account business su sandbox è Unverified puo darsi che sia questo il problema? Come posso metterlo in VERIFIED su sandbox? Questo e cio che mi dice sull account e risulta Unverified guarda su Status:
[h=2]Account information Email ID: miamail(chiocciola)mailbusiness.it
Password: Change Password Account type: Business-Pro Status: Unverified
Country: IT
-
No Gianni, non credo sia quello il problema. Poi non so', magari fai qualche ricerca sul web.
Scusa il ritardo della risposta ma sono stato un po' impegnato in questi giorni.
Saluti
-
Ciao Gianix,ho letto il tuo post dell annoscorso ho problemi con questo file ipn, se hai risolto potresti postare un codice funzionante ? Ame serve solo di inserire i dati in un database,Ti sarei Grato.....
-
Scusate la grammatica ma srivo dal tel.....ho le dita troppo grosse....accc