Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    IPN paypal return INVALID

    Ciao a tutti, prima di aprire questa discussione ho letto le altre e ho visto che ce ne sono di molto simili, ma non sono riuscito a risolvere il mio problema.
    Sto implementando nel mio sito il modulo di pagamento di paypal. da sandbox ho creato due account, uno business per vendere il prodotto e l'altro personal per comprarlo.
    A tutto questo voglio aggiungere il modulo ipn per la notifica dei pagamenti.
    Il codice che utilizzo è quello classico che mette a disposizione payapl, non faccio nessuna modifica. Il problema è che una volta che effettuo il pagamento e ritorno alla pagina dove c'è il codice ipn, ricevo il valore "INVALID" e non ci sono dati in post da inserire nel db.
    Dov'è che sbaglio? c'è qualche passaggio che salto?

    Il tasto è questo

    <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_s-xclick">
    <input type="hidden" name="hosted_button_id" value="1095335">
    <input type="hidden" name="test_ipn" value="1" />
    <input type="hidden" name="notify_url" value="http://miosito/ipn.php">
    <input type="image" src="https://www.sandbox.paypal.com/it_IT/IT/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - Il sistema di pagamento online più facile e sicuro!">

    </form>

    mentre la pagina ipn.php è questa

    <?PHP
    // read the post from PayPal system and add 'cmd'
    $req = 'cmd=_notify-validate';
    foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
    }

    // post back to PayPal system to validate
    $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";
    $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);

    // assign posted variables to local variables
    $item_name = $_POST['item_name'];
    $item_number = $_POST['item_number'];
    $payment_status = $_POST['payment_status'];
    $payment_amount = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $payer_email = $_POST['payer_email'];

    if (!$fp) {
    // HTTP ERROR
    } else {
    fputs ($fp, $header . $req);
    while (!feof($fp)) {
    $res = fgets ($fp, 1024);
    if (strcmp ($res, "VERIFIED") == 0) {
    echo "verificato";
    // Verifica che payment_status è "Completed"
    // Verifica che non hai già processato txn_id
    // Verifica che receiver_email è la tua email primaria PayPal
    // Verifica che payment_amount/payment_currency sono corretti
    // Prosegui col pagamento
    if ( strcmp ($payment_status, "COMPLETED") == 0 ) {
    // Pagamento Completato
    echo "completed";
    //.....
    }

    }
    else if (strcmp ($res, "INVALID") == 0) {
    // log per una investigazione manuale
    // Invio email di avviso
    echo "invalido";
    $mail_From = "From: mycommerce@noreply.com";
    $mail_To = "";
    $mail_Subject = "INVALID IPN";
    $mail_Body = $req;

    foreach ($_POST as $key => $value){
    $emailtext .= $key . " = " .$value ."\n\n";
    }
    //mail($mail_To, $mail_Subject, $emailtext . "\n\n" . $mail_Body, $mail_From);
    }
    }
    fclose ($fp);
    }
    ?>

    Vi ringrazio in anticipo, spero possiate aiutarmi.

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Io l'ipn l'ho sviluppato parecchio tempo fa, per cui ho i ricordi un po' vaghi, ma ricordo che la sandbox si rivelò inutile, o quantomeno non riuscii a farla funzionare. Per fare le prove dovetti fare dei veri trasferimenti di denaro, avendo poi la possibilità di stornarli

  3. #3
    grazie luca per il consiglio, però documentandomi su internet ho visto che ci sono altre persone a cui funziona il sistema di test. effettivamente il fatto che non sia attendibilissimo l'ho pensato pure io, ma devo pur aver modo di testarlo. fra l'altro non sono io il titolare del conto, ne ho carte di credito per testarlo.... vedrò cosa mi posso inventare. nel frattempo spero che qualcuno possa leggere e aiutarmi.

  4. #4
    ciao , anche io sto avendo lo stesso problema
    l'unica idea, anche se non ha molto senso, sarebbe quella di provare con php4 anzichè 5
    altervista ha il php4 ma forse non permette di usare fsockopen()
    ... ma perchè utilizzi un sandbox artigianale e non quello di paypal?
    semplicità ... al sol nominarla sembra svanire

  5. #5
    io sto usando il condice che ho trovato su sandbox di paypal.... c'è un altro tipo di codice che non conosco? se è così puoi farmelo sapere? grazie... ciao

  6. #6
    scusa mi riferivo al bottone non al listner ipn.php
    non conoscevo questo comodo bottone sandbox io utilizzavo la pagina per il sandbox messa a disposizione da paypal
    https://developer.paypal.com/us/cgi-bin/devscr
    semplicità ... al sol nominarla sembra svanire

  7. #7
    ah si, ho provato da li. ma io voglio fare partire il tutto dalla mia applicazione. cmq il bottone l'ho ottuneto sempre dalla sandbox di paypal. ho creato un tasto "paga subito" .

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 © 2025 vBulletin Solutions, Inc. All rights reserved.