这是一个 PHP 库,用于与 MailChimp 的 API 3.0 版本进行交互
该库假设您对 MailChimp 应用程序及其相关功能有基本的了解。
对于作曲家运行:
composer require jhut89/mailchimp3php
或者,您可以在项目的composer.json
中为包jhut89/mailchimp3php
添加一个require行。
然后运行composer update
并将 Composer 自动加载器添加到您的项目中:
require " vendor/autoload.php " ;
然后,您可以使用 use 语句来引入 Mailchimp 类:
use MailchimpAPI Mailchimp ;
$ mailchimp = new Mailchimp ( ' 123abc123abc123abc123abc-us0 ' );
要实例化,您需要Mailchimp
类的新实例,并将您的 MailChimp 帐户的 API 密钥作为其唯一参数。
如果您使用 OAuth 来获取访问令牌,该库可以为您处理“握手”。
您必须首先将用户发送到您的应用程序authorize_uri
。您可以通过静态调用Mailchimp::getAuthUrl()
来获取此 url:
$ client_id = ' 12345676543 ' ;
$ redirect_url = ' https://www.some-domain.com/callback_file.php ' ;
Mailchimp:: getAuthUrl ( $ client_id , $ redirect_url );
或者,如果您需要随请求一起传递状态信息以便正确路由回调响应,则可以包含状态参数:
$ client_id = ' 12345676543 ' ;
$ redirect_url = ' https://www.some-domain.com/callback_file.php ' ;
// state information encoded into a string to be included in the URL, for example data encoded in a JWT token
$ state = ' eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c ' ;
Mailchimp:: getAuthUrl ( $ client_id , $ redirect_url , $ state );
从那里,用户将输入他们的用户名和密码以批准您的申请,并将被重定向到您设置的redirect_uri
和code
。
使用该code
您现在可以从 mailchimp 请求访问令牌。为此,您需要静态调用Mailchimp::oauthExchange()
方法,如下所示:
$ code = ' abc123abc123abc123abc123 ' ;
$ client_id = ' 12345676543 ' ;
$ client_secret = ' 789xyz789xyz789xyz789xyz ' ;
$ redirect_url = ' https://www.some-domain.com/callback_file.php ' ;
Mailchimp:: oauthExchange ( $ code , $ client_id , $ client_secret , $ redirect_url );
如果握手成功,则此方法将返回一个包含您的 API 密钥的字符串,如下所示: 123abc123abc123abc123abc123abc-us0
。现在可以使用此 API 密钥来实例化您的Mailchimp
类,如上面所述。
一旦实例化了Mailchimp
类,您就可以开始构建请求。构造请求是通过将方法“链接”到$mailchimp
实例来完成的。在大多数情况下,此“链”将以您的请求的 HTTP 动词结束。
如何检索列表集合的示例:
$ mailchimp
-> lists ()
-> get ();
检索实例可以通过为您想要的实例提供唯一标识符作为适当方法的参数来完成。例如,如果我想从上面的示例中检索列表实例,我只需传递一个list_id
,作为lists()
方法的唯一参数。像这样:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> get ();
链中每个位置可用的方法取决于前一个方法返回的内容。例如,如果我想从我的帐户列表中检索订阅者,我会:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> get ();
请注意,我向lists()
方法提供了一个list_id
,因为无法从列表集合中检索订阅者列表。然而,上述请求只会从成员集合中返回 10 个订阅者实例。这是因为 MailChimp 的 API 使用分页(在此处记录),默认为count=10
和offset=0
。该库允许您通过将查询字符串参数作为参数传递给GET()
方法来更改它们。我们通过提供一个键值对数组来实现此目的,其中键是您希望提供/更改的查询参数,其值是参数的值。举个例子,如果我想从列表中检索后 100 个订阅者,我可以:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> get ([
" count " => " 100 " ,
" offset " => " 100 "
]);
这相当于针对以下内容发出 get 请求:
Https://us0.api.mailchimp.com/3.0/lists/1a2b3c4d/members?count=100&offset=100
更进一步,我们可以通过将members_hash
(小写地址的md5哈希值)传递给members()
方法来检索单个列表成员。像这样:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' 8bdbf060209f35b52087992a3cbdf4d7 ' )
-> get ();
或者,您可以提供联系人的电子邮件地址作为字符串,而不是提供 md5 哈希作为members()
函数的标识符,该库将为您进行哈希处理。像这样:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' [email protected] ' )
-> get ();
您可以在这里深入了解
GET
请求:https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Get-Requests
虽然能够从您的帐户检索数据很棒,但我们还需要能够发布新数据。这可以通过在链末尾调用POST()
方法来完成。例如,将地址订阅到列表将如下所示:
$ post_params = [
' email_address ' => ' [email protected] ' ,
' status ' => ' subscribed '
];
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> post ( $ post_params );
在这种情况下,我不会向members()
提供标识符,因为我想发布到其集合。另请注意,发布数据是一个键值对数组,表示我想要传递给 MailChimp API 的参数。请确保为要发布到的端点提供所有必填字段。检查 MailChimp 的文档以了解需要哪些参数。非必需参数只需添加到发布数据中,MailChimp 将忽略任何不可用的参数。为了说明这一点,我们举一个使用一些非必需参数将订阅者添加到列表的示例:
$ merge_values = [
" FNAME " => " John " ,
" LNAME " => " Doe "
];
$ post_params = [
" email_address " => " [email protected] " ,
" status " => " subscribed " ,
" email_type " => " html " ,
" merge_fields " => $ merge_values
]
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ()
-> post ( $ post_params );
您可以在这里深入了解
POST
请求:https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Post-Requests
该库处理 PUT 和 PATCH 请求的方式与 POST 请求类似。这意味着PUT()
和PATCH()
都接受一组键值对,这些键值对代表您希望更改/提供给 MailChimp 的数据。举个例子,如果我正在修补我们上面订阅的订阅者,以获得一个新的名字,那就看起来像这样。
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' a1167f5be2df7113beb69c95ebcdb2fd ' )
-> patch ([
" merge_fields " => [ " FNAME " => " Jane " ]
]);
您可以在此处深入了解
PATCH
和PUT
请求:https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Patch-&-Put-Requests
从 MailChimp 中删除记录是使用DELETE()
方法执行的,其构造类似于 GET 请求。如果我想删除上述订阅者,我会:
$ mailchimp
-> lists ( ' 1a2b3c4d ' )
-> members ( ' a1167f5be2df7113beb69c95ebcdb2fd ' )
-> delete ();
您可以在此处深入了解
DELETE
请求:https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Delete-Requests
以 http 动词(例如get()
、 post()
、 patch()
、 put()
或delete()
命名的方法)启动对 MailChimp 的 API 的线上请求。如果请求成功,这些方法将返回MailchimpResponse
的实例。我建议您熟悉这个类,因为有许多用于响应不同部分的修饰符和吸气剂。
我们可以使用许多 getter 来与我们的MailchimpResponse
实例进行交互。一些更常用的是:
$ response -> deserialize (); // returns a deserialized (to php object) resource returned by API
$ response -> getHttpCode (); // returns an integer representation of the HTTP response code
$ response -> getHeaders (); // returns response headers as an array of key => value pairs
$ response -> getBody (); // return the raw text body of the response
举例来说,如果我拥有 API 密钥,但希望将联系电子邮件与其帐户关联:
$ mailchimp = new Mailchimp ( ' 123abc123abc123abc123abc-us0 ' );
$ account = $ mailchimp
-> account ()
-> get ()
$ contact_email = $ account
-> deserialize ()
->email
print $ contact_email ; // outputs something like "[email protected]"
您可以在此处深入了解如何使用响应:https://github.com/Jhut89/Mailchimp-API-3.0-PHP/wiki/Handling-A-Response
mailchimp()
|
|----account()
|
|----apps()
|
|----automations()
| |
| |----removedSubscribers()
| |----emails()
| |
| |---queue()*
| |---pauseAll()*
| |---startAll()*
|
|----batches()
|
|----batchWebhooks()
|
|----campaignFolders()
|
|----campaigns()
| |
| |----cancel()*
| |----pause()*
| |----replicate()*
| |----resume()*
| |----scedule()*
| |----send()*
| |----test()*
| |----unschedule()*
| |----checklist()
| |----feedback()
| |----content()
|
|----connectedSites()
| |
| |----verifyScriptInstallation()*
|
|----conversations()
| |
| |----messages()
|
|----ecommStores()
| |
| |----customers()
| |----products()
| | |
| | |----variants()
| | |----images()
| |
| |----promoRules()
| | |
| | |----promoCodes()
| |
| |----orders()
| | |
| | |----lines()
| |
| |----carts()
| |
| |----lines()
|
|----facebookAds()
|
|----fileManagerFiles()
|
|----fileManagerFolders()
|
|----googleAds()
|
|----landingPages()
| |
| |----publish()*
| |----unpublish()*
| |----content()
|
|----lists()
| |
| |----batchSubscribe()*
| |----webhooks()
| |----signupForms()
| |----mergeFields()
| |----growthHistory()
| |----clients()
| |----activity()
| |----abuseReports()
| |----segments()
| | |
| | |----batch()*
| | |----members()
| |
| |----members()
| | |
| | |---notes()
| | |---goals()
| | |---activity()
| | |---tags()
| |
| |----interestCategories()
| |
| |----interests()
|
|----ping()
|
|----reports()
| |
| |----unsubscribes()
| |----subReports()
| |----sentTo()
| |----locations()
| |----emailActivity()
| |----googleAnalytics()
| |----openDetails()
| |----eepurl()
| |----domainPerformance()
| |----advice()
| |----abuse()
| |----clickReports()
| |
| |----members()
|
|----searchCampaigns()
|
|----searchMembers()
|
|----templateFolders()
|
|----templates()
| |
| |----defaultContent()
|
|----verifiedDomains()
|
|----verify()
*请参阅 MailChimp 的 API 文档,了解哪些动词适用于何处。
** 标有*
的方法发出网络请求
**请关注更新,并随时 Fork 或 Pull 请求。查看 Wiki 以获取有关贡献的更多信息。