Envoltorio súper simple y de mínima abstracción MailChimp API v3, en PHP.
Odio los envoltorios complejos. Esto le permite pasar de los documentos de la API de MailChimp al código de la forma más directa posible.
Requiere PHP 5.3 y un pulso. La abstracción es para chimpancés.
Puedes instalar mailchimp-api usando Composer:
composer require drewm/mailchimp-api
Luego necesitarás:
Ejecute composer install
para agregar estas dependencias a su directorio de proveedores.
agregue el cargador automático a su aplicación con esta línea: require("vendor/autoload.php")
Alternativamente, puedes descargar el archivo MailChimp.php
e incluirlo manualmente:
incluir('./MailChimp.php');
Si desea utilizar la solicitud por lotes o las interfaces de webhook, también deberá descargar e incluir los archivos Batch.php
o Webhook.php
:
incluir('./Batch.php'); incluir('./Webhook.php');
Estos son opcionales. Si no utiliza lotes o webhooks, puede omitirlos. Siempre puedes volver y agregarlos más tarde.
Comience use
-ing la clase y creando una instancia con su clave API
utilice DrewMMailChimpMailChimp;$MailChimp = nuevo MailChimp('abc123abc123abc123abc123abc123-us1');
Luego, enumere todas las listas de correo (con el método get
a las lists
)
$resultado = $MailChimp->get('listas');print_r($resultado);
Suscribir a alguien a una lista (con una post
en el método lists/{listID}/members
):
$list_id = 'b1234346';$resultado = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'suscrito', ]);print_r($resultado);
Actualice un miembro de la lista con más información (usando patch
para actualizar):
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$resultado = $MailChimp->patch("listas/$list_id/members/$subscriber_hash", [ 'merge_fields' = > ['FNAME'=>'Davy', 'LNAME'=>'Jones'], 'intereses' => ['2s3a384h' => verdadero], ]);print_r($resultado);
Eliminar un miembro de la lista usando el método delete
:
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$MailChimp->delete("listas/$list_id/miembros/$subscriber_hash");
Pruebe rápidamente una acción exitosa con el método success()
:
$list_id = 'b1234346';$resultado = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'suscrito', ]);if ($MailChimp->éxito()) { print_r($resultado); } else { echo $MailChimp->getLastError(); }
La funcionalidad de operaciones por lotes de MailChimp le permite completar múltiples operaciones con una sola llamada. Un buen ejemplo es agregar miles de miembros a una lista; puede realizar esto en una solicitud en lugar de miles.
use DrewMMailChimpMailChimp;use DrewMMailChimpBatch;$MailChimp = nuevo MailChimp('abc123abc123abc123abc123abc123-us1');$Batch = $MailChimp->new_batch();
Luego puede realizar solicitudes en el objeto Batch
tal como lo haría normalmente con el objeto MailChimp
. La diferencia es que necesita establecer un ID para la operación como primer argumento y además no obtendrá una respuesta. El ID se utiliza para encontrar el resultado de esta solicitud en la respuesta combinada de la operación por lotes.
$Batch->post("op1", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'suscrito', ]);$Batch->post("op2", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'suscrito', ]);$Batch->post("op3", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'suscrito', ]);
Una vez que haya terminado todas las solicitudes que deberían estar en el lote, deberá ejecutarlo.
$resultado = $Lote->ejecutar();
El resultado incluye un ID de lote. Más adelante podrá comprobar el estado de su lote:
$MailChimp->new_batch($batch_id);$resultado = $Batch->check_status();
Cuando finalice su lote, puede descargar los resultados desde la URL proporcionada en la respuesta. En JSON, el resultado de cada operación estará codificado por el ID que utilizó como primer argumento para la solicitud.
Nota: El uso de la funcionalidad Webhooks requiere al menos PHP 5.4.
Los webhooks de MailChimp permiten que su código reciba notificaciones sobre cambios en listas y campañas.
Cuando configura un webhook, especifica una URL en su servidor al que se enviarán los datos. La clase Webhook de este contenedor le ayuda a capturar ese webhook entrante de forma ordenada. Utiliza un modelo de suscripción, en el que su código se suscribe a cualquier evento de webhook que desee escuchar. Proporciona una función de devolución de llamada a la que se pasan los datos del webhook.
Para escuchar el webhook unsubscribe
:
utilice DrewMMailChimpWebhook; Webhook::subscribe('cancelar suscripción', función($datos){ print_r($datos); });
A primera vista, la suscripción/cancelación de suscripción parece confusa: su código se está suscribiendo al evento webhook unsubscribe
de MailChimp. La función de devolución de llamada se pasa como argumento único: una matriz asociativa que contiene los datos del webhook.
Si prefiere capturar todos los webhooks y solucionarlos usted mismo, puede utilizar:
utilice DrewMMailChimpWebhook;$resultado = Webhook::receive();print_r($resultado);
No parece haber ninguna documentación sobre el contenido de los datos del webhook. Es útil usar algo como ngrok para canalizar los webhooks a su máquina de desarrollo; luego puede usar su interfaz web para inspeccionar lo que se ha enviado y reproducir los webhooks entrantes mientras depura su código.
Para obtener el último error devuelto por el cliente HTTP o por la API, utilice getLastError()
:
echo $MailChimp->getLastError();
Para una mayor depuración, puede inspeccionar los encabezados y el cuerpo de la respuesta:
print_r($MailChimp->getLastResponse());
Si sospecha que está enviando datos en el formato incorrecto, puede ver lo que el contenedor envió a MailChimp:
print_r($MailChimp->getLastRequest());
Si los certificados raíz de CA de su servidor no están actualizados, es posible que la verificación SSL falle y no obtenga una respuesta. La solución correctora para esto no es desactivar la verificación SSL. La solución es actualizar sus certificados. Si no puede hacer eso, hay una opción en la parte superior del archivo de clase. No lo apague sin al menos intentar actualizar sus certificados; eso es perezoso y peligroso. No eres un desarrollador perezoso y peligroso, ¿verdad?
Si tiene preguntas de implementación de alto nivel sobre su proyecto ("Cómo agrego esto a WordPress", "Tengo un formulario que requiere una dirección de correo electrónico...") , llévelas a algún lugar como StackOverflow . Si cree que ha encontrado un error o le gustaría discutir un cambio o mejora, no dude en plantear un problema y lo resolveremos entre nosotros.
Este es un contenedor bastante simple, pero se ha mejorado mucho gracias a las contribuciones de quienes lo usan. Si desea sugerir una mejora, plantee un problema para discutirlo antes de realizar su solicitud de extracción.
Las solicitudes de extracción de errores son más que bienvenidas; explique el error que está intentando corregir en el mensaje.
Hay una pequeña cantidad de pruebas unitarias PHPUnit. Las pruebas unitarias contra una API son obviamente un poco complicadas, pero agradecería cualquier contribución al respecto. Sería fantástico tener más cobertura de pruebas.