Jump to content
Sign in to follow this  
Timber

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

Recommended Posts

При чекауте, после успешного прохождения оплаты вызывается метод $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 релей. Но тоже как-то вариант не особо нравится.

 

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

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.