drewm/mailchimp-api

简单易用的 MailChimp API v3 包装器,抽象最少

v2.5.4 2019-08-06 09:24 UTC

This package is auto-updated.

Last update: 2024-08-29 03:10:43 UTC


README

简单易用的 MailChimp API v3 包装器,PHP 实现,抽象最少。

我讨厌复杂的包装器。这可以让您尽可能直接地从 MailChimp API 文档到代码。

需要 PHP 5.3 和一个脉搏。抽象是给猴子的。

Build Status Scrutinizer Code Quality Packagist

安装

您可以使用 Composer 安装 mailchimp-api

composer require drewm/mailchimp-api

然后您需要

  • 运行 composer install 将这些依赖项添加到您的 vendor 目录
  • 使用以下行将自动加载器添加到您的应用程序中: require("vendor/autoload.php")

或者,您可以仅下载 MailChimp.php 文件并手动包含它

include('./MailChimp.php'); 

如果您想使用批处理请求或 webhook 接口,您还需要下载并包含 Batch.phpWebhook.php 文件

include('./Batch.php'); 
include('./Webhook.php'); 

这些都是可选的。如果您不使用批处理或 webhook,可以跳过它们。您总是可以稍后回来添加它们。

示例

首先使用 use-ing 类并使用您的 API 密钥创建一个实例

use \DrewM\MailChimp\MailChimp;

$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');

然后,列出所有邮件列表(使用 getlists 方法上)

$result = $MailChimp->get('lists');

print_r($result);

将某人订阅到列表(使用 postlists/{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的单元测试有些棘手,但我欢迎任何对此的贡献。拥有更多的测试覆盖率会很好。