이것은 MailChimp API 버전 3.0과 상호작용하기 위한 PHP 라이브러리입니다.
이 라이브러리는 MailChimp 애플리케이션 및 관련 기능에 대한 기본적인 이해를 가정합니다.
Composer의 경우 다음을 실행합니다.
composer require jhut89/mailchimp3php
또는 jhut89/mailchimp3php
패키지에 대한 composer.json
프로젝트에 필수 라인을 추가할 수 있습니다.
그런 다음 composer update
실행하고 다음을 사용하여 작곡가 오토로더를 프로젝트에 추가합니다.
require " vendor/autoload.php " ;
그런 다음 use 문을 사용하여 Mailchimp 클래스를 가져올 수 있습니다.
use MailchimpAPI Mailchimp ;
$ mailchimp = new Mailchimp ( ' 123abc123abc123abc123abc-us0 ' );
인스턴스화하려면 MailChimp 계정의 API 키를 유일한 인수로 사용하여 Mailchimp
클래스의 새 인스턴스가 필요합니다.
액세스 토큰을 얻기 위해 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 );
거기에서 사용자는 귀하의 신청서를 승인하기 위해 자신의 사용자 이름과 비밀번호를 입력하고 code
와 함께 설정한 redirect_uri
로 리디렉션됩니다.
이제 해당 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 );
핸드셰이크가 성공하면 이 메서드는 123abc123abc123abc123abc123abc-us0
과 같은 API 키가 포함된 문자열을 반환합니다. 이제 이 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
이 라이브러리는 POST 요청과 유사한 PUT 및 PATCH 요청을 처리합니다. 이는 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
get()
, post()
, patch()
, put()
또는 delete()
와 같은 http 동사의 이름을 딴 메서드는 MailChimp API에 대한 유선 요청을 시작합니다. 요청이 성공하면 이 메서드는 MailchimpResponse
인스턴스를 반환합니다. 응답의 다양한 부분에 대한 여러 수정자와 getter가 있으므로 이 클래스에 익숙해지는 것이 좋습니다.
MailchimpResponse
인스턴스와 상호 작용하는 데 사용할 수 있는 여러 getter가 있습니다. 더 일반적으로 사용되는 것 중 일부는 다음과 같습니다.
$ 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 Request를 보내주세요. 기여에 대한 자세한 내용은 Wiki를 확인하세요.