Wrapper MailChimp API v3 ที่เป็นนามธรรมขั้นต่ำสุดที่เรียบง่ายใน PHP
ฉันเกลียดการห่อที่ซับซ้อน ซึ่งจะช่วยให้คุณได้รับจากเอกสาร MailChimp API ไปยังโค้ดได้โดยตรงที่สุดเท่าที่จะเป็นไปได้
ต้องใช้ PHP 5.3 และพัลส์ สิ่งที่เป็นนามธรรมมีไว้สำหรับชิมแปนซี
คุณสามารถติดตั้ง mailchimp-api โดยใช้ Composer:
composer require drewm/mailchimp-api
จากนั้นคุณจะต้อง:
รัน composer install
เพื่อเพิ่มการขึ้นต่อกันเหล่านี้ในไดเร็กทอรีผู้จำหน่ายของคุณ
เพิ่มตัวโหลดอัตโนมัติให้กับแอปพลิเคชันของคุณด้วยบรรทัดนี้: require("vendor/autoload.php")
หรือคุณสามารถดาวน์โหลดไฟล์ MailChimp.php
และรวมไว้ด้วยตนเอง:
รวม('./MailChimp.php');
หากคุณต้องการใช้คำขอแบบแบตช์หรืออินเทอร์เฟซ Webhook คุณจะต้องดาวน์โหลดและรวมไฟล์ Batch.php
หรือ Webhook.php
ด้วย:
รวม('./Batch.php'); รวม('./Webhook.php');
สิ่งเหล่านี้เป็นทางเลือก หากคุณไม่ได้ใช้แบทช์หรือเว็บฮุค ก็สามารถข้ามไปได้ คุณสามารถกลับมาเพิ่มในภายหลังได้ตลอดเวลา
เริ่มต้นด้วย use
-ing คลาสและสร้างอินสแตนซ์ด้วยคีย์ API ของคุณ
ใช้ DrewMMailChimpMailChimp;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');
จากนั้นแสดงรายการรายชื่อผู้รับจดหมายทั้งหมด (ด้วยวิธี get
on the lists
)
$result = $MailChimp->get('lists');print_r($result);
สมัครสมาชิกรายการ (พร้อม post
ไปยังวิธี lists/{listID}/members
):
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'สมัครสมาชิก', ]);print_r($ผลลัพธ์);
อัปเดตสมาชิกรายการพร้อมข้อมูลเพิ่มเติม (ใช้ patch
เพื่ออัปเดต):
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$result = $MailChimp->patch("lists/$list_id/members/$subscriber_hash", [ 'merge_fields' = > ['FNAME'=>'เดวี่', 'LNAME'=>'โจนส์'], 'ความสนใจ' => ['2s3a384h' => จริง], ]);print_r($ผลลัพธ์);
ลบสมาชิกรายการโดยใช้วิธี delete
:
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$MailChimp->delete("lists/$list_id/members/$subscriber_hash");
ทดสอบการดำเนินการที่ประสบความสำเร็จได้อย่างรวดเร็วด้วยเมธอด success()
:
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'สมัครสมาชิก', ]);ถ้า ($MailChimp->success()) { print_r($result); } อื่น { echo $MailChimp->getLastError(); -
ฟังก์ชันการทำงานของ MailChimp Batch Operations ช่วยให้คุณสามารถดำเนินการหลายอย่างให้เสร็จสิ้นได้ด้วยการโทรเพียงครั้งเดียว ตัวอย่างที่ดีคือการเพิ่มสมาชิกหลายพันคนในรายการ - คุณสามารถดำเนินการนี้ได้ในคำขอเดียว แทนที่จะเพิ่มสมาชิกหลายพันรายการ
ใช้ DrewMMailChimpMailChimp;ใช้ DrewMMailChimpBatch;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');$Batch = $MailChimp->new_batch();
จากนั้นคุณสามารถส่งคำขอบนวัตถุ Batch
ได้เช่นเดียวกับที่คุณทำตามปกติกับวัตถุ MailChimp
ความแตกต่างก็คือ คุณต้องตั้งค่า ID สำหรับการดำเนินการเป็นอาร์กิวเมนต์แรก และคุณจะไม่ได้รับการตอบกลับด้วย รหัสนี้ใช้เพื่อค้นหาผลลัพธ์ของคำขอนี้ในการตอบกลับแบบรวมจากการดำเนินการแบบแบตช์
$Batch->post("op1", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'สมัครสมาชิก', ]);$Batch->post("op2", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'สมัครสมาชิก', ]);$Batch->post("op3", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'สมัครสมาชิก', -
เมื่อคุณเสร็จสิ้นคำขอทั้งหมดที่ควรอยู่ในแบทช์แล้ว คุณจะต้องดำเนินการนั้น
$result = $Batch->execute();
ผลลัพธ์จะมีรหัสชุดงานด้วย ในภายหลัง คุณสามารถตรวจสอบสถานะของแบทช์ของคุณได้:
$MailChimp->new_batch($batch_id);$result = $Batch->check_status();
เมื่อแบทช์ของคุณเสร็จสิ้น คุณสามารถดาวน์โหลดผลลัพธ์จาก URL ที่ให้ไว้ในคำตอบได้ ใน JSON ผลลัพธ์ของการดำเนินการแต่ละรายการจะถูกกำหนดโดย ID ที่คุณใช้เป็นอาร์กิวเมนต์แรกสำหรับคำขอ
หมายเหตุ: การใช้ฟังก์ชัน Webhooks ต้องใช้ PHP 5.4 เป็นอย่างน้อย
MailChimp webhooks ช่วยให้โค้ดของคุณได้รับการแจ้งเตือนถึงการเปลี่ยนแปลงรายการและแคมเปญ
เมื่อคุณตั้งค่าเว็บฮุค คุณจะต้องระบุ URL บนเซิร์ฟเวอร์ของคุณสำหรับข้อมูลที่จะส่งไป คลาส Webhook ของ wrapper นี้ช่วยให้คุณจับ webhook ที่เข้ามานั้นได้อย่างเป็นระเบียบ ใช้รูปแบบการสมัครสมาชิก โดยโค้ดของคุณจะสมัครรับเหตุการณ์เว็บฮุคใดก็ตามที่ต้องการรับฟัง คุณระบุฟังก์ชันเรียกกลับที่จะส่งข้อมูลเว็บฮุคไป
หากต้องการฟังเว็บฮุค unsubscribe
:
ใช้ DrewMMailChimpWebhook; Webhook::subscribe('unsubscribe', function($data){ print_r($data); -
เมื่อมองแวบแรก การสมัคร/ยกเลิกการสมัคร ดูน่าสับสน - รหัสของคุณกำลังสมัครรับกิจกรรม MailChimp unsubscribe
webhook ฟังก์ชันเรียกกลับถูกส่งผ่านเป็นอาร์กิวเมนต์เดียว - อาร์เรย์ที่เชื่อมโยงที่มีข้อมูล webhook
หากคุณต้องการเพียงแค่จับ webhooks ทั้งหมดและจัดการกับมันด้วยตัวเอง คุณสามารถใช้:
ใช้ DrewMMailChimpWebhook;$result = Webhook::receive();print_r($result);
ดูเหมือนจะไม่มีเอกสารประกอบเกี่ยวกับเนื้อหาของข้อมูลเว็บฮุค การใช้บางอย่างเช่น ngrok ในการขุดอุโมงค์ webhooks ไปยังเครื่องพัฒนาของคุณนั้นมีประโยชน์ จากนั้นคุณสามารถใช้เว็บอินเทอร์เฟซเพื่อตรวจสอบสิ่งที่ถูกส่งไปและเล่นซ้ำ webhooks ที่เข้ามาในขณะที่คุณแก้ไขข้อบกพร่องโค้ดของคุณ
หากต้องการรับข้อผิดพลาดล่าสุดที่ส่งคืนโดยไคลเอ็นต์ HTTP หรือโดย API ให้ใช้ getLastError()
:
echo $MailChimp->getLastError();
สำหรับการดีบักเพิ่มเติม คุณสามารถตรวจสอบส่วนหัวและเนื้อหาของการตอบกลับได้:
print_r($MailChimp->getLastResponse());
หากคุณสงสัยว่าคุณกำลังส่งข้อมูลในรูปแบบที่ไม่ถูกต้อง คุณสามารถดูสิ่งที่ถูกส่งไปยัง MailChimp โดย wrapper:
print_r($MailChimp->getLastRequest());
หากใบรับรองหลัก CA ของเซิร์ฟเวอร์ของคุณไม่ทันสมัย คุณอาจพบว่าการตรวจสอบ SSL ล้มเหลวและคุณจะไม่ได้รับการตอบกลับ วิธีแก้ปัญหานี้ไม่ใช่การปิดใช้การตรวจสอบ SSL วิธีแก้ไขคืออัปเดตใบรับรองของคุณ หากทำไม่ได้ จะมีตัวเลือกที่ด้านบนของไฟล์ชั้นเรียน โปรดอย่าปิดสวิตช์โดยไม่ได้พยายามอัปเดตใบรับรองของคุณเป็นอย่างน้อย เพราะมันขี้เกียจและอันตราย คุณไม่ใช่นักพัฒนาที่ขี้เกียจและอันตรายใช่ไหม
หากคุณมี คำถามระดับสูงเกี่ยวกับการใช้งานเกี่ยวกับโปรเจ็กต์ของคุณ ("ฉันจะเพิ่มสิ่งนี้ลงใน WordPress ได้อย่างไร", "ฉันมีแบบฟอร์มที่ใช้ที่อยู่อีเมล...") โปรด พาพวกเขาไปที่ไหนสักแห่งเช่น StackOverflow หากคุณคิดว่าคุณพบจุดบกพร่อง หรือต้องการหารือเกี่ยวกับการเปลี่ยนแปลงหรือการปรับปรุง โปรดแจ้งปัญหาได้ตามสบาย แล้วเราจะหาทางแก้ไขระหว่างเรา
นี่เป็นกระดาษห่อที่ค่อนข้างเรียบง่าย แต่ได้รับการปรับปรุงให้ดีขึ้นมากจากการมีส่วนร่วมของผู้ที่ใช้มัน หากคุณต้องการแนะนำการปรับปรุง โปรดแจ้งปัญหาเพื่อหารือก่อนที่จะส่งคำขอดึงข้อมูล
เรายินดีอย่างยิ่งที่จะขอดึงข้อบกพร่อง - โปรดอธิบายข้อผิดพลาดที่คุณพยายามแก้ไขในข้อความ
มีการทดสอบหน่วย PHPUnit จำนวนเล็กน้อย เห็นได้ชัดว่าการทดสอบหน่วยกับ API นั้นค่อนข้างยุ่งยากเล็กน้อย แต่ฉันยินดีเป็นอย่างยิ่งที่จะมีส่วนร่วม คงจะดีมากถ้ามีการทดสอบครอบคลุมมากขึ้น