غلاف 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
وإدراجه يدويًا:
include('./MailChimp.php');
إذا كنت ترغب في استخدام الطلب المجمع أو واجهات webhook، فستحتاج أيضًا إلى تنزيل ملفات Batch.php
أو Webhook.php
وتضمينها:
include('./Batch.php'); include('./Webook.php');
هذه اختيارية. إذا كنت لا تستخدم الدفعات أو خطافات الويب، فيمكنك تخطيها فقط. يمكنك دائمًا العودة وإضافتها لاحقًا.
ابدأ use
-ing الفصل وإنشاء مثيل باستخدام مفتاح API الخاص بك
استخدم DrewMMailChimpMailChimp;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');
ثم قم بإدراج جميع القوائم البريدية (باستخدام طريقة get
على 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($result);
قم بتحديث عضو القائمة بمزيد من المعلومات (باستخدام 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($result);
إزالة عضو القائمة باستخدام طريقة 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' => 'مشترك', ]);if ($MailChimp->success()) { print_r($result); } else { echo $MailChimp->getLastError(); }
تمكنك وظيفة MailChimp Batch Operations من إكمال عمليات متعددة بمكالمة واحدة. من الأمثلة الجيدة على ذلك إضافة آلاف الأعضاء إلى القائمة - ويمكنك تنفيذ ذلك بطلب واحد بدلاً من الآلاف.
استخدم DrewMMailChimpMailChimp;
يمكنك بعد ذلك تقديم طلبات على كائن Batch
تمامًا كما تفعل عادةً مع كائن MailChimp
. الفرق هو أنك تحتاج إلى تعيين معرف للعملية كوسيطة أولى، وأيضًا أنك لن تحصل على رد. يتم استخدام المعرف للعثور على نتيجة هذا الطلب في الاستجابة المدمجة من العملية المجمعة.
$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، سيتم مفتاح نتيجة كل عملية بواسطة المعرف الذي استخدمته كوسيطة أولى للطلب.
ملحوظة: استخدام وظيفة Webhooks يتطلب PHP 5.4 على الأقل.
تعمل خطافات الويب الخاصة بـ MailChimp على تمكين إخطار التعليمات البرمجية الخاصة بك بالتغييرات التي تطرأ على القوائم والحملات.
عندما تقوم بإعداد خطاف ويب، فإنك تحدد عنوان URL على الخادم الخاص بك ليتم إرسال البيانات إليه. تساعدك فئة Webhook الخاصة بهذا المجمع على التقاط خطاف الويب الوارد بطريقة مرتبة. يستخدم نموذج الاشتراك، حيث يشترك الكود الخاص بك في أي أحداث webhook التي يريد الاستماع إليها. يمكنك توفير وظيفة رد الاتصال التي يتم تمرير بيانات webhook إليها.
للاستماع إلى الرد التلقائي على الويب unsubscribe
:
استخدم DrewMMailChimpWebhook؛ Webhook::subscribe('unsubscribe', function($data){ print_r($data); });
للوهلة الأولى، يبدو الاشتراك/إلغاء الاشتراك مربكًا - فالرمز الخاص بك يشترك في حدث الخطاف الإلكتروني unsubscribe
في MailChimp. يتم تمرير وظيفة رد الاتصال كوسيطة واحدة - مصفوفة ترابطية تحتوي على بيانات خطاف الويب.
إذا كنت تفضل التقاط جميع خطافات الويب والتعامل معها بنفسك، فيمكنك استخدام:
استخدم DrewMMailChimpWebhook;$result = Webhook::receive();print_r($result);
لا يبدو أن هناك أي وثائق لمحتوى بيانات webhook. من المفيد استخدام شيء مثل ngrok لتوجيه خطافات الويب إلى جهاز التطوير الخاص بك - يمكنك بعد ذلك استخدام واجهة الويب الخاصة به لفحص ما تم إرساله وإعادة تشغيل خطافات الويب الواردة أثناء تصحيح أخطاء التعليمات البرمجية الخاصة بك.
للحصول على الخطأ الأخير الذي تم إرجاعه إما بواسطة عميل HTTP أو بواسطة واجهة برمجة التطبيقات (API)، استخدم getLastError()
:
echo $MailChimp->getLastError();
لمزيد من التصحيح، يمكنك فحص رؤوس الاستجابة ونصها:
print_r($MailChimp->getLastResponse());
إذا كنت تشك في أنك ترسل البيانات بتنسيق خاطئ، فيمكنك الاطلاع على ما تم إرساله إلى MailChimp بواسطة المجمع:
print_r($MailChimp->getLastRequest());
إذا لم تكن شهادات الجذر CA لخادمك محدثة، فقد تجد فشل التحقق من طبقة المقابس الآمنة (SSL) ولن تحصل على رد. الحل التصحيحي لهذا ليس تعطيل التحقق من طبقة المقابس الآمنة (SSL). الحل هو تحديث شهاداتك. إذا لم تتمكن من القيام بذلك، فهناك خيار في الجزء العلوي من ملف الفصل الدراسي. من فضلك لا تقم بإيقاف تشغيله دون محاولة تحديث شهاداتك على الأقل - فهذا عمل كسول وخطير. أنت لست مطورًا كسولًا وخطيرًا، أليس كذلك؟
إذا كانت لديك أسئلة تنفيذية عالية المستوى حول مشروعك ("كيف يمكنني إضافة هذا إلى WordPress"، "لدي نموذج يأخذ عنوان بريد إلكتروني...")، فيرجى نقلها إلى مكان ما مثل StackOverflow . إذا كنت تعتقد أنك وجدت خطأ ما، أو ترغب في مناقشة تغيير أو تحسين، فلا تتردد في إثارة مشكلة وسنقوم بحلها فيما بيننا.
هذا غلاف بسيط إلى حد ما، ولكن تم تحسينه كثيرًا بفضل مساهمات أولئك الذين يستخدمونه. إذا كنت ترغب في اقتراح تحسين، يرجى إثارة مشكلة لمناقشتها قبل تقديم طلب السحب.
نرحب بشدة بطلبات سحب الأخطاء - يرجى توضيح الخطأ الذي تحاول إصلاحه في الرسالة.
هناك عدد قليل من اختبارات وحدة PHPUnit. من الواضح أن اختبار الوحدة مقابل واجهة برمجة التطبيقات (API) أمر صعب بعض الشيء، لكنني أرحب بأي مساهمات في هذا الشأن. سيكون من الرائع الحصول على المزيد من تغطية الاختبار.