Я пытаюсь создать метод подписки для моего приложения laravel, который использует API mailchimp для подписки пользователя на данный список. Этот метод отлично работает, когда адрес электронной почты еще не указан в списке. когда он уже подписан, API mailchimp выдает следующую ошибку
Mailchimp_List_AlreadySubscribed [email protected] уже подписан на список Tc App Test List. Нажмите здесь, чтобы обновить свой профиль.
со следующим кодом, показанным
public function castError($result) {
if($result['status'] !== 'error' || !$result['name']) throw new Mailchimp_Error('We received an unexpected error: ' . json_encode($result));
$class = (isset(self::$error_map[$result['name']])) ? self::$error_map[$result['name']] : 'Mailchimp_Error';
return new $class($result['error'], $result['code']);
}
Я попытался использовать блок try catch, чтобы поймать ошибку, но она все еще возвращается в браузер, вот что я пробовал, и если он говорит, что MailChimp_Error я также пробовал с Exception.
public function subscribe($id, $email, $merge_vars)
{
try {
$this->mailchimp->lists->subscribe($id, $email, $merge_vars);
} catch (MailChimp_Error $e) {
$response = 'an error has occured';
}
return $response;
}
В конечном счете, я хочу иметь возможность запустить метод, а затем либо вернуть пользователю сообщение об успешном выполнении, либо сообщение с описанием проблемы. 3 возможные ошибки метода mailchimp: Email_notexists, list_alreadysubscribed и list не существует, хотя последняя ошибка не должна возникать, поскольку я предоставляю список в исходном коде.
редактировать 1; после обращения в службу поддержки API mailchimp они предложили этот код, но ошибка все еще полностью возвращается в браузер.
try {
$results = $this->mailchimp->lists->subscribe($id, $email, $merge_vars);
} catch (Mailchimp_Error $e) {
if ($e->getMessage()) {
$error = 'Code:'.$e->getCode().': '.$e->getMessage();
}
}
echo $error;