Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 48
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    64

    Problemi IPN Paypal recupero dati transazione e inserimento nel database

    Salve, avrei bisogno di un' aiutino se è possibile. Ho preparato il file IPN seguendo la guida che ho trovato sul vostro sito ma non riesco a venirne fuori. Praticamente non riesco a recuperare le variabili della transazione e a inserirle nel database dopo che il cliente ha pagato. Non parte neppure la mail di avviso. Posto il codice in maniera tale che chi è più esperto di me, magari trovi qualche errore. Ahhhhh preciso anche che non ho ben capito se questo fiile vada accompagnato anche da un altro file .class.php per funzionare.
    Il mio file ipn-php è questo:
    <?php
    // intercetta le variabili IPN inviate da PayPal
    $req = 'cmd=_notify-validate';

    // legge l'intero contenuto dell'array POST
    foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
    }

    // intestazione, prepara le variabili PayPal per la validazione
    $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";

    // apre una connessione al socket PayPal
    $fp = fsockopen ('https://www.sandbox.paypal.com', 443, $errno, $errstr, 30);

    // converte le variabili inviate da IPN in variabili locali
    $txn_id = filter_var($_POST['txn_id'], FILTER_SANITIZE_STRING);
    $payment_status = filter_var($_POST['payment_status'], FILTER_SANITIZE_STRING);
    $receiver_email = filter_var($_POST['receiver_email'], FILTER_SANITIZE_EMAIL);
    $payer_email = filter_var($_POST['payer_email'], FILTER_SANITIZE_EMAIL);
    $first_name = filter_var($_POST['first_name'], FILTER_SANITIZE_STRING);
    $last_name = filter_var($_POST['last_name'], FILTER_SANITIZE_STRING);
    $address_street = filter_var($_POST['address_street'], FILTER_SANITIZE_STRING);
    $address_city = filter_var($_POST['address_city'], FILTER_SANITIZE_STRING);
    $address_state = filter_var($_POST['address_state'], FILTER_SANITIZE_STRING);
    $address_zip = filter_var($_POST['address_zip'], FILTER_SANITIZE_STRING);

    // 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 == "miamail@mioprovider.it"){

    // connessione a MySQL tramite istanza
    $mysqli = new mysqli("mio host", "username", "password", "nome_database");
    $count = $mysqli->query("SELECT id_ordini FROM notifiche WHERE txn_id = '$txn_id'");

    // controllo sull'identificatore della transazione
    if ($mysqli->affected_rows == 0){
    // query per l'inserimento dei dati
    $result = $mysqli->query("INSERT INTO notifiche (txn_id, payment_status, payer_email, first_name, last_name, address_street, address_city, address_state, address_zip, amount) VALUES ('$txn_id', '$payment_status', '$payer_email', '$first_name', '$last_name', '$address_street', '$address_city', '$address_state', '$address_zip', $amount)");
    }

    // liberazione della memoria dal risultato della query
    $count->close();

    // chiusura della connessione
    $mysqli->close();
    }

    }

    // azione in caso di risposta negativa da parte di PayPal else
    if (strcmp ($res, "INVALID") == 0) {
    // è possibile eseguire qualsiasi operazione
    // per esempio compilare un log degli errori o inviare una mail al venditore
    }

    }

    // chiusura della sorgente di dati
    fclose($fp);
    }

    ?>

    Può esservi utile anche la pagina che viene prima di questa? In quella pagina ho il form paypal che vi incollo solo perchè magari sbaglio li qualcosa!!!

    <form method="post" name="paypal_form" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
    <input type="hidden" name="business" value="miamail@mioprovider.it" />
    <input type="hidden" name="cmd" value="_xclick" />

    <!-- informazioni sulla transazione -->
    <input type="hidden" name="return" value="<?php echo "http://".$_SERVER['HTTP_HOST']; ?>/miacartella/conferma_pagamento.php" />
    <input type="hidden" name="cancel_return" value="<?php echo "http://".$_SERVER['HTTP_HOST']; ?>/miacartella/cancella.php" />
    <input type="hidden" name="notify_url" value="<?php echo "http://".$_SERVER['HTTP_HOST']; ?>/miacartella/ipn.php" />
    <input type="hidden" name="rm" value="2" />
    <input type="hidden" name="currency_code" value="EUR" />
    <input type="hidden" name="lc" value="IT" />
    <input type="hidden" name="cbt" value="Continua" />

    <!-- informazioni sul prodotto -->
    <input type="hidden" name="item_name" value="Telegramma Online La Nuova Posta Vetralla" />
    <input type="hidden" name="amount" value="<?php echo $prezzo ?>" />

    <!-- informazioni sulla vendita -->
    <input type="hidden" name="custom" value="ABR24" />

    <!-- informazioni sull'acquirente -->
    <input type="hidden" name="first_name" />
    <input type="hidden" name="last_name" />
    <input type="hidden" name="address1" />
    <input type="hidden" name="city" />
    <input type="hidden" name="state" />
    <input type="hidden" name="zip" />
    <input type="hidden" name="email" />

    <!-- pulsante pagamento -->
    <input type="image" src="http://www.paypal.com/it_IT/i/btn/x-click-but01.gif" border="0" name="submit" alt="Paga subito con PayPal" />
    </form>

    Ringrazio anticipatamente chiunque possa delucidarmi....perchè inizio a darci di matto!!! :- ( ((((((

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    64
    Salve F@bius e come sempre Grazie della risposta. Il mio problema e che non riesco a intercettare e a inserire neussno dei valori nel database. E come se il tutto passasse senza essere intercettato. Ho provato anche a togliere $amount ma non intercetta e non inserisce nulla nel database.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    64
    :-( niente da fare non inserisce nessuna variabile nel database e tantomeno invia una mail. Può essere compla di tiohost F@bius? anche se non credo sia questo il problema perchè altre variabili che prendo da un form precedente dove uno compila i campi del telegramma riesco a inserirle nel database.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    64
    Pensi che sbaglio qualcosa qui ?
    // connessione a MySQL tramite istanza
    $mysqli = new mysqli("mio host", "username", "password", "nome_database");
    $count = $mysqli->query("SELECT id_ordini FROM notifiche WHERE txn_id = '$txn_id'");

    id_ordini e chiave promaria. Ho provato a cnhe a toglierlo e a mettere come chiave primaria txn_id ma non cambia nulla!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    64
    Ci metto di nuovo INSERT INTO...provando a inserire solo il valore firt_name....va bene?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    64
    niente da fare.....non cambia nulla anche inserendo :

    if (strcmp ($res, "VERIFIED") == 0) {

    $query("INSERT INTO notifiche (first_name) VALUES ('$first_name')");

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    64
    spe avevo dimenticato = dopo query.....la fretta !!! riprovo

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    64
    non cambia niente.....ho ricostruito più volte il file ipn leggendo guide fino alle 5:00 di mattina questi gg....ma non se ne cava piede mannaggia

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    64
    ti scrivo la struttura del database....frse sbaglio qualcosa io :-/
    Nome database = pagamenti
    Tabella = notifiche
    Campi = id_ordini ---> Chiave Primaria
    Campi successivi .... tutti gli altri campi varchar.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    64
    azz spe.... non ho aperto nulla mi sà!!! ricontrollo e riprovo

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.