manuelvilche / mailchimp
简单,最小抽象的 MailChimp API v3 封装器
Requires
- php: >=5.3
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: 4.0.*
- vlucas/phpdotenv: ^2.0
This package is auto-updated.
Last update: 2024-09-13 14:16:43 UTC
README
简单,最小抽象的 MailChimp API v3 封装器,用 PHP 实现。
我讨厌复杂的封装器。这可以让您尽可能直接地从 MailChimp API 文档跳转到代码。
需要 PHP 5.3 及以上版本。抽象是给猴子的。
安装
您可以使用 Composer 安装 mailchimp
composer require manuelvilche/mailchimp
使用发布命令将包配置复制到您的本地配置文件
'Mailchimp' => Manuelvilche\Mailchimp\Facade::class,
Laravel 5.5+
如果您不使用自动发现,请将 ServiceProvider 添加到 config/app.php 中的 providers 数组
Manuelvilche\Mailchimp\ServiceProvider::class,
如果您想使用外观来记录消息,请将此添加到您的 app.php 中的 facades
'Mailchimp' => Manuelvilche\Mailchimp\Facade::class,
示例
首先使用 use 引入类并使用您的 API 密钥创建一个实例
use \Manuelvilche\MailChimp\MailChimp;
$mailchimp = new MailChimp();
然后,列出所有邮件列表(在 lists 方法上使用 get 方法)
$result = $mailchimp->get('lists');
print_r($result);
将某人订阅到列表(使用 post 方法到 lists/{listID}/members 方法)
$list_id = 'b1234346';
$result = $mailchimp->post("lists/$list_id/members", [
'email_address' => 'davy@example.com',
'status' => 'subscribed',
]);
print_r($result);
使用 patch 更新信息来更新列表成员
$list_id = 'b1234346';
$subscriber_hash = $mailchimp->subscriberHash('davy@example.com');
$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('davy@example.com');
$mailchimp->delete("lists/$list_id/members/$subscriber_hash");
使用 success() 方法快速测试操作是否成功
$list_id = 'b1234346';
$result = $mailchimp->post("lists/$list_id/members", [
'email_address' => 'davy@example.com',
'status' => 'subscribed',
]);
if ($mailchimp->success()) {
print_r($result);
} else {
echo $mailchimp->getLastError();
}
批量操作
MailChimp 的 批量操作 功能允许您通过单个调用完成多个操作。一个很好的例子是将数千名成员添加到列表中 - 您可以在一个请求中完成此操作,而不是数千个。
use \Manuelvilche\MailChimp\MailChimp;
use \Manuelvilche\MailChimp\Batch;
$mailchimp = new MailChimp('abc123abc123abc123abc123abc123-us1');
$Batch = $mailchimp->new_batch();
然后,您可以像通常使用 MailChimp 对象一样在 Batch 对象上发出请求。区别在于您需要将操作 ID 设置为第一个参数,并且您不会收到响应。ID 用于在批量操作的组合响应中找到此请求的结果。
$Batch->post("op1", "lists/$list_id/members", [
'email_address' => 'micky@example.com',
'status' => 'subscribed',
]);
$Batch->post("op2", "lists/$list_id/members", [
'email_address' => 'michael@example.com',
'status' => 'subscribed',
]);
$Batch->post("op3", "lists/$list_id/members", [
'email_address' => 'peter@example.com',
'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,数据将被发送到您的服务器。此封装器的 Webhook 类可以帮助您以一种整洁的方式捕获传入的 webhook。它使用订阅模型,您的代码订阅它想要监听的任何 webhook 事件。您提供一个回调函数,webhook 数据将传递给它。
监听 unsubscribe webhook
use \Manuelvilche\MailChimp\Webhook;
Webhook::subscribe('unsubscribe', function($data){
print_r($data);
});
乍一看,subscribe/unsubscribe 可能看起来很混乱 - 您的代码正在订阅 MailChimp 的 unsubscribe webhook 事件。回调函数作为单个参数传递 - 包含 webhook 数据的关联数组。
如果您只想捕获所有 webhook 并自己处理,可以使用
use \Manuelvilche\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验证。解决方案是更新您的证书。如果您无法这样做,类文件顶部有一个选项。请不要在没有至少尝试更新您的证书的情况下直接关闭它——这是懒惰且危险的。你不是懒惰、危险的开发者,对吧?
贡献
这是一个相当简单的包装器,但由于使用者的贡献而变得更好。如果您想建议改进,请在提交pull request之前提出一个issue进行讨论。
欢迎提交修复bug的pull requests - 请在消息中解释您试图修复的bug。
有少量PHPUnit单元测试。要开始运行,将.env.example复制到.env并添加您的API密钥详细信息。针对API进行单元测试显然有些棘手,但我欢迎任何对此的贡献。拥有更多的测试覆盖率将非常棒。