這是一個 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()
命名的方法)啟動對MailchimpResponse
的 API 的線上請求。我建議您熟悉這個類,因為有許多用於響應不同部分的修飾符和吸氣劑。
我們可以使用許多 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 以獲取有關貢獻的更多資訊。