Mailchimp addListMember meldet den Client-Fehler 400 Bad Request, wenn bereits vorhanden
P粉794851975
P粉794851975 2024-02-25 14:06:06
0
1
493

Ich verwende die Writer-Ressource MailchimpMarketingApiClient(), um der Website ein einfaches Mailchimp-Abonnementformular hinzuzufügen. Das Hinzufügen eines Benutzers scheint gut zu funktionieren, aber wenn ich versuche, einen bereits vorhandenen Benutzer hinzuzufügen, erwarte ich nur eine nette JSON-Antwort, damit ich diesen Fehler abfangen und dem Benutzer anzeigen kann, aber ich erhalte auf der Clientseite die folgende GuzzleHttpException Ausnahme:

Client error: `POST https://us10.api.mailchimp.com/3.0/lists/xxxxxxxxxx/members` resulted in a `400 Bad Request` response:
{"type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/","title":"Member Exists","status" (truncated...)

Die Dokumentation scheint nicht wirklich viel zu erklären, ich muss auch den richtigen Weg finden, um Fehler bei einem Stapelüberlauf abzufangen, weil die Mailchimps-Dokumentation... fehlt! Hier ist der Code:

try {
    $response = $mailchimp->lists->addListMember($this->settings_helper->get('mailchimp_list_id'), [
        "email_address" => $form->get_field_value('email'),
        "status" => "subscribed",
        "merge_fields" => [
            "FNAME" => $first_name,
            "LNAME" => $last_name
         ]
    ]);
    
    if ($response->getId()) {
        $this->add_json_success($this->settings_helper->get('mailchimp_success_message'));
    }
} catch (MailchimpMarketing\ApiException $e) {
    $errors[] = $e->getMessage();
} catch (ClientErrorResponseException $e) {
    $errors[] = $e->getMessage();
} catch (GuzzleHttp\Exception\ClientException $e) {
    $errors[] = $e->getMessage();
}

Dies ist die Mailchimp-Dokumentation, die ich verwende: https://mailchimp.com/developer/api/marketing/list-members/add-member-to-list/

Ich kann den 400-Fehlercode abfangen und einen benutzerdefinierten Fehler ausgeben, aber ich bin mir sicher, dass ich etwas falsch mache, um eine so nutzlose Antwort von der Mailchimp-API zu erhalten?

Vielen Dank, Andy, für all die Hilfe.

P粉794851975
P粉794851975

Antworte allen(1)
P粉797855790

我遇到了同样的问题,因此我最终通过将最后一个 catch 子句更改为以下内容来指示错误消息以查看整个错误:

catch (GuzzleHttp\Exception\ClientException $e) {
  echo '
' . var_export($e->getResponse()->getBody()->getContents()).'
'; $errors[] = $e->getMessage(); }

这揭示了以下糟糕的错误,到目前为止该错误已被截断:

{
    "type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/",
    "title":"Invalid Resource",
    "status":400,
    "detail":"Isabell_Murazik@example.com looks fake or invalid, please enter a real email address.",
    "instance":"fcc1d762-2475-40a6-bc7f-4ac7f3fb7902"
}

所以,我的问题是 @example.com 看起来是假的或无效...

尝试不同的电子邮件,甚至 @test.com 也有效。 我不能向您保证这也会是您的问题,但检查错误详细信息绝对是良好的第一步!

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage