Добрый день! Подскажите, кто знает, нужно в Drupal Commerce сделать подтверждение заказа? Т.е. покупателю приходит письмо с его заказом и в нём чтобы была ссылка-подтверждение, кликая на которую клиент подтвердал бы заказ и в Commerce это бы фиксировалось. Как такое сделать. Что то я сам не нашёл такого.
Подтверждение заказа в письме
Главные вкладки
Лучший ответ
используйте 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
он принимает ссылку подтверждения из письма и изменяет статус заказа
Комментарии
используйте 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
он принимает ссылку подтверждения из письма и изменяет статус заказа
Ещё бы мне разобраться с вашим методом...я пока ещё не особо силён в хуках. Но спасибо за дельный совет. Странно, что в Commerce не заложена эта функция изначально.
Хуки, это ещё проще чем драш. Главное - следить за работоспособностью бэкапов.