Visualizzazione dei risultati da 1 a 4 su 4

Discussione: IPN e paypal

  1. #1

    IPN e paypal

    Ho cercato in giro e letto tanti pdf di paypal ma non ci sono saltato fuori.
    Io sulla pagina pagamenti.php metto un pulsante "paga subito" in modo che faccia il solito giro:
    mio sito col pulsante->paypal(pagamento)->mio sito (pagamento avvenuto)
    Leggendo qua e la ho visto che per controllare se il pagamento è avvanuto si utilizza l'IPN ovvero la Notifica immediata del pagamento.
    Come da guida ho fatto la pagina
    controllopagamento.php col codice dato anche da paypal:

    <?

    // leggi il post del sistema PayPal e aggiungi cmd
    $req = 'cmd=_notify-validate';

    foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
    }

    // reinvia al sistema PayPal per la convalida
    $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.paypal.com', 80, $errno, $errstr, 30);

    // assegna variabili inviate a variabili locali
    $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) {
    // controlla che payment_status sia Completed
    // controlla che txn_id non sia stato già elaborato
    // controlla che receiver_email sia il tuo indirizzo email PayPal principale
    // controlla che payment_amount/payment_currency siano corretti
    // elabora pagamento
    }
    else if (strcmp ($res, "INVALID") == 0) {
    // registra indagine manuale
    }
    }
    fclose ($fp);
    }
    ?>

    Se non sbaglio in // elabora pagamento ci metterò l'aggiornamento dei dati del database con l'avvenuto pagamento

    A questo punto mi sorgono 2 dubbi:
    1) Paypal mi comunica all'istante che il pagamento è avvenuto attraverso la pagina controllopagamento.php?
    2) Come faccio a sapere chi degli utenti del mio sito ha pagato? (la pagina pagamenti.php è ad accesso con nome utete e password ma questi dati come posso darli paypal e rileggermeli a pagamento avvenuto?)

  2. #2
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    7
    A questo punto mi sorgono 2 dubbi:
    1) Paypal mi comunica all'istante che il pagamento è avvenuto attraverso la pagina controllopagamento.php?
    2) Come faccio a sapere chi degli utenti del mio sito ha pagato? (la pagina pagamenti.php è ad accesso con nome utete e password ma questi dati come posso darli paypal e rileggermeli a pagamento avvenuto?)
    1) Non lo comunica proprio proprio all'istante, anche se non ci sono ritardi, nel senso che nella pagina a cui arrivi non c'è la variabile che dice se tutto si è completato per il verso giusto oppure no, poichè questa è una chiamata asincrona.

    Da alcune prove sul server reale (non sandbox) ho visto che se non ci sono problemi, la comunicazione avviene dopo alcuni secondi.

    2) Puoi utilizzare una (ed una sola) variabile nel tuo form di invio, e che ti verrà rispedita dal server di paypal, che si deve chiamare "custom". Al limite, per avere più variabili, puoi prevedere un separatore, restando sempre nel limite di 255 caratteri (mi pare).

    ciao!

  4. #4
    Ho risolto la cosa utilizzando 4 valori temporanei che paypal mi restituisce al momento della conferma del pagamento:
    os0, os1, on0, on1.
    Quella del custom non la sapevo, grazie comunque, può sempre essermi utile

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.