Ipn paypal problema nella risposta

migo80

Utente Attivo
25 Apr 2013
241
3
18
Salve sto cercando di inserire in un sito su altervista un sistema di pagamento paypal con risposta.
Ma ho problemi con l' IPN mi da sempre esito invalid, qualcuno sa come farlo funzionare?
Per i test uso sanbox.
Allego il codice dell' istener:

PHP:
<?php 
// CONFIG: Enable debug mode. This means we'll log requests into 'ipn.log' in the same directory. 
// Especially useful if you encounter network errors or other intermittent problems with IPN (validation). 
// Set this to 0 once you go live or don't require logging. 
define("DEBUG", 1); 
// Set to 0 once you're ready to go live 
define("USE_SANDBOX", 1); 
define("LOG_FILE", "./ipn.log"); 
// Read POST data 
// reading posted data directly from $_POST causes serialization 
// issues with array data in POST. Reading raw POST data from input stream instead. 
$raw_post_data = file_get_contents('php://input'); 
$raw_post_array = explode('&', $raw_post_data); 
$myPost = array(); 
foreach ($raw_post_array as $keyval) { 
    $keyval = explode ('=', $keyval); 
    if (count($keyval) == 2) 
        $myPost[$keyval[0]] = urldecode($keyval[1]); 
} 
// read the post from PayPal system and add 'cmd' 
$req = 'cmd='.urlencode('_notify-validate'); 
if(function_exists('get_magic_quotes_gpc')) { 
    $get_magic_quotes_exists = true; 
} 
foreach ($myPost as $key => $value) { 
    if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) { 
        $value = urlencode(stripslashes($value)); 
    } else { 
        $value = urlencode($value); 
    } 
    $req .= "&$key=$value"; 
} 
// Post IPN data back to PayPal to validate the IPN data is genuine 
// Without this step anyone can fake IPN data 
if(USE_SANDBOX == true) { 
    $paypal_url = "https://www.sandbox.paypal.com/cgi-bin/webscr"; 
} else { 
    $paypal_url = "https://www.paypal.com/cgi-bin/webscr"; 
} 
$ch = curl_init($paypal_url); 
if ($ch == FALSE) { 
    return FALSE; 
} 
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $req); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); 
if(DEBUG == true) { 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLINFO_HEADER_OUT, 1); 
} 
// CONFIG: Optional proxy configuration 
//curl_setopt($ch, CURLOPT_PROXY, $proxy); 
//curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 
// Set TCP timeout to 30 seconds 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close')); 
// CONFIG: Please download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set the directory path 
// of the certificate as shown below. Ensure the file is readable by the webserver. 
// This is mandatory for some environments. 
//$cert = __DIR__ . "./cacert.pem"; 
//curl_setopt($ch, CURLOPT_CAINFO, $cert); 
$res = curl_exec($ch); 
if (curl_errno($ch) != 0) // cURL error 
    { 
    if(DEBUG == true) {     
        error_log(date('[Y-m-d H:i e] '). " erro 1 Can't connect to PayPal to validate IPN message: " . curl_error($ch) . PHP_EOL, 3, LOG_FILE); 
    } 
    curl_close($ch); 
    exit; 
} else { 
        // Log the entire HTTP response if debug is switched on. 
        if(DEBUG == true) { 
            error_log(date('[Y-m-d H:i e] '). "erro 2 HTTP request of validation request:". curl_getinfo($ch, CURLINFO_HEADER_OUT) ." for IPN payload: $req" . PHP_EOL, 3, LOG_FILE); 
            error_log(date('[Y-m-d H:i e] '). "erro 3 HTTP response of validation request: $res" . PHP_EOL, 3, LOG_FILE); 
        } 
        curl_close($ch); 
} 
// Inspect IPN validation result and act accordingly 
// Split response headers and payload, a better way for strcmp 
$tokens = explode("\r\n\r\n", trim($res)); 
$res = trim(end($tokens)); 
if (strcmp ($res, "VERIFIED") == 0) { 
    // check whether the payment_status is Completed 
    // check that txn_id has not been previously processed 
    // check that receiver_email is your PayPal email 
    // check that payment_amount/payment_currency are correct 
    // process payment and mark item as paid. 
    // 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']; 
     echo "The response from IPN was: <b>" .$res ."</b>"; 
    // assign posted variables to local variables 
     
    $txn_id = $_POST['txn_id']; 
     echo $txn_id; 

    // IPN message values depend upon the type of notification sent. 
    // To loop through the &_POST array and print the NV pairs to the screen: 
    foreach($_POST as $key => $value) { 
      echo $key." = ". $value."<br>"; 
    } 
    if(DEBUG == true) { 
        error_log(date('[Y-m-d H:i e] '). "erro 4 Verified IPN: $req ". PHP_EOL, 3, LOG_FILE); 
    } 
} else if (strcmp ($res, "INVALID") == 0) { 
    // log for manual investigation 
    // Add business logic here which deals with invalid IPN messages 
      echo "non valido"; 
    if(DEBUG == true) { 
        error_log(date('[Y-m-d H:i e] '). "erro 5 Invalid IPN: $req" . PHP_EOL, 3, LOG_FILE); 
    } 
} 
?>
 

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.052
6
38
51
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
Ciao, non capisco perchè hai fatto sta sorta de casino... Allora se devi fare dei test usi sandbox e va bene ma per eseguire un pagamento di test devi semplicemente puntare all'indirizzo che hai citato ed inserire in GET i dati utente:
Codice:
https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_xclick&address_override=1&bn=IT_ICM-WPS&business=tuo%40account&item_name=NOME_PRODOTTO_ACQUISTATO&itemNumber=NUMERO_ORDINE&amount=IL_PREZZO&currency_code=EUR&button_subtype=services&no_note=0&charset=UTF%2d8&first_name=<?php echo $nome ?>&last_name=<?php echo $cognome ?>&address1=<?php echo $via ?>&address2=&city=<?php echo $citta ?>&state=$pv&country=IT&zip=<?php echo $cap ?>&email=<?php echo $email ?>&no_shipping=1&return=http%3A%2F%2Fwww.tuosito.it%2Fphp%2FbackPaypal.php?ItemNumber=<?php echo  $code ?>&cancel_return=http%3A%2F%2Fwww.bookbox.it%2Findex.php?pay=0
tuo%40account: l'account pay pal dove ricevere il pagamento, l'indirizzo:backPaypal.php lo uso per ritornare al sito come conferma del pagamento, la variabile: cancel_return la usi per indirizzare l'utente se abbandona il pagamento.
Ciao
 
Discussioni simili
Autore Titolo Forum Risposte Data
N Problema IPN paypal PHP 0
Pi3tro IPN paypal problema PHP 2
baobabdesign [PHP] Annullare abbonamento con paypal IPN da sito esterno PHP 0
gandalf1959 IPN Listener di Paypal, non riesco a registrare utente nel mio DB PHP 14
M IPN PayPal PHP 2
C [PHP] Ipn Pay PAL Mobile PHP 0
Z PayPal dubbio PHP 0
gandalf1959 formattazione carrello plug-in WP Simple Paypal Shopping cart WordPress 2
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
A Come creare pulsante donazione PayPal HTML e CSS 5
D [Javascript] salvare immagine canvas - paypal Javascript 0
M [SPONSOR] A BASSO PREZZO - PAYPAL Vendere e Acquistare pubblicita' online 0
C [PHP] Aggiungere pulsante paypal PHP 2
felino Risolto - [Wordpress][WooCommerce] PayPal Checkout e campi di fatturazione WordPress 2
felino [Wordpress][WooCommerce] PayPal: nessun notifica email dopo il pagamento WordPress 1
S form php che invia dati a Paypal PHP 4
A [PHP] Url pagamento paypal in email PHP 2
C [PHP] internal error paypal PHP 6
webmachine [PHP] Integrazione PayPal con PHP PHP 0
romeocharly nuove norme di sicurezza paypal Guadagnare col Sito 3
A configurare pagamento paypal PHP 0
C Come posso integrare il bottone "paga adesso" di paypal e un form php per invio dati? PHP 1
L Paypal - aggiornamenti alla sicurezza PHP 5
N **AAA** CERCASI ACCOUNT FACEBOOK CON ALMENO 5.000 AMICI, se con seguaci MEGLIO, PAGO CON PAYPAL Annunci servizi di Social Media Marketing 0
gandalf1959 Passare variabili da listener Paypal a un'altra pagina PHP 0
Gabriele Visioli PayPal Gratuito o a Pagamento? Discussioni Varie 2
R configurazione tasto paypal PHP 0
novello88 Storno pagamento PayPal e nota di credito Leggi, Normative e Fisco 0
L Calcolo della percentuale PayPal che varia in base al totale. E-Commerce 1
L Integrazione PayPal. Con tasto paga adesso e link di ritorno PHP 5
S Sconto su pagamento paypal PHP 1
R [Risolto] Passare Variabile importo carrello a Paypal Classic ASP 7
C Notifiche paypal express Magento 0
P Prestashop pagamento paypal CMS (Content Management System) 2
I [Risolto] ASP VBSCRIPT e PAYPAL problemi con le spese di spedizione dinamiche Classic ASP 3
M Paypal inviare e ricevere variabili E-Commerce 1
M paypal PHP 0
N Paypal ha problemi di pagamento? E-Commerce 4
I variabile prezzo paypal PHP 4
F Pagamento con paypal PHP 11
A problema con form paypal HTML e CSS 0
A probliemi con il codice paypal HTML e CSS 0
L Devo pagare le tasse sulle donazioni PayPal? Leggi, Normative e Fisco 2
L Pagamento con Paypal e ritorno di dati al sito E-Commerce 4
I Problema tasto paypal E-Commerce 1
I PHP e Paypal PHP 9
P Bottone donazioni paypal E-Commerce 2
L E-commerce Problema Url di ritorno con paypal E-Commerce 4
T Ricevere donazioni con paypal E-Commerce 13
P [JSP] Integrazione PayPal Java 3

Discussioni simili