Пакетный вызов Mailchimp, возвращающий 0 общих операций

#php #mailchimp-api-v3.0

#php #mailchimp-api-v3.0

Вопрос:

Я весь день ломал голову, как заставить пакеты работать при подписке контактов на определенный список в Mailchimp. При попытке вызова я получаю следующий ответ, в котором говорится, что мой total_operations равен 0. Есть идеи, с чего начать, чтобы выяснить, что я делаю не так? Любая помощь может спасти меня от безумия и очень ценится!

Вот как настраиваются данные. Я совершенно уверен, что здесь все правильно.

 $finalData = [];
foreach ($list_clean as $obj) {
    $individulData = array(
        'email_address' => $obj->email_address,
        'status'        => 'subscribed',
        'merge_fields'  => array(
            'FNAME' => $obj->first_name,
            'LNAME' => $obj->last_name
        )
    );

    $json_individulData        = json_encode($individulData);
    $finalData['operations'][] =
        array(
            "method" => "PUT",
            "path"   => "/lists/$mc_lid/members/" . md5(strtolower($obj->email_address)),
            "body"   => $json_individulData
        );
}
  

Это возвращает данные в этом формате: (измененное содержимое даты, но структура та же)

 {
  "operations": [
    {
      "method": "PUT",
      "path": "/lists/281c77a710/members/d83c093eb534d5c94169414a2477b13f",
      "body": "{"email_address":"test1@example.com","status":"subscribed","merge_fields":{"FNAME":"Test","LNAME":"One"}}"
    },
    {
      "method": "PUT",
      "path": "/lists/281c77a710/members/c48dc4970fabd67cebd24b9102c1b38c",
      "body": "{"email_address":"test2@example.com","status":"subscribed","merge_fields":{"FNAME":"Test","LNAME":"Two"}}"
    }
}
  

И вот функция, которая выполняет вызов.

 function batchSubscribe(array $data, $key) {
    $auth          = base64_encode('user:' . $key);
    $json_postData = json_encode($data);
    console_log($json_postData);
    $ch            = curl_init();
    $dataCenter    = substr($key, strpos($key, '-')   1);
    $curlopt_url   = 'https://' . $dataCenter . '.api.mailchimp.com/3.0/batches/';
    curl_setopt($ch, CURLOPT_URL, $curlopt_url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
        'Authorization: Basic ' . $auth));
    curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/3.0');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_postData);

    $result = curl_exec($ch);
    return $result;
}
  

Он не возвращает никаких ошибок, но total_operations всегда возвращает 0. Вот полный ответ.

 {
  "id": "dd9c7632ab",
  "status": "pending",
  "total_operations": 0,
  "finished_operations": 0,
  "errored_operations": 0,
  "submitted_at": "2019-03-18T22:18:56 00:00",
  "completed_at": "",
  "response_body_url": "",
  "_links": [
    {
      "rel": "parent",
      "href": "https://us20.api.mailchimp.com/3.0/batches",
      "method": "GET",
      "targetSchema": "https://us20.api.mailchimp.com/schema/3.0/Definitions/Batches/CollectionResponse.json",
      "schema": "https://us20.api.mailchimp.com/schema/3.0/CollectionLinks/Batches.json"
    },
    {
      "rel": "self",
      "href": "https://us20.api.mailchimp.com/3.0/batches/dd9c7632ab",
      "method": "GET",
      "targetSchema": "https://us20.api.mailchimp.com/schema/3.0/Definitions/Batches/Response.json"
    },
    {
      "rel": "delete",
      "href": "https://us20.api.mailchimp.com/3.0/batches/dd9c7632ab",
      "method": "DELETE"
    }
  ]
}
  

Комментарии:

1. Я получил ответ от команды поддержки Mailchimp, и они сообщили мне, что ответ всегда возвращает 0 total_operations. Итак, все это время работало, просто потребовалось немного обновить список в Mailchimp.