djuki/mailchimp-apiv3

Mailchimp API V3的简单封装

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

This package is auto-updated.

Last update: 2024-08-29 05:50:14 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来分页数据,因为它提供了对如何查看数据的更多控制。Offset默认为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;
});

您可以使用集合对象进行更多操作。

创建列表

// 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架构