pacely / mailchimp-apiv3
Mailchimp API V3 的简单封装
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: ~5.0|~6.0
- illuminate/support: ~5.0
Requires (Dev)
- phpspec/phpspec: ~2.2
This package is not auto-updated.
Last update: 2024-09-14 17:32:02 UTC
README
安装
将以下内容添加到您的 composer.json 文件中
{ "require": { "pacely/mailchimp-apiv3": "dev-master" } }
Laravel 用户
我们添加了一些类,以帮助 Laravel 5 用户轻松使用此库。
服务提供者
您可以在 app.php
配置文件中注册我们的 服务提供者。
// config/app.php 'providers' => [ ... Mailchimp\MailchimpServiceProvider::class ]
门面
如果您喜欢 门面,请确保也添加此内容
// config/app.php 'aliases' => [ ... 'MC' => Mailchimp\MailchimpFacade::class ]
注意:请确保不要使用 Mailchimp
别名注册门面,因为这可能会与基本类冲突。
配置
您只需填写一个配置选项。通过运行以下命令发布配置:
php artisan vendor:publish
现在,配置文件将位于 config/mailchimp.php
下
<?php return [ /* |-------------------------------------------------------------------------- | Mailchimp API key |-------------------------------------------------------------------------- | | To obtain an API key, go to mailchimp.com under your profile | you will find Extras -> API keys. Paste the key below. | */ 'apikey' => '' ];
使用方法
有一个方法可以统治一切
request($resource, $arguments = [], $method = 'GET') // $arguments is used as POST data or GET parameters, depending on the method used.
但它足够聪明,可以映射这些调用
get($resource, array $options = []) head($resource, array $options = []) put($resource, array $options = []) post($resource, array $options = []) patch($resource, array $options = []) delete($resource, array $options = [])
分页
我们使用查询字符串中的 offset
和 count
来分页数据,因为它提供了更大的控制权来查看您的数据。默认情况下,偏移量为 0,因此如果您使用 offset=1,您将错过数据集的第一个元素。默认的 Count 为 10。
来源: http://kb.mailchimp.com/api/article/api-3-overview
过滤
大多数端点目前不支持过滤,但我们计划在未来添加这些功能。模式将告诉您哪些集合可以过滤,以及如何在查询字符串中包含。
来源: http://kb.mailchimp.com/api/article/api-3-overview
部分响应
为了减少数据传输,请在查询字符串中传递一个逗号分隔的字段列表,以包括或排除从特定响应中的字段。参数 fields
和 exclude_fields
是互斥的,如果请求中不包含无效字段,则将抛出错误。
来源: http://kb.mailchimp.com/api/article/api-3-overview
代理后端
如果您位于代理后端,可以直接在类上使用 setProxy
。
setProxy(host : string, port : int, [ssl : bool = false], [username = null], [password = null]);
请参阅 示例。
示例
集合对象
所有查询都将返回一个 Illuminate\Support\Collection 对象的实例,它与集合对象非常容易工作。但是,如果您不想使用集合对象,可以使用 $result->toArray()
将其转换为数组。
$mc = new Mailchimp('<api-key>', '<guzzle-options[array]>'); // Get 10 lists starting from offset 10 and include only a specific set of fields $result = $mc->request('lists', [ 'fields' => 'lists.id,lists.name,lists.stats.member_count', 'offset' => 10, 'count' => 10 ]); // Will fire this query: // GET https://us1.api.mailchimp.com/3.0/lists?fields=lists.id,lists.name,lists.stats.member_count&count=10 // Returns object(Illuminate\Support\Collection) var_dump($result); // Returns the first item var_dump($result->first()); // Returns 3 items var_dump($result->take(3)); // Returns a JSON string var_dump($result->toJson()); // Returns an array var_dump($result->toArray());
您可以使用简单的 foreach/for 循环或使用我们集合对象提供的内置 each(callable $callback)
来遍历您的项目。
$result->each(function ($item) { echo $item['name'].' ('.$item['stats']['member_count'].')'.PHP_EOL; });
您可以使用 Collection 对象做更多的事情。
创建列表
// All these fields are required to create a new list. $result = $mc->post('lists', [ 'name' => 'New list', 'permission_reminder' => 'You signed up for updates on Greeks economy.', 'email_type_option' => false, 'contact' => [ 'company' => 'Doe Ltd.', 'address1' => 'DoeStreet 1', 'address2' => '', 'city' => 'Doesy', 'state' => 'Doedoe', 'zip' => '1672-12', 'country' => 'US', 'phone' => '55533344412' ], 'campaign_defaults' => [ 'from_name' => 'John Doe', 'from_email' => 'john@doe.com', 'subject' => 'My new campaign!', 'language' => 'US' ] ]);
子资源
$result = $mc->get('lists/e04d611199', [ 'fields' => 'id,name,stats.member_count' ]);
代理
$mc->setProxy('https://127.0.0.1', 10, true, 'username', 'password'); $result = $mc->get('lists/e04d611199', [ 'fields' => 'id,name,stats.member_count' ]);
更多文档
您应该阅读 Mailchimp 的 API v3 文档(我知道,它看起来相当糟糕。应该会很快变好)。要了解哪些资源可用,请查看 Mailchimp 的 JSON API 模式。