Pembungkus MailChimp API v3 abstraksi minimum yang super sederhana, dalam PHP.
Saya benci pembungkus yang rumit. Ini memungkinkan Anda mendapatkan dokumen API MailChimp ke kode secara langsung.
Membutuhkan PHP 5.3 dan pulsa. Abstraksi ditujukan untuk simpanse.
Anda dapat menginstal mailchimp-api menggunakan Komposer:
composer require drewm/mailchimp-api
Anda kemudian perlu:
jalankan composer install
untuk menambahkan dependensi ini ke direktori vendor Anda
tambahkan autoloader ke aplikasi Anda dengan baris ini: require("vendor/autoload.php")
Alternatifnya, Anda cukup mengunduh file MailChimp.php
dan memasukkannya secara manual:
include('./MailChimp.php');
Jika Anda ingin menggunakan permintaan batch atau antarmuka webhook, Anda juga perlu mengunduh dan menyertakan file Batch.php
atau Webhook.php
:
include('./Batch.php'); include('./Webhook.php');
Ini opsional. Jika Anda tidak menggunakan batch atau webhook, Anda dapat melewatinya saja. Anda selalu dapat kembali lagi dan menambahkannya nanti.
Mulailah dengan use
kelas dan membuat instance dengan kunci API Anda
gunakan DrewMMailChimpMailChimp;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');
Kemudian, daftarkan semua milis (dengan metode get
on the lists
)
$hasil = $MailChimp->dapatkan('daftar');print_r($hasil);
Mendaftarkan seseorang ke suatu daftar (dengan post
ke metode lists/{listID}/members
):
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'berlangganan', ]);print_r($hasil);
Perbarui anggota daftar dengan informasi lebih lanjut (menggunakan patch
untuk memperbarui):
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$result = $MailChimp->patch("lists/$list_id/members/$subscriber_hash", [ 'merge_fields' = > ['FNAME'=>'Davy', 'LNAME'=>'Jones'], 'minat' => ['2s3a384h' => benar], ]);print_r($hasil);
Hapus anggota daftar menggunakan metode delete
:
$list_id = 'b1234346';$subscriber_hash = MailChimp::subscriberHash('[email protected]');$MailChimp->delete("lists/$list_id/members/$subscriber_hash");
Uji dengan cepat tindakan yang berhasil menggunakan metode success()
:
$list_id = 'b1234346';$result = $MailChimp->post("lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'berlangganan', ]);if ($MailChimp->sukses()) { print_r($hasil); } else { echo $MailChimp->getLastError(); }
Fungsionalitas Operasi Batch MailChimp memungkinkan Anda menyelesaikan beberapa operasi dengan satu panggilan. Contoh yang baik adalah menambahkan ribuan anggota ke daftar - Anda dapat melakukan ini dalam satu permintaan, bukan dalam ribuan.
gunakan DrewMMailChimpMailChimp;gunakan DrewMMailChimpBatch;$MailChimp = new MailChimp('abc123abc123abc123abc123abc123-us1');$Batch = $MailChimp->new_batch();
Anda kemudian dapat membuat permintaan pada objek Batch
seperti yang biasa Anda lakukan dengan objek MailChimp
. Perbedaannya adalah Anda perlu menetapkan ID untuk operasi tersebut sebagai argumen pertama, dan Anda juga tidak akan mendapat respons. ID digunakan untuk menemukan hasil permintaan ini dalam respons gabungan dari operasi batch.
$Batch->post("op1", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'berlangganan', ]);$Batch->post("op2", "lists/$list_id/members", [ 'alamat_email' => '[email protected]', 'status' => 'berlangganan', ]);$Batch->post("op3", "lists/$list_id/members", [ 'email_address' => '[email protected]', 'status' => 'berlangganan', ]);
Setelah Anda menyelesaikan semua permintaan yang seharusnya ada dalam batch, Anda perlu menjalankannya.
$hasil = $Batch->eksekusi();
Hasilnya termasuk ID batch. Nanti, Anda dapat memeriksa status batch Anda:
$MailChimp->batch_baru($batch_id);$hasil = $Batch->check_status();
Ketika batch Anda selesai, Anda dapat mengunduh hasilnya dari URL yang diberikan dalam respons. Di JSON, hasil setiap operasi akan dikunci oleh ID yang Anda gunakan sebagai argumen pertama untuk permintaan tersebut.
Catatan: Penggunaan fungsionalitas Webhook memerlukan setidaknya PHP 5.4.
Webhook MailChimp memungkinkan kode Anda diberitahu tentang perubahan pada daftar dan kampanye.
Saat Anda menyiapkan webhook, Anda menentukan URL di server Anda sebagai tujuan pengiriman data. Kelas Webhook pembungkus ini membantu Anda menangkap webhook masuk dengan cara yang rapi. Ini menggunakan model berlangganan, dengan kode Anda berlangganan ke peristiwa webhook mana pun yang ingin didengarkan. Anda menyediakan fungsi panggilan balik yang menjadi tujuan penerusan data webhook.
Untuk mendengarkan webhook unsubscribe
:
gunakan DrewMMailChimpWebhook; Webhook::berlangganan('berhenti berlangganan', function($data){ print_r($data); });
Sekilas berlangganan/berhenti berlangganan terlihat membingungkan - kode Anda berlangganan acara webhook unsubscribe
MailChimp. Fungsi panggilan balik diteruskan sebagai argumen tunggal - array asosiatif yang berisi data webhook.
Jika Anda lebih suka menangkap semua webhook dan menanganinya sendiri, Anda dapat menggunakan:
gunakan DrewMMailChimpWebhook;$result = Webhook::receive();print_r($result);
Tampaknya tidak ada dokumentasi apa pun untuk konten data webhook. Akan sangat membantu jika menggunakan sesuatu seperti ngrok untuk menyalurkan webhook ke mesin pengembangan Anda - Anda kemudian dapat menggunakan antarmuka webnya untuk memeriksa apa yang telah dikirim dan memutar ulang webhook yang masuk saat Anda men-debug kode Anda.
Untuk mendapatkan kesalahan terakhir yang dikembalikan oleh klien HTTP atau API, gunakan getLastError()
:
echo $MailChimp->getLastError();
Untuk proses debug lebih lanjut, Anda dapat memeriksa header dan isi respons:
print_r($MailChimp->getLastResponse());
Jika Anda curiga Anda mengirim data dalam format yang salah, Anda dapat melihat apa yang dikirim ke MailChimp melalui pembungkusnya:
print_r($MailChimp->getLastRequest());
Jika sertifikat akar CA server Anda tidak mutakhir, Anda mungkin mendapati bahwa verifikasi SSL gagal dan Anda tidak mendapatkan respons. Solusi koreksinya adalah dengan tidak menonaktifkan verifikasi SSL. Solusinya adalah memperbarui sertifikat Anda. Jika Anda tidak bisa melakukannya, ada opsi di bagian atas file kelas. Tolong jangan mematikannya begitu saja tanpa setidaknya mencoba memperbarui sertifikat Anda -- itu malas dan berbahaya. Anda bukan pengembang yang malas dan berbahaya, bukan?
Jika Anda memiliki pertanyaan implementasi tingkat tinggi tentang proyek Anda ("Bagaimana cara menambahkan ini ke WordPress", "Saya punya formulir yang menggunakan alamat email..."), harap bawa pertanyaan tersebut ke suatu tempat seperti StackOverflow . Jika Anda merasa menemukan bug, atau ingin mendiskusikan perubahan atau peningkatan, silakan ajukan masalah dan kami akan menyelesaikannya bersama-sama.
Ini adalah pembungkus yang cukup sederhana, namun telah dibuat jauh lebih baik berkat kontribusi dari mereka yang menggunakannya. Jika Anda ingin menyarankan perbaikan, silakan ajukan masalah untuk didiskusikan sebelum mengajukan permintaan penarikan.
Permintaan penarikan untuk bug sangat diterima - harap jelaskan bug yang ingin Anda perbaiki dalam pesan.
Ada sejumlah kecil pengujian unit PHPUnit. Pengujian unit terhadap API jelas agak rumit, tapi saya menyambut baik kontribusi apa pun untuk ini. Akan sangat bagus jika cakupan tesnya lebih luas.