Как создать / обновить большую часть писем в списке Mailchimp, используя их API 3.0?

У меня есть список, который уже создан в MailChimp, и у него есть некоторые адреса в подписанных и отписавшихся списках.

Теперь мне нужно создать / обновить список подписчиков, используя API в PHP-коде.

$apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXX-us12";

$subscribers = array(array(
'email_address'     => '[email protected]',
'status'    => 'subscribed',
'merge_fields'  => array(
'FNAME'     => "subscriber1F",
'LNAME'     => "Arunachalam1L")
),
array(
'email_address'     => '[email protected]',
'status'    => 'subscribed',
'merge_fields'  => array(
'FNAME'     => "subscriber2F",
'LNAME'     => "subscriber2L")
));

$listId = "b633deb4c8";

$url = "https://us12.api.mailchimp.com/3.0/batches";
$id = 1;
foreach ($subscribers as $subscriber) {
#echo $subscriber['email_address'];
$operation = array(
'method'=>'PUT',
'path'=>'/lists/'.$listId.'/members/'.md5(strtolower($subscriber['email_address'])),
'body'=>json_encode($subscriber));
$id++;
array_push($batch_operations, $operation);
}

$request_encoded = json_encode(array('operations'=>$batch_operations));

$curl = curl_init($url);

curl_setopt($curl, CURLOPT_USERPWD, 'user:' . $apiKey);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//raw output
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $request_encoded);
$result = curl_exec($curl);

Я получаю ответ 200. и даже я попытался получить ответ для BatchId, который возвращается после отправки пакетной операции.

Возвращает завершенные операции, и все успешно, но список не был обновлен. Кто-нибудь успешно использовал свои партии API?

Edit1:
Я получаю этот ответ для операции, у которой есть новый адрес электронной почты.

{"status_code":404,"operation_id":null,"response":"{\"type\":\"http:\/\/developer.mailchimp.com\/documentation\/mailchimp\/guides\/error-glossary\/\",\"title\":\"Resource Not Found\",\"status\":404,\"detail\":\"The requested resource could not be found.\",\"instance\":\"\"}"}

Редактировать 2

объяснение
Извините, я не совсем понимаю, что вы имеете в виду. Но то, что я делаю, это сначала отправляю пакетный запрос (например: он имеет 2 операции, как в сообщении). Затем я получаю BatchId в ответе на запрос, который я сделал. затем я сделал запрос Get с BatchId, для этого я получаю ответ, содержащий информацию об операции с ошибкой. Я получил ссылку, чтобы получить ответ на пакетную операцию с результатами всех адресов, которые я отправил. которая просто выполняет все операции, но если адрес уже существует, то эта операция является успешной (в том смысле, что она только добавлена ​​в счетчик успешных операций), но сделанные мной изменения не отражаются, а также, если добавленный адрес не существует в неудачной операции.

1

Решение

Я исправил проблему. Это из-за пути URL. Хотя в документации Mailchimp сказано, как показано ниже (даже я пытаюсь выполнить пакетную операцию) документы,

введите описание изображения здесь

Я изменил путь в операции, должно быть так.

'path'=>'lists/'.$listId.'/members/'.md5(strtolower($subscriber['email_address'])),

теперь работает как положено. Пробовал с методом «PUT» в действии, он создает и обновляет подписчиков на список в mailchimp.

2

Другие решения

Удалите следующий код и измените тип на POST, проблема решена.

array_push($batch_operations, $operation);
-1

По вопросам рекламы [email protected]