Adicionando assinantes a uma lista usando a API v3 do Mailchimp
Estou tentando adicionar usuários a uma lista que criei no Mailchimp, mas não consigo encontrar nenhum exemplo de código em nenhum lugar. Eu tentei descobrir como usar a API, mas sou muito do tipo "pessoa que olha um exemplo e aprende".
Eu tentei usar a versão 2 da API, mas nada parece estar funcionando, apesar de trabalhar com exemplos na rede e o Mailchimp diz o seguinte sobre versões anteriores da API em seu site:
As versões 2.0 e anteriores estão obsoletas. Somente suporte mínimo - correções de bugs, patches de segurança - estará disponível para essas versões.
ATUALIZAÇÃO 1: Eu fiz algumas pesquisas adicionais baseadas no TooMuchPeteresponda com relação ao link sobre o gerenciamento de assinantes e alterei algum código que encontreiaqui, mas não funcionará porque a funçãohttp_build_query () não lida com matrizes aninhadas. Não sei como lidar com a parte 'merge_fields' da adição de um assinante. Meu código atual está abaixo:
$postdata = http_build_query(
array(
'apikey' => $apikey,
'email_address' => $email,
'status' => 'subscribed',
'merge_fields' => array(
'FNAME' => $name
)
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents('https://us2.api.mailchimp.com/3.0/lists/<list_id>/members/', false, $context);
var_dump($result);
die('Mailchimp executed');
ATUALIZAÇÃO 2: Agora usei o curl e consegui fazer algo quase funcionar. Os dados são enviados para o Mailchimp, mas estou recebendo o erro"Sua solicitação não incluiu uma chave de API." Eu estou supondo que eu preciso autenticar como mencionadoaqui. Eu tentei adicioná-lo ao cabeçalho http que não funcionou. Veja meu código abaixo:
$apikey = '<api_key>';
$auth = base64_encode( 'user:'.$apikey );
$data = array(
'apikey' => $apikey,
'email_address' => $email,
'status' => 'subscribed',
'merge_fields' => array(
'FNAME' => $name
)
);
$json_data = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://us2.api.mailchimp.com/3.0/lists/<list_id>/members/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json/r/n
Authorization: Basic '.$auth));
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
$result = curl_exec($ch);
var_dump($result);
die('Mailchimp executed');