Внедрение накопительной карты в 1С-Битрикс
- Покупатель должен иметь функционал по привязке своей «физической» карты в личном кабинете интернет-магазина
- Покупатель должен иметь возможность выпуска новой виртуальной карты из личного кабинете в интернет-магазине
- В зависимости от суммы накопленной по этой карте - должна присваиваться соответствующая скидка на товары
- При оформлении заказа, номер накопительной карты должен передаваться в 1С вместе с заказом, чтобы дисконт-сервер учел накопления по карте
- И некоторые логические требования, вроде возможности отвязать карту, невозможности привязки одной карты к нескольким аккаунтам покупателей, не перегружать сервер 1С лишними запросами, отказоустойчивость интеграции и т.п.
Решение задачи по интеграции
Само собою, мы тут не благотворительностью занимаемся и никакого готового модуля для решения не будет. Да и у таких задач нет готовых решений, всё индивидуально разрабатывается под задачи клиента. Но всё-же мы расскажем как решить эту задачу и любой программист под Битрикс сможет это реализовать.
Задачу по внедрению разбили на несколько несложных подзадач.
1) С программистом 1С решили как мы будем обмениваться данными с 1С, какие запросы отправлять для привязки накопительной карты, выпуска новой карты, получения информации по сумме накопления по карте, принятие мер по безопасности (авторизация при отправке запроса). В результате программист 1С поднял вебсервер, сообщил адрес куда отправлять запросы, выдал доступы для авторизации и реализовал несколько методов для обмена данными. Получилось некое упрощенное REST API для получения данных по картам, с помощью которого мы будем взаимодействовать с 1С.
2) Делаем привязку накопительных карт на стороне интернет-магазина. Для хранения привязанной карты создаем 4 пользовательских поля с привязкой к пользователю сайта: Id карты (внутри системы дисконт-сервера 1С), штрих-код карты (чтобы в будущем отобразить на сайте), сумма покупок по карте (чтобы потом на основе неё давать скидку), время обновления суммы (чтобы не перегружать сервер 1С запросами).
После, на стороне сайта с помощью конструктора форм Битрикса разрабатываем интерфейс по привязке карты, чтобы передать их в 1С (в нашем случае заказчик просит передавать много избыточных данных, но тем самым он решает попутно другие свои задачи).
Когда пользователь отправляет данные формы (нам главное штрих-код), вешаемся на событие сохранения результатов и передаем их в 1С (с помощью curl, по стандарту согласованному с 1С-программистом вначале). В ответ от 1С приходит либо, ID карты, либо текст с ошибкой (например, нет такой карты). Эти данные мы сохраняем в созданные дополнительные поля. Всё, карта привязана.
3) Выпуск новой виртуальной карты. Как и в предыдущем пункте, создаем форму для выпуска карты и аналогичным образом отправляем данные в 1С. В ответ приходят данные новой созданной карты, либо ошибка. А мы результат сохраняем в доп. поля созданные в предыдущем шаге.
4) Применение скидки в зависимости от накопления по карте. Для скидок используем стандартный функционал 1С-Битрикс. Создаем несколько групп пользователей и создаем несколько правил корзины для применения скидок в зависимости от группы пользователя.
Остается только проверить сумму накоплений пользователя и добавить его в соответствующую группу. Мы решили, что оптимально будет это делать раз в полчаса и только для активного пользователя (который сейчас зашел на сайт). Именно для этого мы создавали доп. поля для хранения суммы и даты её обновления (чтобы помнить какое было последнее значение и когда мы его запрашивали у 1С). Тут разные варианты реализации, мы выбрали самый простой, делать это на хите пользователя (стараемся не допустить глупых ошибок, помним, что 1С - это другой сервер и он может не ответить и тогда ваш хит повиснет в ожидании).
5) Передача номера накопительной карты в 1С при оформлении заказа. Чтобы 1С понимала к какой карте привязать покупку. Это было самое простое, учитывая, что интеграция заказов с 1С уже давно работает через штатный функционал. Создали свойство заказа с номером карты и при создании заказа заполняем его из профиля покупателя (вешаемся на событие создания заказа). А далее передаем это свойство вместе с заказом стандартными средствами 1С Битрикс.
Всё, внедрение накопительной карты закончено. Надеемся, что программист по 1С-Битрикс прочитав эту статью для себя скажет, что оказывается всё просто, можно было и не гуглить.