J'utilise la ressource d'écriture MailchimpMarketingApiClient() pour ajouter un formulaire d'abonnement Mailchimp de base au site Web. L'ajout d'un utilisateur semble fonctionner correctement, mais lorsque j'essaie d'ajouter un utilisateur déjà existant, j'attends juste une belle réponse json afin de pouvoir détecter cette erreur et l'afficher à l'utilisateur, mais j'obtiens l'exception GuzzleHttpException suivante côté client exception :
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...)
La documentation ne semble pas vraiment expliquer grand chose, je dois aussi trouver le bon moyen de détecter les erreurs de débordement de pile car la documentation Mailchimps est... manquante ! Voici le 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(); }
Voici la documentation mailchimp que j'utilise : https://mailchimp.com/developer/api/marketing/list-members/add-member-to-list/
Je peux détecter le code d'erreur 400 et générer une erreur personnalisée, mais je suis sûr que je dois faire quelque chose de mal pour obtenir une réponse aussi inutile de l'API Mailchimp ?
Merci beaucoup, Andy, pour toute l'aide.
J'ai eu le même problème, j'ai donc fini par indiquer le message d'erreur en changeant la dernière clause catch par la suivante pour voir l'intégralité de l'erreur :
Cela révèle la terrible erreur suivante, qui a été tronquée jusqu'à présent :
Donc, ma question est la suivante :
@example.com
semble faux ou invalide...J'ai essayé différents e-mails, même
@test.com
fonctionne. Je ne peux pas vous garantir que ce sera également votre problème, mais vérifier les détails de l'erreur est certainement une bonne première étape !