Перейти к содержанию
Timber

Ошибки при отправке почты через SMTP уведомление об успешной оплате

Рекомендуемые сообщения

При чекауте, после успешного прохождения оплаты вызывается метод $this->model_checkout_order->addOrderHistory, который, среди всего прочего, отправляет письма заказчику и администратору. В том случае, если используется php mail, то никаких проблем нет.

 

А вот отправка почты через SMTP выглядит таким образом (system/library/mail.php)

if (!$handle) {
   trigger_error('Error: ' . $errstr . ' (' . $errno . ')');
   exit();
}

И так после любой ошибки. Соответственно, если возникает ошибка при оплате почты, выполнение прерывается и пользователь остаётся на странице оплаты, в лучшем случае с заблокированной кнопкой "оплатить".

 

Вижу два варианта решения:

 

1. Заменить все exit() на return с записью в лог. Но в этом случае придётся менять файлы ядра, что ни есть хорошо.

2. Настроить sendmail на работу через SMTP релей. Но тоже как-то вариант не особо нравится.

 

Кто как решает эту проблему?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто как решает эту проблему?

Я - 2. Но и в (1) не вижу ничего плохого - косяки надо изправлять и слать пулл-реквесты в опенкарт. DK, конечно, тот ещё подарочек, но такие косяки исправлять надо. И последнее время там у него появились люди, которые его способны то ли смягчить, то ли переубедить. Так что может и примут. Но я бы поискал предварительно, не обсуждалось ли это у них в issues на гитхабе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но я бы поискал предварительно, не обсуждалось ли это у них в issues на гитхабе.

 

Нашёл обсуждение этой проблемы в 2013 году. Причём ДК пометил его как исправленное, но, похоже, что-то пошло не так, поскольку во второй версии проблему подняли снова :-) 

 

Хорошо хоть, что проблему отловил на тестовом сайте, когда модуль оплаты по карточкам настраивал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрел, там не было реального фикса. Его просили убрать `exit()`, а он заменил `trigger_error()` на `error_log()` и счёл это решением проблемы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В итоге во 2-й версии и exit остался и trigger_error.

 

Странно, что никто в массовом порядке на эту ошибку не жалуется. Всё-таки smtp почта довольно популярна последнее время стала.

 

Я, в итоге, пошёл по пути 1.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) ошибки, видимо, редко возникают;

2) если и возникают, то их последствия видит (или скорей не видит) покупатель, а не владелец. И понять, что там за ошибка (тем более не всегда проявляющаяся) - задача нетривиальная.

Вот и не жалуются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В итоге во 2-й версии и exit остался и trigger_error.

Имеет смысл просмотреть историю изменений этого файла. Должна же быть причина. Может описана в комментариях к коммитам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) ошибки, видимо, редко возникают;

2) если и возникают, то их последствия видит (или скорей не видит) покупатель, а не владелец. И понять, что там за ошибка (тем более не всегда проявляющаяся) - задача нетривиальная.

Вот и не жалуются.

 

У покупателя это проявляется в том, что оплата прошла, а финального сообщения от магазина он не видит. Хотя, как я подозреваю, многие пейпалом платят, а там в любом случае сначала получаешь результат от пейпала, а потом редирект в магазин. Если на этом этапе что-то сломалось, то не так и страшно, тем более письмо от пейпала всё равно приходит.

 

А историю изменений посмотрю, спасибо за идею.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У покупателя это проявляется в том, что оплата прошла, а финального сообщения от магазина он не видит.

Ну и? Я бы подумал на кривой магазин или плохую интеграцию с платёжной системой, на сбой платежа, проблемы с картой. Про смтп и почту подумать может только разве что разработчик, который изучал кишки магазина. Остальным и в голову эта мысль не придёт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну и? Я бы подумал на кривой магазин или плохую интеграцию с платёжной системой, на сбой платежа, проблемы с картой. Про смтп и почту подумать может только разве что разработчик, который изучал кишки магазина. Остальным и в голову эта мысль не придёт.

 

Я к тому, что баг нехороший. Если оплата карточкой, то оплата физически проходит, а пользователь остаётся на форме ввода данных карточки. В итоге может начать повторно оплачивать. А про то, с чем это связано, понятно, что пользователь не догадается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.