Contattaci

Tracciamenti Paypal tramite IPN come tracciare il 100%

Settembre 5, 2017
Pubblicato da: 
Senior Developer

Aumentano gli e-commerce e in generale i sistemi per fare transazioni on-line e, di conseguenza, aumentano anche i problemi da risolvere.
Negli ultimi mesi, infatti, la domanda che regna sovrana è:

Massimo ho questo cliente che ha l'e-commerce X ma Analytics perde il 20-30-40 % delle transazioni, come facciamo per "sistemare"?

Ora, a prescindere che sia un e-commerce o semplicemente una landing page, e che venda un servizio singolo o un prodotto singolo, il discorso non cambia: bisogna capire come tracciare correttamente e al 100% i sistemi di pagamento.

Prenderò come esempio Paypal perchè è il sistema maggiormente utilizzato e che tutti conosciamo, ma la sostanza si può applicare a qualsiasi sistema di pagamento (es. Banca Sella, Unicredit, MyBank, Braintree, GestPay, Stripe, Skirill, MultiSafePay, ecc. ). Per tracciare il 100% delle transazioni devi attivare il servizio di chiamate CallBak di questi sistemi, che su Paypal si chiama IPN (Instant Payment Notification), ovvero una notifica immediata di pagamento.

 

In questo articolo affronteremo questi punti:

Cos'è l'IPN

L'IPN è un sistema di chiamata SERVER to SERVER, questo significa che il sistema di Paypal comunica direttamente al nostro e-commerce la transazione. Normalmente in Paypal se non si conosce l'IPN e si imposta il classico redirect automatico al sito, con delle controindicazioni quali:

  1. blocco da browser dei redirect;
  2. utenti che escono prima del redirect;
  3. utenti che atterrano nella pagina del redirect ma chiudono la finestra prima che sia completato il tracciamento;

Questo, dunque, si traduce nella perdita delle transazioni di cui parlavo prima.

Tracciare Paypal con comando IPN

Il comando Paypal per attivare IPN si trova in Paypal -> profilo e impostazioni -> strumenti di vendita -> Notifiche immediate di pagamento: da qui puoi impostare il link dove Paypal potrà comunicare al tuo e-commerce che la transazione è stata effettuata correttamente.
Esempi di url IPN nei vari e-commerce:

  1. MAGENTO : //tuo-sito/paypal/ipn/ ;
  2. WOOCOMMERCE : //tuo-sito/?wc-api=WC_Gateway_Paypal ;
  3. PRESTASHOP : dipende dal modulo installato ;

Nella maggior parte degli e-commerce sarà direttamente il sistema a mandare il tracciamento a Google Analytics e quindi a farti vedere la transazione avvenuta, ma attenzione! Non è sempre così. Infatti, se per esempio hai un e-commerce "fuffa", cioè il classico e-commerce CUSTOM che spesso sento dire "è fatto appositamente per me", a meno che tu non sia Yoox o Zalando, tutte queste cose automatiche non le hai. Nel tuo e-commerce CUSTOM non ci sarà un'url fatta appositamente per la chiamata IPN di Paypal e bisognerà chiedere uno sviluppo ad hoc.

E non finisce qui: bisognerà anche implementare il sistema di chiamate verso Google Analytics tramite la funzione COLLECT, cioè una chiamata sempre Server to Server per comunicare a Google Analytics l'avvenuta transazione, con tutti i relativi parametri.

Tracciare Paypal su Google Analytics

Mettiamo il caso quindi di non avere un sistema che prevede già i tracciamenti su Google Analytics e di dover quindi sviluppare a mano tutto. Ecco i passaggi da fare:

  1. Creare un file di atterraggio IPN che prende tutti i dati che Paypal gli passa appena effettuata la transazione;
  2. Creare le classi necessarie per le chiamate HTTP tramite CURL da mandare a Google Analytics, qui potete generare le chiamate di esempio e qui trovate la guida completa a tutte le chiamate;

Un piccolo esempio fatto in php e in maniera molto veloce di quello che sto dicendo. Qui di seguito sto tracciando un Evento, ma è possibile, cambiando la variabile $field, passare una transazione.

creo un file php su /ipn/ipn.php con all'interno :

[php] <?php if(isset($_GET['control']) && $_GET['control']=='CODICE_SEGRETO'){ $url = 'https://www.google-analytics.com/collect'; $fields = array( 'v' => '1',
'_v' => 'j46',
't' => 'event',
'ec' => 'Donazione', //Categoria
'ea' => 'Effettuata', //Azione
'el' => '1-mese', //Etichetta
'ev' => '87', //Valore
'cid' => $_REQUEST['custom'],
'tid' => 'UA-XXXXXXXX',
);

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url.'?'.$fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch,CURLOPT_POST, count($fields));
//curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);
gen_log($url,$fields_string);
}

function gen_log($url,$fields_string){
$testo = "------\r\n".date("Y-m-d H:i:s")."\r\ngoogle_curl.php\r\n".$url.'?'.$fields_string."\r\n";
$var=fopen("logger.txt","a");
fwrite($var,$testo);
fclose($var);
}
function gen_uuid() {
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
mt_rand( 0, 0xffff ),
mt_rand( 0, 0x0fff ) | 0x4000,
mt_rand( 0, 0x3fff ) | 0x8000,
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
} [/php]

3.  Andare nel pannello di controllo di Paypal e all'indirizzo IPN settare https://www.tuosito.it/ipn/ipn.php;

Tracciare Paypal con Gravity form di WordPress

L'elemento interessante di Gravity form è che ha già tutto predisposto, quindi di default l'IPN è questo, https://example.com/?page=gf_paypal_ipn però attenzione, attualmente non c'è un modo automatico per tracciare anche la transazione con Google Analytics, quindi Paypal comunica a Gravity form che la transazione è avvenuta ma Google Analytics non lo sa! E quindi come facciamo?
E qui viene il bello, bisogna creare una chiamata così,

add_action( 'gform_paypal_post_ipn', 'your_function_name', 10, 4) ;

e la funzione "your_function_name" chiama il file https://www.tuosito.it/ipn/ipn.php che abbiamo visto poco sopra, il quale si occupa di comunicare con Google Analytics, qui trovate qualche indicazione https://www.gravityhelp.com/documentation/article/gform_paypal_post_ipn/

Ma possibile che non ci sia una cosa più semplice?

Si si c'è, non è più semplice ma è più ordinata e si capisce meglio, continuate a leggere e diventerà tutto più chiaro.

Tracciare Paypal con WooCommerce

Infine arriviamo ad installare woo-commerce che ci risolve nativamente molte cose, prevede già un IPN https://example.com/?wc-api=WC_Gateway_Paypal ed è già integrato con Google Analytics per tracciare le transazioni, quindi ci risolve un pò di cose in maniera nativa.

Traciamenti IPN multipli con Zapier

Bene siamo arrivati alla fine con la domanda fatidica:

cosa succede se io dopo una transazione devo notificare a più servizi la mia transazione?

Facciamo un esempio:

Una volta che il prodotto/servizio è acquistato voglio comunicarlo ai seguenti servizi:

  • WordPress;
  • Google Analytics;
  • al mio sistema di Newsletter per dirgli che l'utente "Mario Rossi" ha acquistato e quindi inserirlo in una lista particolare;
  • al mio ERP (gestionale) interno per far partire l'ordine o magari generare la fattura o magari comunicarlo al magazzino per la spedizione;

Come abbiamo visto Paypal comunica ad un indirizzo singolo IPN, quindi come facciamo a comunicare a tutti questi servizi?

Ci sono 2 soluzioni, una più intelligente e una più economica (a prima vista). Vediamole entrambe:

  1. Soluzione "economica": Si deve prendere il file PHP che ho inserito sopra e farlo diventare un collettore di chiamate, praticamente Paypal chiama il vostro file PHP e poi lui si occupa di fare tutte le chiamate ai vari servizi.
    Questa è una soluzione che a prima vista sembra semplice ed economica ma alla lunga bisognerà fare manutenzione e il rischio di bug e di errori è dietro l'angolo quindi NON la consiglio;
  2. Soluzione intelligente: fare un account su Zapier, spendere pochi euro di abbonamento e integrare li tutte le chiamate che vogliamo, infatti Zapier è proprio un Collettore e il suo compito è proprio fare questo lavoro.
    In zapier i vari collegamenti ai servizi si chiamano ZAP, qui di seguito un esempio dove ho collegato Paypal -> mailup -> gravity form di WordPress

Inoltre vi mette a disposizione tutti i LOG delle chiamate e gestisce anche gli errori facendo partire magari una mail quando qualche cosa non funziona, non è finita qui, i sistemi di integrazione con altri programmi sono in continua crescita e si occupano loro di fare la manutenzione delle varie integrazioni.

E tu riesci a tracciare al 100% ed in modo corretto i sistemi di pagamento sul tuo e-commerce?
Affidati ai nostri specialist

Contattaci

Cosa possiamo fare per te? Compila il form

"*" indica i campi obbligatori

Nome*
Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.

Pubblicato da: 
Sara Gasparini
Senior Developer
Ultimi articoli
SOS COM: un’opportunità per conoscere e comunicare la sostenibilità
L’ evento dedicato alle aziende per esplorare come comunicare la sostenibilità e trasformare la normativa CSRD in opportunità strategica. Partecipa anche tu!
Continua a leggere
Per un Bid l’ADV perse la cappa. Come fare per vincere la partita?
Le strategie di bid e l’ottimizzazione possono fare la differenza in un mercato in continua evoluzione… ma non bastano!
Continua a leggere
Formazione internazionale: Alessandro Faggian al BrightonSEO
Scopri i takeaway più interessanti del Brighton SEO di ottobre 2024, con un focus sull’AI e lo stato della Search, con l’intervento di Mueller!
Continua a leggere
Sosteniamo

Idee, tecnologia, omnicanalità e cultura: in site By site abbiamo un approccio guidato dalle idee e ispirato dai dati, per creare valore per i brand, step By step.

Via Italo Bordin, 117 b/c
35010 Cadoneghe, Padova

Tel +39 049 629146
Email info@sitebysite.it

Corso Buenos Aires, 43
20124 Milano

Tel +39 02 365 90500

2024 © site By site S.p.A. - C.F./P.IVA 04256460280 - Registro delle Imprese di Padova - R.E.A. 375285 - Capitale sociale 50.000,00 i.v. € Info GDPR (Regolamento UE 2016/679).

Privacy Policy | Cookies Policy | Preferenze Cookie

magnifiercrosschevron-downchevron-right linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram