Добрый день. Сейчас рассмотрим как просто реализовать кнопку смены статуса заказа пользователя из письма на почту администратора магазина.
Логика процесса такая: делаем в почтовом шаблоне письма, которое приходит администратору с заказом кнопку, в параметр этой кнопки добавляем передачу GET запроса с ID заказа в файл php нашего сайта, достаем из GET запроса айди заказа и меняем его статус, се достаточно просто. Итак, начнем.
- Заходим в панель управления Битрикс-> Настройки-> Почтовые шаблоны. Там находим почтовый шаблон, который будет называться "Новый заказ [SALE_NEW_ORDER]", открываем его на редактирование и внизу добавляем нашу кнопку такой строкой:
<a style="text-decoration:none;" href="https://нашсайт.ru/order-payed.php?orderid=#ORDER_ID#"><span style="background: blue; border-radius: 10px; color: white; font-weight: bold; padding: 10px; text-decoration: none;">ЗАКАЗ ОПЛАЧЕН</span></a>
Где вместо нашсайт.ru пишете домен вашего сайта. Тут мы повесили передачу ID нашего заказа GET запросом в файл order-payed.php.
2. Далее, можно в корне сайта (как пример) создать файл order-payed.php с таким содержимым
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetPageProperty("title", "Подтверждение заказа");
?>
<h1> Подтверждение оплаты заказа №<?print_r($_GET["orderid"])?> </h1>
<br>
<?
$idzakaz=$_GET["orderid"];
CModule::IncludeModule('sale');
$statuszak=CSaleOrder::GetByID($idzakaz);
if($statuszak["STATUS_ID"] !== "P") {
CSaleOrder::StatusOrder($idzakaz, 'P');
echo "СТАТУС ЗАКАЗА ИЗМЕНЕН НА ОПЛАЧЕН";
}
else {
echo "<span style='color:red'>СТАТУС ЗАКАЗА УЖЕ БЫЛ НАЗНАЧЕН НА ОПЛАЧЕН</span>";
}
Разберем подробно, что делается в этом коде.
Строка $idzakaz=$_GET["orderid"]; - записываем в переменную idzakaz номер нашего заказа из GET запроса.
Далее, строкой $statuszak=CSaleOrder::GetByID($idzakaz); мы достаем параметры статусов заказа из номера нашего заказа. И далее делаем небольшую проверку, если статус заказа уже был в статусе "Оплачен", то ничего не делаем, иначе присваиваем ему статус "Оплачен"
if($statuszak["STATUS_ID"] !== "P") { CSaleOrder::StatusOrder($idzakaz, 'P'); echo "СТАТУС ЗАКАЗА ИЗМЕНЕН НА ОПЛАЧЕН"; }
else { echo "<span style='color:red'>СТАТУС ЗАКАЗА УЖЕ БЫЛ НАЗНАЧЕН НА ОПЛАЧЕН</span>"; }
Код заказа "P" означает, что заказ оплачен. Подробнее с кодами статусов заказов Вы можете ознакомиться на странице Вашего сайта по ссылке: вашсайт.ру/bitrix/admin/sale_status.php?lang=ru. Так же на этой странице можно создать свой статус заказа. На этом все, теперь при нажатии на кнопку внизу заказа на почте, будет меняться статус нашего заказа на Оплачен.
Не забываем подписываться на канал, будет много интересного.