Supereinfacher MailChimp API v3-Wrapper mit minimaler Abstraktion in PHP.
Ich hasse komplexe Wrapper. Dadurch können Sie von den MailChimp-API-Dokumenten so direkt wie möglich zum Code gelangen.
Erfordert PHP 5.3 und einen Pulse. Abstraktion ist etwas für Schimpansen.
Sie können mailchimp-api mit Composer installieren:
composer require drewm/mailchimp-api
Sie müssen dann Folgendes tun:
Führen Sie composer install
aus, um diese Abhängigkeiten zu Ihrem Anbieterverzeichnis hinzuzufügen
Fügen Sie den Autoloader mit dieser Zeile zu Ihrer Anwendung hinzu: require("vendor/autoload.php")
Alternativ können Sie auch einfach die Datei MailChimp.php
herunterladen und manuell einbinden:
include('./MailChimp.php');
Wenn Sie die Batch-Anfrage- oder Webhook-Schnittstellen verwenden möchten, müssen Sie auch die Dateien Batch.php
oder Webhook.php
herunterladen und einbinden:
include('./Batch.php'); include('./Webhook.php');
Diese sind optional. Wenn Sie keine Batches oder Webhooks verwenden, können Sie diese einfach überspringen. Sie können jederzeit zurückkommen und sie später hinzufügen.
Beginnen Sie damit, die Klasse mit -ing use
und eine Instanz mit Ihrem API-Schlüssel zu erstellen
use DrewMMailChimpMailChimp;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');
Listen Sie dann alle Mailinglisten auf (mit der Methode „ get
on the lists
“).
$result = $MailChimp->get('lists');print_r($result);
Abonnieren Sie jemanden für eine Liste (mit einem post
in der Methode lists/{listID}/members
):
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);print_r($result);
Aktualisieren Sie ein Listenmitglied mit weiteren Informationen (zum Aktualisieren verwenden Sie patch
):
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$result = $MailChimp->patch("lists/$list_id/members/$subscriber_hash", [ 'merge_fields' = > ['FNAME'=>'Davy', 'LNAME'=>'Jones'], 'Interessen' => ['2s3a384h' => true], ]);print_r($result);
Entfernen Sie ein Listenmitglied mit der delete
:
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$MailChimp->delete("lists/$list_id/members/$subscriber_hash");
Testen Sie schnell, ob eine Aktion erfolgreich war, mit der Methode success()
:
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);if ($MailChimp->success()) { print_r($result); } else { echo $MailChimp->getLastError(); }
Mit der Batch Operations-Funktion von MailChimp können Sie mehrere Vorgänge mit einem einzigen Aufruf abschließen. Ein gutes Beispiel ist das Hinzufügen von Tausenden von Mitgliedern zu einer Liste – Sie können dies in einer einzigen Anfrage statt in Tausenden durchführen.
use DrewMMailChimpMailChimp;use DrewMMailChimpBatch;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');$Batch = $MailChimp->new_batch();
Anschließend können Sie Anfragen für das Batch
-Objekt stellen, genau wie Sie es normalerweise mit dem MailChimp
-Objekt tun würden. Der Unterschied besteht darin, dass Sie als erstes Argument eine ID für den Vorgang festlegen müssen und außerdem keine Antwort erhalten. Die ID wird verwendet, um das Ergebnis dieser Anfrage in der kombinierten Antwort des Batch-Vorgangs zu finden.
$Batch->post("op1", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);$Batch->post("op2", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);$Batch->post("op3", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]);
Sobald Sie alle Anforderungen abgeschlossen haben, die im Stapel enthalten sein sollten, müssen Sie ihn ausführen.
$result = $Batch->execute();
Das Ergebnis enthält eine Chargen-ID. Zu einem späteren Zeitpunkt können Sie den Status Ihrer Charge überprüfen:
$MailChimp->new_batch($batch_id);$result = $Batch->check_status();
Wenn Ihr Stapel fertig ist, können Sie die Ergebnisse von der in der Antwort angegebenen URL herunterladen. Im JSON wird das Ergebnis jeder Operation durch die ID verschlüsselt, die Sie als erstes Argument für die Anfrage verwendet haben.
Hinweis: Für die Nutzung der Webhooks-Funktionalität ist mindestens PHP 5.4 erforderlich.
Mit MailChimp-Webhooks kann Ihr Code über Änderungen an Listen und Kampagnen benachrichtigt werden.
Wenn Sie einen Webhook einrichten, geben Sie auf Ihrem Server eine URL an, an die die Daten gesendet werden sollen. Die Webhook-Klasse dieses Wrappers hilft Ihnen, den eingehenden Webhook auf saubere Weise abzufangen. Es verwendet ein Abonnementmodell, bei dem Ihr Code alle Webhook-Ereignisse abonniert, auf die er warten möchte. Sie stellen eine Rückruffunktion bereit, an die die Webhook-Daten übergeben werden.
So warten Sie auf den unsubscribe
Webhook:
verwenden Sie DrewMMailChimpWebhook; Webhook::subscribe('unsubscribe', function($data){ print_r($data); });
Auf den ersten Blick sieht das Abonnieren/Abmelden verwirrend aus – Ihr Code abonniert das MailChimp- unsubscribe
Webhook-Ereignis. Die Rückruffunktion wird als einzelnes Argument übergeben – ein assoziatives Array, das die Webhook-Daten enthält.
Wenn Sie lieber einfach alle Webhooks abfangen und selbst damit umgehen möchten, können Sie Folgendes verwenden:
use DrewMMailChimpWebhook;$result = Webhook::receive();print_r($result);
Es scheint keine Dokumentation zum Inhalt der Webhook-Daten zu geben. Es ist hilfreich, etwas wie ngrok zu verwenden, um die Webhooks zu Ihrem Entwicklungscomputer zu tunneln. Anschließend können Sie über die Webschnittstelle überprüfen, was gesendet wurde, und eingehende Webhooks wiedergeben, während Sie Ihren Code debuggen.
Um den letzten vom HTTP-Client oder von der API zurückgegebenen Fehler abzurufen, verwenden Sie getLastError()
:
echo $MailChimp->getLastError();
Zur weiteren Fehlerbehebung können Sie die Header und den Text der Antwort überprüfen:
print_r($MailChimp->getLastResponse());
Wenn Sie vermuten, dass Sie Daten im falschen Format senden, können Sie sich ansehen, was vom Wrapper an MailChimp gesendet wurde:
print_r($MailChimp->getLastRequest());
Wenn die CA-Stammzertifikate Ihres Servers nicht auf dem neuesten Stand sind, kann es sein, dass die SSL-Überprüfung fehlschlägt und Sie keine Antwort erhalten. Die Lösung hierfür besteht nicht darin, die SSL-Überprüfung zu deaktivieren. Die Lösung besteht darin, Ihre Zertifikate zu aktualisieren. Wenn das nicht möglich ist, gibt es oben in der Klassendatei eine Option. Bitte schalten Sie es nicht einfach aus, ohne zumindest zu versuchen, Ihre Zertifikate zu aktualisieren – das ist faul und gefährlich. Sie sind doch kein fauler, gefährlicher Entwickler, oder?
Wenn Sie allgemeine Fragen zur Implementierung Ihres Projekts haben („Wie füge ich das zu WordPress hinzu“, „Ich habe ein Formular, das eine E-Mail-Adresse akzeptiert ...“), wenden Sie sich bitte an einen Ort wie StackOverflow . Wenn Sie der Meinung sind, dass Sie einen Fehler gefunden haben oder eine Änderung oder Verbesserung besprechen möchten, können Sie gerne ein Problem ansprechen. Wir werden dann gemeinsam eine Lösung finden.
Dies ist ein recht einfacher Wrapper, der jedoch durch die Beiträge derjenigen, die ihn verwenden, viel besser geworden ist. Wenn Sie eine Verbesserung vorschlagen möchten, sprechen Sie bitte ein Problem an, um es zu besprechen, bevor Sie Ihre Pull-Anfrage stellen.
Pull-Requests für Fehler sind mehr als willkommen – bitte erläutern Sie in der Nachricht den Fehler, den Sie beheben möchten.
Es gibt eine kleine Anzahl von PHPUnit-Komponententests. Unit-Tests gegen eine API sind natürlich etwas knifflig, aber ich würde mich über jeden Beitrag dazu freuen. Es wäre toll, mehr Testabdeckung zu haben.