
Автоматическая отправка электронных книг покупателям предзаказов на 1С-Битрикс
Для проекта «Альпина» разработали очередь оплаченных предзаказов, периодическое получение ссылок на электронные версии и отправку покупателям после выхода книг.
От проблемы к результату
Как мы решали конкретную задачу клиента и что получилось.
Проблема
Покупатель мог оплатить предзаказ бумажной книги до появления её электронной версии. Требовалось сохранить такую покупку и отправить электронную версию после её выхода.
Для этого нужно было связать оплату заказа, товар, доступность электронной книги и email покупателя.
Решение
Создали очередь в HL-блоке Битрикса. После оплаты в неё добавлялись товары заказа, для которых ещё не заполнена связь с электронной версией.
Настроили периодическую проверку активных записей раз в четыре часа. По данным очереди выполнялись запросы на получение ссылки с передачей идентификаторов товара, заказа и email покупателя. Доработали функционал рассылки и провели тестовую отправку.
Результат
Разработаны очередь предзаказов, периодическая проверка и получение ссылок на электронные версии. В истории работ зафиксированы переносы, тестовые заказы, тестовая рассылка и последующие корректировки логики.
По проблемным сценариям анализировали логи и содержимое HL-блока, проверяли добавление записей и запуск агента. Статистика доставки писем и экономии рабочего времени в задаче не приведена.
Книга оплачена заранее, электронная версия выйдет позже
Покупатель оформляет и оплачивает бумажную книгу до её выхода. Электронная версия в этот момент может быть ещё недоступна. Системе требовалось сохранить связь с покупкой и вернуться к отправке после появления электронной книги.
Для проекта «Альпина» разработали очередь таких покупок и периодическую обработку. Она связывала оплату заказа с последующим получением ссылки на электронную версию.
От оплаты к электронной книге
Обработка активных записей очереди запускалась раз в четыре часа. Это интервал проверки, а не гарантия доставки письма за четыре часа.
Оплата заказа
После оплаты определяются товары, у которых ещё отсутствует связь с электронной версией.
Очередь в HL-блоке
Сохраняются данные товара и заказа для последующей обработки.
Периодическая проверка
Агент проверяет активные записи и выполняет запросы на получение ссылок.
Отправка покупателю
Функционал рассылки передаёт ссылки на электронные версии. В ходе работ выполнена тестовая рассылка.
Что нужно было согласовать в коде
Условие попадания в очередь
Оплата заказа и отсутствие свойства-связки с электронной книгой определяли добавление записи. Корректность этой логики проверяли на тестовых заказах.
Данные для запроса
Для получения ссылки использовались идентификаторы товара и заказа, а также email покупателя, привязанный к заказу.
Проверка отложенных покупок
Агент обрабатывал активные записи HL-блока с периодичностью раз в четыре часа. В ходе отладки проверяли запуск и поля записей.
Проверяли всю цепочку на тестовых заказах
Разработали очередь
Создали HL-блок, формирование записей по оплаченным заказам и заполнение необходимых полей.
Подключили получение ссылок
Реализовали отправку запросов и доработали обновление свойств записей очереди.
Настроили периодический запуск
Проверяли работу агента, его активацию и деактивацию, логировали выполнение.
Проверили отправку
Создавали тестовые заказы, проверяли появление записей и выполнили тестовую рассылку.
Доработали проблемные сценарии
Анализировали логи и HL-блок, корректировали добавление записей и логику очереди. В дальнейшем добавили изменения для книг из определённых разделов.
Предзаказы получили отложенную обработку
Очередь после оплаты
Разработано сохранение покупок, для которых электронная версия ещё не связана с товаром.
Периодическое получение ссылок
Реализован агент, проверяющий активные записи и выполняющий запросы по товарам и заказам.
Проверенная тестовая рассылка
В задаче зафиксированы тестовая отправка, переносы кода, проверка заказов и последующие исправления.
Свяжем события заказа с последующими действиями
Если действие должно произойти позже оплаты, сначала определим событие запуска и условие готовности: выход цифрового товара, появление документа или подтверждение внешнего сервиса.
Затем спроектируем очередь, периодическую обработку и контроль ошибок. Для обсуждения пригодится пример заказа и описание того, что покупатель должен получить после него.