Salve a tutti, seguendo la guida del sito ho provato a implementare un semplice script php per creare il listener php dell'IPN di paypal... ovviamente con scarsi risultati.
Cosa c'è di sbagliato? Son quasi sicuro fallisca il controllocodice:<?php $posted_data = print_r($_POST,true); file_put_contents('IPN_data.txt',$posted_data); // 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.1\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 ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); // converte le variabili inviate da IPN in variabili locali $reflink = $_POST['custom']; $refnum = $_POST['item_number']; $receiver_email = $_POST['receiver_email']; // 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 == "aguiari.diego-facilitator@gmail.com"){ // connessione a MySQL tramite istanza $mysqli = new mysqli("localhost", "username", "", "my_database"); // controllo sull'identificatore della transazione // query per l'inserimento dei dati $result = $mysqli->query("INSERT INTO utenti (reflink, numref) VALUES ('$reflink', '$refnum')"); // liberazione della memoria dal risultato della query // 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); } ?>E' tutto il giorno che ci sto impazzendocodice:if (strcmp ($res, "VERIFIED") == 0) {
Grazie in anticipo!


Rispondi quotando
