Mailchimp API «Идентификатор разрешения на маркетинг» не существует.при передаче действительного идентификатора - PullRequest
0 голосов
/ 12 ноября 2018

Я использую Mailchimp API, чтобы сначала получить marketing_permission_id для своего списка.Ответ выглядит следующим образом:

[marketing_permission_id] => f878932739

Это значение затем используется во втором вызове API для обновления настроек для конкретного пользователя.Однако я получаю сообщение об ошибке:

string (227) "{" type ":" http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/","title":"Bad Request "," status ": 400," detail ":" ID разрешения на маркетинг'' не существует. ", [...]

Я дважды проверил данные, которые отправляются во втором вызове, и там указан правильный marketing_permission_id:

{"marketing_permissions":{"marketing_permission_id":"f878932739","enabled":true}} 

Я следовал формату https://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/#%20.

Я не понимаю, что происходит не так. Надеюсь, кто-то здесь делает ..:)

1 Ответ

0 голосов
/ 27 ноября 2018

Просто оставьте это для дальнейшего использования - в Google не так много подсказок для mailchimp API с маркетинговыми разрешениями ... Это основная функция, которую я использую для добавления контакта в список.

function syncMailchimp($userdata,
    $apiKey, $listId)
{
    
    $dataCenter = substr($apiKey,
        strpos($apiKey, '-') +
        1);
    $url = 'https://'.$dataCenter.
    '.api.mailchimp.com/3.0/lists/'
    .$listId.
    '/members/';

// This is the interesting part //

    $json = json_encode([
      'email_address' => $userdata[
            'email'],
      'status' => $userdata['status'], // "subscribed","unsubscribed","cleaned","pending"
      'merge_fields' => [
        'FNAME' => $userdata[
                'firstname'
                ],
        'LNAME' => $userdata['lastname']
      ],
       'tags' => [
        'added'
       ],
// How to build the Array -->
       'marketing_permissions' =>
       array(
            0 =>
            array(
                'marketing_permission_id' =>
                '1e5142bbce',
                'enabled' =>
                true,
            ),
         ),
    ]);

    $ch = curl_init($url);

    curl_setopt($ch,
        CURLOPT_HTTPAUTH,
        CURLAUTH_BASIC);

    $headers = array(
        'Content-Type:application/json',
        'Authorization: apikey '
        .$apiKey
    );
    curl_setopt($ch,
        CURLOPT_HTTPHEADER,
        $headers);
    curl_setopt($ch,
        CURLOPT_RETURNTRANSFER,
        true);
    curl_setopt($ch,
        CURLOPT_TIMEOUT, 10);
    curl_setopt($ch,
        CURLOPT_CUSTOMREQUEST,
        'POST');
    curl_setopt($ch,
        CURLOPT_SSL_VERIFYPEER,
        false);
    curl_setopt($ch,
        CURLOPT_POSTFIELDS,
        $json);

    $result = curl_exec($ch);
    $httpCode = curl_getinfo($ch,
        CURLINFO_HTTP_CODE);
    curl_close($ch);

    return $result;
}
...