Подтверждение заказа в письме

Главные вкладки

Аватар пользователя RusBel RusBel 23 июня 2017 в 9:36

Добрый день! Подскажите, кто знает, нужно в Drupal Commerce сделать подтверждение заказа? Т.е. покупателю приходит письмо с его заказом и в нём чтобы была ссылка-подтверждение, кликая на которую клиент подтвердал бы заказ и в Commerce это бы фиксировалось. Как такое сделать. Что то я сам не нашёл такого.

Лучший ответ

Аватар пользователя mozh mozh 23 июня 2017 в 16:43
1

используйте hook_commerce_checkout_complete($order)
он вызывается когда создан заказ
в этой функции отправляйте юзеру письмо с ссылкой

отправления письма, реализуйте hook
/**
* Implements hook_mail().
*/
function HOOK_notify_mail($key, &$message, $params) {
$message['subject'] = $params['subject'];
$message['body'][] = $params['body'];

// Add attachment when available.
if (isset($params['attachments'])) {
foreach($params['attachments'] as $attachment)
$message['params']['attachments'][] = $attachment;
}
}

отправление
$attachments = array();
$attachments[] = array(
'filecontent' => $pdf,
'filename' => $subject_2.'.pdf',
'filemime' => 'application/pdf'
);

$params = array(
'key' => 'HOOK',
'to' => $meta_data['user_email'],
'from' => $meta_data['site_mail'],
'subject' => $subject,
'body' => $message,
'attachments' => $attachments
);

//email for user
drupal_mail('HOOK_notify', 'mintroute', $EMAIL, language_default(), $params, $meta_data['site_mail']);

при переходе по этой ссылке, отправляйте юзера на страницу, например site.com/submitorder/123 и меняйте статус заказа выбранного ордера (пример commerce_order_status_update($order, 'payment'))

вот кусок кода https://pastebin.com/K2v4NK73
он принимает ссылку подтверждения из письма и изменяет статус заказа

Комментарии

Аватар пользователя mozh mozh 23 июня 2017 в 16:43
1

используйте hook_commerce_checkout_complete($order)
он вызывается когда создан заказ
в этой функции отправляйте юзеру письмо с ссылкой

отправления письма, реализуйте hook
/**
* Implements hook_mail().
*/
function HOOK_notify_mail($key, &$message, $params) {
$message['subject'] = $params['subject'];
$message['body'][] = $params['body'];

// Add attachment when available.
if (isset($params['attachments'])) {
foreach($params['attachments'] as $attachment)
$message['params']['attachments'][] = $attachment;
}
}

отправление
$attachments = array();
$attachments[] = array(
'filecontent' => $pdf,
'filename' => $subject_2.'.pdf',
'filemime' => 'application/pdf'
);

$params = array(
'key' => 'HOOK',
'to' => $meta_data['user_email'],
'from' => $meta_data['site_mail'],
'subject' => $subject,
'body' => $message,
'attachments' => $attachments
);

//email for user
drupal_mail('HOOK_notify', 'mintroute', $EMAIL, language_default(), $params, $meta_data['site_mail']);

при переходе по этой ссылке, отправляйте юзера на страницу, например site.com/submitorder/123 и меняйте статус заказа выбранного ордера (пример commerce_order_status_update($order, 'payment'))

вот кусок кода https://pastebin.com/K2v4NK73
он принимает ссылку подтверждения из письма и изменяет статус заказа

Аватар пользователя RusBel RusBel 23 июня 2017 в 18:52

Ещё бы мне разобраться с вашим методом...я пока ещё не особо силён в хуках. Но спасибо за дельный совет. Странно, что в Commerce не заложена эта функция изначально.