Problemi col vostro sito web? No.. niente!

Moduli del sito e Mailchimp

Molte aziende hanno la necessità di raccogliere indirizzi email già profilati (cioè che sono interessati agli articoli o ai servizi proposti) a cui mandare di volta in volta newsletter con offerte, promozioni o semplicemente novità aziendali, auguri e chi più ne ha ne metta.

Così solitamente si creano dei moduli nel sito aziendale in cui questi indirizzi vengono salvati in un data base.

E già significherebbe molto avere una lista di indirizzi email salvata in questo modo. Almeno in un secondo momento sono facilmente elaborabili.

Ma la vera perfezione del processo elaborativo sarebbe quella di raccogliere gli indirizzi (e gli altri dati necessari, tipo nome, cognome, località, lingua di preferenza) sul sito e non solo salvarli a data base, ma anche inviarli ad uno di quei gestori di newsletter che si prendono il carico di smistare le email ogni qual volta si ha la necessità di invii massivi.

Siccome questi servizi, ovviamente, sono a pagamento, ha una logica economica creare un'account solo sopra i mille indirizzi raccolti.

Uno di questi è Mailchimp.

La famosa e simpatica scimmietta che molto spesso vediamo a fondo mail quando riceviamo una newsletter che parte da questo sistema.

Mailchimp è abbastanza intuitivo nell'uso, soprattutto una volta preso mano. Ma il suo grande difetto è che nonostante esistano le sue Api, non esiste un vero e proprio manuale (nemmeno in inglese) per poter effettuare una sincronia semplice ed efficace da sito a piattaforma Mailchimp.

La prima volta infatti che ho lavorato su tale piattaforma è stato più il tempo che ho impiegato per leggere tutta la documentazione (che poi non mi portava a nulla) che a configurare il vero e proprio script.

In internet però... cercando e cercando ho trovato questo semplice codice che mi ha semplificato la vita:

<code>

<?php
// ---------------------------------------------------------------------------------------------- //
/* mc_request
 
$api = array
(
'login' => 'QualsiasiCosa',
'key'   => 'ChiaveAPIcheSiRichiedeTramitePannelloMailchimp',
'url'   => 'https://<dc> .api.mailchimp .com/3.0/'  e di solito è l'url del pannello
)
 
La variabile $type può assumere questi valori 'GET','POST','PUT','PATCH','DELETE'
GET serve per fare il controllo su un indirizzo email se esite o meno
PATCH serve quando i dati relativi ad un indirizzo email vanno modificati
POST serve quando l'indirizzo e i suoi dati relativi vanno inseriti per la prima volta
DELETE serve per cancellare il record dell'indirizzo internet
 
$target Whatever you're after from the API. Could be:
'', 'lists', lists/abcd12345',
'lists/abcd12345/members/abcd12345abcd12345abcd12345abcd12345', etc.
 
$data Associative array with the key => values to be passed.
Don't forget to match the strucutre of whatever you're trying to PATCH
or PUT. e.g., For patching a member's first name, use:
 
$data = array( 'merge_fields' => array( 'FNAME': "New Name" ) );
mc_request( $my_api_info, 'PATCH',
'lists/abcd12345/members/abcd12345abcd12345abcd12345abcd12345', $data );
 
If you need to tunnel your requests through a service that only supports POST through Curl,
uncomment the two lines below and comment out:
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $type );
*/
// ---------------------------------------------------------------------------------------------- //
 
function mc_request( $api, $type, $target, $data = false )
{
$ch = curl_init( $api['url'] . $target );
 
curl_setopt( $ch, CURLOPT_HTTPHEADER, array
(
'Content-Type: application/json', 
'Authorization: ' . $api['login'] . ' ' . base64_encode( 'user:'.$api['key'] ),
// 'X-HTTP-Method-Override: ' . $type,
) );
 
// curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'POST' );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $type );
curl_setopt( $ch, CURLOPT_TIMEOUT, 5 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0' );
 
if( $data )
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $data ) );
 
$response = curl_exec( $ch );
curl_close( $ch );
    if($type=="GET"){
$json = json_decode($response);
return $json->{'status'};
}
else {
return $response;
}
}

</code>

Aggiungi un commento

Freelance Web Developer Padova

Non solo siti internet, ma applicazioni Web Based, Css3 e sviluppo mobile

Contattami per maggiori info