drewm / mailchimp-api
简单易用的 MailChimp API v3 包装器,抽象最少
Requires
- php: >=5.3
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: 7.0.*
- vlucas/phpdotenv: ^2.0
README
简单易用的 MailChimp API v3 包装器,PHP 实现,抽象最少。
我讨厌复杂的包装器。这可以让您尽可能直接地从 MailChimp API 文档到代码。
需要 PHP 5.3 和一个脉搏。抽象是给猴子的。
安装
您可以使用 Composer 安装 mailchimp-api
composer require drewm/mailchimp-api
然后您需要
- 运行
composer install
将这些依赖项添加到您的 vendor 目录 - 使用以下行将自动加载器添加到您的应用程序中:
require("vendor/autoload.php")
或者,您可以仅下载 MailChimp.php
文件并手动包含它
include('./MailChimp.php');
如果您想使用批处理请求或 webhook 接口,您还需要下载并包含 Batch.php
或 Webhook.php
文件
include('./Batch.php'); include('./Webhook.php');
这些都是可选的。如果您不使用批处理或 webhook,可以跳过它们。您总是可以稍后回来添加它们。
示例
首先使用 use
-ing 类并使用您的 API 密钥创建一个实例
use \DrewM\MailChimp\MailChimp; $MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');
然后,列出所有邮件列表(使用 get
在 lists
方法上)
$result = $MailChimp->get('lists'); print_r($result);
将某人订阅到列表(使用 post
到 lists/{listID}/members
方法)
$list_id = 'b1234346'; $result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'subscribed', ]); print_r($result);
使用 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'], 'interests' => ['2s3a384h' => true], ]); print_r($result);
使用 delete
方法从列表中删除列表成员
$list_id = 'b1234346'; $subscriber_hash = MailChimp::subscriberHash('[email protected]'); $MailChimp->delete("lists/$list_id/members/$subscriber_hash");
使用 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(); }
批处理操作
MailChimp 批处理操作 功能允许您使用单个调用完成多个操作。一个很好的例子是将数千个成员添加到列表 - 您可以一次性执行此操作,而不是数千次。
use \DrewM\MailChimp\MailChimp; use \DrewM\MailChimp\Batch; $MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1'); $Batch = $MailChimp->new_batch();
然后您可以在 Batch
对象上发出请求,就像您通常使用 MailChimp
对象一样。区别在于您需要将操作 ID 设置为第一个参数,并且您不会收到响应。ID 用于在批处理操作的组合响应中查找此请求的结果。
$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', ]);
一旦完成所有应在批处理中进行的请求,您需要执行它。
$result = $Batch->execute();
结果包括批处理 ID。稍后,您可以检查批处理的状态
$MailChimp->new_batch($batch_id); $result = $Batch->check_status();
当批处理完成时,您可以从响应中提供的 URL 下载结果。在 JSON 中,每个操作的結果将根据您用作请求的第一个参数的 ID 进行索引。
Webhooks
注意:使用 Webhooks 功能需要至少 PHP 5.4。
MailChimp webhooks 允许您的代码在列表和活动发生变化时收到通知。
当您设置 webhook 时,您指定一个 URL,数据将发送到该 URL。此包装器的 Webhook 类可以帮助您整洁地捕获传入的 webhook。它使用订阅模型,您的代码订阅它想要监听的任何 webhook 事件。您提供一个回调函数,将 webhook 数据传递给它。
要监听 unsubscribe
webhook
use \DrewM\MailChimp\Webhook; Webhook::subscribe('unsubscribe', function($data){ print_r($data); });
乍一看,订阅/取消订阅似乎有些令人困惑——您的代码正在订阅MailChimp的取消订阅
webhook事件。回调函数接受单个参数——一个包含webhook数据的关联数组。
如果您只想捕获所有webhook并自行处理,可以使用
use \DrewM\MailChimp\Webhook; $result = Webhook::receive(); print_r($result);
似乎没有关于webhook数据内容的文档。使用类似ngrok的工具来隧道传输webhook到您的开发机器非常有帮助——您可以在调试代码时使用其Web界面来检查发送的内容以及重放传入的webhook。
故障排除
要获取HTTP客户端或API返回的最后一个错误,请使用getLastError()
echo $MailChimp->getLastError();
为了进一步调试,您可以检查响应的头和正文
print_r($MailChimp->getLastResponse());
如果您怀疑您发送的数据格式不正确,可以查看包装器发送给MailChimp的内容
print_r($MailChimp->getLastRequest());
如果您的服务器CA根证书未更新,您可能会发现SSL验证失败并且没有收到响应。这个问题的纠正解决方案并不是禁用SSL验证。解决方案是更新您的证书。如果您无法这样做,类文件顶部有一个选项。请至少尝试更新您的证书后再将其关闭——这样做既懒惰又危险。您不是懒惰、危险的开发者吧?
如果您对项目的**高级实现问题**有疑问(“我如何将其添加到WordPress”,“我有一个接受电子邮件地址的表单...”)请将问题带到类似StackOverflow的网站。如果您认为您发现了一个bug,或者想要讨论变更或改进,请随时提出问题,我们将一起解决。
贡献
这是一个相当简单的包装器,但它已经通过使用者的贡献而变得更好。如果您想提出改进建议,请在提出pull request之前先提出一个讨论。
欢迎提交修复bug的pull request——请在消息中解释您要修复的bug。
有一些PHPUnit单元测试。显然,针对API的单元测试有些棘手,但我欢迎任何对此的贡献。拥有更多的测试覆盖率会很好。