Wrapper MailChimp API v3 super simples e com abstração mínima, em PHP.
Eu odeio embalagens complexas. Isso permite que você passe dos documentos da API MailChimp para o código da forma mais direta possível.
Requer PHP 5.3 e pulso. A abstração é para os chimpanzés.
Você pode instalar o mailchimp-api usando o Composer:
composer require drewm/mailchimp-api
Você precisará então:
execute composer install
para adicionar essas dependências ao seu diretório de fornecedores
adicione o autoloader ao seu aplicativo com esta linha: require("vendor/autoload.php")
Alternativamente, você pode simplesmente baixar o arquivo MailChimp.php
e incluí-lo manualmente:
include('./MailChimp.php');
Se desejar usar as interfaces de solicitação em lote ou webhook, você também precisará baixar e incluir os arquivos Batch.php
ou Webhook.php
:
include('./Batch.php'); include('./Webhook.php');
Estes são opcionais. Se você não estiver usando lotes ou webhooks, basta ignorá-los. Você sempre pode voltar e adicioná-los mais tarde.
Comece use
-ing a classe e criando uma instância com sua chave de API
use DrewMMailChimpMailChimp;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');
Em seguida, liste todas as listas de discussão (com um método get
on the lists
)
$resultado = $MailChimp->get('listas');print_r($resultado);
Inscrever alguém em uma lista (com uma post
no método lists/{listID}/members
):
$list_id = 'b1234346';$result = $MailChimp->post("listas/$list_id/membros", [ 'email_address' => '[email protected]', 'status' => 'inscrito', ]);print_r($resultado);
Atualize um membro da lista com mais informações (usando patch
para atualizar):
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$result = $MailChimp->patch("listas/$list_id/membros/$subscriber_hash", [ 'merge_fields' = > ['FNAME'=>'Davy', 'LNAME'=>'Jones'], 'interesses' => ['2s3a384h' => verdadeiro], ]);print_r($resultado);
Remova um membro da lista usando o método delete
:
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$MailChimp->delete("listas/$list_id/membros/$subscriber_hash");
Teste rapidamente uma ação bem-sucedida com o método success()
:
$list_id = 'b1234346';$result = $MailChimp->post("listas/$list_id/membros", [ 'email_address' => '[email protected]', 'status' => 'inscrito', ]);if ($MailChimp->success()) { print_r($resultado); } else { echo $MailChimp->getLastError(); }
A funcionalidade MailChimp Batch Operations permite concluir várias operações com uma única chamada. Um bom exemplo é adicionar milhares de membros a uma lista - você pode fazer isso em uma única solicitação, em vez de milhares.
use DrewMMailChimpMailChimp;use DrewMMailChimpBatch;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');$Batch = $MailChimp->new_batch();
Você pode então fazer solicitações no objeto Batch
exatamente como faria normalmente com o objeto MailChimp
. A diferença é que você precisa definir um ID para a operação como primeiro argumento e também não obterá resposta. O ID é usado para localizar o resultado desta solicitação na resposta combinada da operação em lote.
$Batch->post("op1", "listas/$list_id/membros", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);$Batch->post("op2", "listas/$list_id/membros", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);$Batch->post("op3", "listas/$list_id/membros", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);
Depois de concluir todas as solicitações que deveriam estar no lote, você precisa executá-lo.
$resultado = $Lote->executar();
O resultado inclui um ID de lote. Posteriormente, você poderá verificar o status do seu lote:
$MailChimp->new_batch($batch_id);$resultado = $Batch->check_status();
Quando o lote terminar, você poderá baixar os resultados do URL fornecido na resposta. No JSON, o resultado de cada operação será codificado pelo ID que você usou como primeiro argumento para a solicitação.
Nota: O uso da funcionalidade Webhooks requer pelo menos PHP 5.4.
Os webhooks MailChimp permitem que seu código seja notificado sobre alterações em listas e campanhas.
Ao configurar um webhook, você especifica um URL em seu servidor para o qual os dados serão enviados. A classe Webhook deste wrapper ajuda você a capturar o webhook recebido de maneira organizada. Ele usa um modelo de assinatura, com seu código assinando quaisquer eventos de webhook que ele deseja escutar. Você fornece uma função de retorno de chamada para a qual os dados do webhook são passados.
Para ouvir o webhook unsubscribe
:
usar DrewMMailChimpWebhook; Webhook::subscribe('cancelar assinatura', function($dados){ print_r($dados); });
À primeira vista, assinar/cancelar assinatura parece confuso - seu código está se inscrevendo no evento webhook unsubscribe
do MailChimp. A função de retorno de chamada é passada como argumento único - uma matriz associativa contendo os dados do webhook.
Se preferir capturar todos os webhooks e lidar com eles você mesmo, você pode usar:
use DrewMMailChimpWebhook;$resultado = Webhook::receive();print_r($resultado);
Não parece haver nenhuma documentação sobre o conteúdo dos dados do webhook. É útil usar algo como o ngrok para encapsular os webhooks em sua máquina de desenvolvimento - você pode então usar sua interface web para inspecionar o que foi enviado e reproduzir webhooks recebidos enquanto depura seu código.
Para obter o último erro retornado pelo cliente HTTP ou pela API, use getLastError()
:
echo $MailChimp->getLastError();
Para depuração adicional, você pode inspecionar os cabeçalhos e o corpo da resposta:
print_r($MailChimp->getLastResponse());
Se você suspeitar que está enviando dados no formato errado, veja o que foi enviado ao MailChimp pelo wrapper:
print_r($MailChimp->getLastRequest());
Se os certificados raiz da CA do seu servidor não estiverem atualizados, você poderá descobrir que a verificação SSL falha e você não recebe uma resposta. A solução de correção para isso não é desabilitar a verificação SSL. A solução é atualizar seus certificados. Se você não puder fazer isso, há uma opção no topo do arquivo de classe. Por favor, não desligue-o sem pelo menos tentar atualizar seus certificados - isso é preguiçoso e perigoso. Você não é um desenvolvedor preguiçoso e perigoso, é?
Se você tiver dúvidas de implementação de alto nível sobre o seu projeto ("Como faço para adicionar isso ao WordPress", "Tenho um formulário que aceita um endereço de e-mail..."), leve-as para algum lugar como StackOverflow . Se você acha que encontrou um bug ou gostaria de discutir uma mudança ou melhoria, sinta-se à vontade para levantar um problema e nós resolveremos isso entre nós.
Este é um wrapper bastante simples, mas ficou muito melhor com as contribuições daqueles que o utilizam. Se você quiser sugerir uma melhoria, levante um problema para discuti-lo antes de fazer sua solicitação de pull.
Solicitações pull de bugs são mais que bem-vindas - explique o bug que você está tentando corrigir na mensagem.
Há um pequeno número de testes de unidade PHPUnit. O teste de unidade em uma API é obviamente um pouco complicado, mas qualquer contribuição para isso seria bem-vinda. Seria ótimo ter mais cobertura de testes.