pacely/mailchimp-apiv3

Mailchimp API V3 的简单封装

v1.0.6 2016-08-02 12:04 UTC

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 = [])

分页

我们使用查询字符串中的 offsetcount 来分页数据,因为它提供了更大的控制权来查看您的数据。默认情况下,偏移量为 0,因此如果您使用 offset=1,您将错过数据集的第一个元素。默认的 Count 为 10。

来源: http://kb.mailchimp.com/api/article/api-3-overview

过滤

大多数端点目前不支持过滤,但我们计划在未来添加这些功能。模式将告诉您哪些集合可以过滤,以及如何在查询字符串中包含。

来源: http://kb.mailchimp.com/api/article/api-3-overview

部分响应

为了减少数据传输,请在查询字符串中传递一个逗号分隔的字段列表,以包括或排除从特定响应中的字段。参数 fieldsexclude_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 模式