Помощь Ajax Quick Checkout - (не отправляется письмо на email администратору)

Можно попробовать сделать это поле обязательным, забить туда email и сделать его скрытым.
 
Можно попробовать сделать это поле обязательным, забить туда email и сделать его скрытым.
Согласен... Но возникает вопрос, а если заказчик таки хочет указать свой эмаил, как он это сделает, если поле скрыто?

Если это гостевой заказ, то он не захочет, а если регистрация, то пусть указывает.
А если захочет в гостевом... Заказчики, они же такие - кто-то укажет телефон, а кто-то не захочет оставлять телефон, и захочет указать почту

версия opencart какая?
Версия 2.0.3.1

После некоторых размышлений на тему, пришла мысль о следующем....
Ведь почту, по сути, отправляет не модуль Ajax Quick Checkout, а сам opencart....
Ajax Quick Checkout всего лишь оформляет заказ.... И оформляет с пустым полем email, а алгоритм opencart, скорее всего таков, что раз поле не заполнено, значит и оповещать о заказе не стоит....
А значит нужно подправить логику opencartа, и застаить его отправлять почту при пустом поле email в заказе...
Если не прав - подправьте, а если ход мысли верный - подскажите где искать стандартный скрипт opencartа отправляющий письма...

Все правильно, письма формирует сам opencart. Варианта два... Либо копать модуль для генерации разных адресов и передаче данных движку, либо переписывать движок. За отправку отвечает catalog/model/checkout/order.php
Покопавшись в файлах движка, понял, что при формировании письма, opencart берет значение ячейки email из базы данных... Гди и что прописать чтоб письмо отправлялось при пустой ячейке, так и не нашел... Присвоение ячейке значения (какой то email ) по умолчанию - результатов не принесло.....
Скорее всего, проще прикрутить скрипт к Quick Checkout который будет автоматически присваивать значение ячейке...
покопавшись в Симпле, нашел строчку ($fieldsInfo['email'] = !empty($fieldsInfo['email']) ? $fieldsInfo['email'] : 'empty'.time().'@localhost';)
которая заполняет поле email если оно пусто...

Вопрос.... Как это применить в Ajax Quick Checkout и куда это прописать...???
Кто знает - подскажите пожалуйста...
Спасибо каждому неравнодушному к моей проблеме..


Итак. Кому интересна данная тема...
Нашел я таки как научить Ajax Quick Checkout 6.2.2 отправлять письма о заказе администратору на почту, если при оформлении заказа поле email не заполнить.
Для того чтоб получить такую возможность, нужно в каталоге catalog\controller\d_quickcheckout в файле payment_address.php строку
Скрытое содержимое доступно для зарегистрированных пользователей!

заменить на
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Последнее редактирование модератором:
Если это гостевой заказ, то он не захочет, а если регистрация, то пусть указывает.

версия opencart какая?

Все правильно, письма формирует сам opencart. Варианта два... Либо копать модуль для генерации разных адресов и передаче данных движку, либо переписывать движок. За отправку отвечает catalog/model/checkout/order.php
 
Последнее редактирование модератором:
Поправьте, если ошибаюсь, но в настройках самого магазина можно установить оповещение о заказе администратора магазина по его имейлу и не нужно танцев с бубном. У меня при гостевой регистрации поле с имейлом скрыто, но оповещения приходили исправно.
 
Поправьте, если ошибаюсь, но в настройках самого магазина можно установить оповещение о заказе администратора магазина по его имейлу и не нужно танцев с бубном. У меня при гостевой регистрации поле с имейлом скрыто, но оповещения приходили исправно.
Даже если в настройках самого магазина установлено оповещение о заказе администратору магазина по его email, opencart не будет отправлять письма если поле email не заполнено......
А вот чтоб поле email заполнялось автоматом, нужно (как писал уже выше) в каталоге catalog\controller\d_quickcheckout в файле payment_address.php строку
Скрытое содержимое доступно для зарегистрированных пользователей!

заменить на
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Сколько ж я промучался, перед тем как понял, что именно не отсылает письмо, ( грешил на SMTP) и не нашел эту тему. Спасибо
 
Столкнулся с проблемой оповещения администратора при гостевом заказе Ajax Quick Checkout на нескольких своих проектах.

Суть проблемы, отправка email администратору происходит после информирования клиента, так как код отправки админу находиться ниже. При отправке на несуществующий адрес, или при пустом адресе клиента вываливаеться ошибка и соответственно прерывается выполнение метода.



Нужно
в файле:
catalog\model\checkout\order.php
в методе:
addOrderHistory

Делаем поиск по файлу CTRL+F -> "$order_info['email']", находим код:
PHP:
$mail = new Mail();
$mail->protocol = $this->config->get('config_mail_protocol');
$mail->parameter = $this->config->get('config_mail_parameter');
$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
$mail->smtp_username = $this->config->get('config_mail_smtp_username');
$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
$mail->smtp_port = $this->config->get('config_mail_smtp_port');
$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

  $mail->setTo($order_info['email']);
  $mail->setFrom($this->config->get('config_email'));
  $mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
  $mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
  $mail->setHtml($html);
  $mail->setText($text);
  $mail->send();

Дописываем проверку на существование и пустоту email клиента, получиться код:

PHP:
if(isset($order_info['email']) && !empty($order_info['email'])){
  $mail = new Mail();
  $mail->protocol = $this->config->get('config_mail_protocol');
  $mail->parameter = $this->config->get('config_mail_parameter');
  $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
  $mail->smtp_username = $this->config->get('config_mail_smtp_username');
  $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
  $mail->smtp_port = $this->config->get('config_mail_smtp_port');
$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

$mail->setTo($order_info['email']);
$mail->setFrom($this->config->get('config_email'));
$mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
$mail->setHtml($html);
$mail->setText($text);
$mail->send();
}


Емаил приходит, ошибок что адреса на который письмо питалось отправиться вида: "Mail delivery failed: returning message to sender
empty1472220008@localhost" не появляется.
 
Последнее редактирование:
Столкнулся с проблемой оповещения администратора
Даже если в настройках самого магазина установлено оповещение о заказе администратору магазина по его email, opencart не будет отправлять письма если поле email не заполнено......
А вот чтоб поле email заполнялось автоматом, нужно (как писал уже выше) в каталоге catalog\controller\d_quickcheckout в файле payment_address.php строку

заменить на


Попробовал все советы. не помогло(
Ajax Quick Checkout 6.2.4.1
Version 2.0.2.0 (rs.4)
 
Последнее редактирование:
Назад
Сверху