Открыть меню

Заказы в корзину сайта или передача заказов на ваш сервер

Отправку заказов из конструктора в корзину вашего сайта, или передачу заказов на ваш сервер (или хостинг) нужно программировать вашими силами у вас на сайте. Готовых модулей нет. Есть два подхода навыбор (их можно использовать оба одновременно для разных целей):

На основе серверного обработчика

Заказы после обработки сервером конструктора могут отправляться на ваш сервер или хостинг. Это можно использовать для более длительного хранения заказов, для повышения надёжности хранения заказов, как страховку от потери заказов, или для каких-то манипуляций, например для доступа к заказам из админки вашего сайта, или для отправки заказов в корзину вашего сайта.

Чтобы этим пользоваться, вы должны написать обработчик (просто серверный скрипт например на PHP), который будет принимать данные заказа и делать с ними то, что вам нужно. После этого сохраните файл вашего обработчика на ваш сервер или хостинг, и в кабинете в разделе "Отправка заказов" в поле "Отправка заказов на ваш сервер" впишите URL-адрес вашего обработчика.

Сервер конструктора после каждого заказа будет отправлять по данному URL-адресу все данные заказа методом POST: json-данные заказа (его id, дату заказа, поля заполненные клиентом и прочее), архив с ресурсами заказа (исходные изображения, PDF, шрифты), и превью в формате jpg.

Ваш обработчик обязательно должен вернуть строку 'success' в теле ответа (без кавычек, отступов и других лишних символов). Если сервер конструктора не получит данную строку, он будет думать, что передача заказа не удалась.

URL-адрес вашего обработчика должен начинаться с https (использовать защищенное соединение). Иначе персональные данные ваших клиентов могут быть перехвачены злоумышленниками. Используя http (не защищённое соединение) вы раскрываете персональные данные ваших клиентов.

Тестировать работу вашего обработчика можно заказами из конструктора. Видеть, какие данные отправляет сервер конструктора, можно логированием всех POST-данных пришедшего запроса. Например в PHP можно отобразить всё содержимое переменных $_POST и $_FILES, а в Node.js можно сделать трейс объекта req или req.body. Файлы могут приходить как им свойственно в вашем языке.

Скачать пример обработчика на PHP можно по этой ссылке.

Учитывайте, что пришедшие данные заказа (zip-архив и превью) могут весить десятки мегабайт (может упираться в лимиты оперативки на процесс, или приводить к быстрому заполению папки или базы).

Если у вашего обработчика или сервера будут какие-то проблемы, или соединение с вашим сервером не получится установить, то сервер конструктора НЕ будет добиваться успешного исхода или как-то вас предупреждать. Поэтому надёжность данного метода не абсолютна. При этом заказ можно будет смотреть из кабинета конструктора, где заказ сохраняется в любом случае ещё до отправки на ваш сервер.

Плюсы данного способа:

  • Не требует, чтобы конструктор был на странице вашего сайта. В частности конструктор может быть ВКонтакте или сразу на многих сайтах, а обработчик будет на вашем сервере или хостинге, один для всех ваших конструкторов;
  • Больше надёжности, потому что исключается JavaScript и его возможные ошибки, проблемы браузера и его плагинов;
  • Данным способом передаётся больше данных, включая zip-архив заказа, информацию введённую клиентом и скриншоты заказа;
  • Архив заказа в полном объёме приходит в самом запросе, самостоятельно запрашивать его по ссылке не нужно.

На основе события отправки заказа (JavaScript)

Это событие описано в разделе Обработка событий, и возможно только если конструктор размещён на странице вашего сайта.

Процесс выглядит так:
1. При отправке заказа конструктор отдаёт все данные этого заказа странице вашего сайта через JavaScript (описано в Обработка событий);
2. Вы на сайте программируете обработку этих данных - формирование заказа в корзине на их основе, или что-то другое, например переход на страницу оплаты без корзины.

Плюсы данного способа:

  • Использует JavaScript, что даёт возможность управлять страницей без перезагрузки, пользоваться какими-либо JavaScript API (например API корзины если есть), или перенаправлять клиента на другую страницу.

Минусы данного способа:

  • Это событие отправки заказа НЕ означает готовность заказа, а только его отправку на сервер конструктора для обработки. В этот момент ещё не готово серверное превью (скриншот заказа), и не собран zip-архив заказа. Поэтому если нужен архив или серверное превью (скриншот), то следует сделать ожидание в течение 10-30 секунд, и только потом их запрашивать. Несоблюдение ожидания (запрос архива или серверного превью сразу в момент этого события) будет приводить к битым архивам заказов, к пустым превью или даже к ошибкам самого заказа. Подробнее об этапах заказа описано ниже на этой странице.
  • Если на странице вашего сайта возникнет ошибка JavaScript, то событие может не обработаться. То есть нужно следить, чтобы JavaScript на вашем сайте был без ошибок, что иногда сложно из-за обилия сторонних плагинов или плохого кода страницы;
  • В браузере могут быть сторонние плагины, из-за помех или ошибок которых событие может не обработаться;
  • Может получиться длинная цепочка обработки: конструктор --> JavaScript --> серверный язык, если данные заказа нужно передать не только в JavaScript. Это снижает надёжность.

Этапы заказа

В данном блоке описаны этапы, которые проходит заказ в конструкторе, чтобы вы могли верно написать приём или обработку заказов на своей стороне.
  1. Клиент нажимает на кнопку "заказать" в левом меню конструктора;
  2. Создаётся браузерное превью (скриншот) заказа, и отправляется на сервер конструктора. Получить такое превью можно по ссылке вида:
    https://cosuv.ru/order/thumb/get/40/V0D903iQRFkNjUC/1
    где вместо 40 должен быть номер вашего кабинета (номер аккаунта),
    вместо V0D903iQRFkNjUC должна быть подпись заказа (случайный набор символов, который хранится в параметре sign в данных заказа),
    а единица в конце для указания, что нам нужно именно браузерное превью (созданное в браузере), без неё будет серверное (о нём ниже).
  3. Если в кабинете заданы поля для заполнения клиентами, то появляется форма заказа с кнопкой "заказать", в противном случае заказ отправляется сразу без появления и заполнения формы.
  4. Данные заказа отправляются на сервер конструктора (но ещё не обработаны).
  5. Через JavaScript посылается уведомление о заказе той странице, на которой расположен конструктор. Оно означает факт отправки заказа, но не его полную готовность. Подробнее описано в блоке "На основе события отправки заказа" выше на этой странице.
  6. Клиент в конструкторе получает уведомление, что его заказ успешно принят. Здесь клиент может уже закрыть страницу с конструктором или перейти на другую страницу, а заказ продолжает обрабатываться далее.
  7. На сервере конструктора обрабатываются данные заказа. Введённые в поля формы заказа, выбранные в меню, данные созданной композиции и так далее.
  8. На сервере конструктора собирается архив заказа. При сборке архива на сервере запускается множество программ - векторные редакторы, обработчики графики и шрифтов, и потом архиватор. Поэтому данный этап может иногда длиться до десятков секунд в зависимости от сложности композиции или продукта. Архив заказа можно получить по ссылке вида:
    https://cosuv.ru/order/download/V0D903iQRFkNjUC
    где вместо V0D903iQRFkNjUC должна быть подпись заказа (случайный набор символов, который хранится в параметре sign в данных заказа). Это не конечная ссылка на архив, по этой ссылке произойдёт редирект на архив. Если редирект не желателен, то можно получать JSON с конечной ссылкой на архив в нём, если обратиться по ссылке вида:
    https://cosuv.ru/order/download/V0D903iQRFkNjUC/json
    Архивы заказа создаются один раз при обработке заказа и впоследствии отдаются при запросе по ссылке. Поэтому если вмешаться в процесс сборки архива, например запросив его сразу в момент заказа на ранних этапах, то архив будет битым или неполноценным, и останется таким навсегда. Пересобрать его заново можно будет только вручную из кабинета, нажав на кнопку скачивания заказа с сажатым Ctrl.
  9. В процессе архивации среди прочего создаётся серверное превью (скриншот заказа). По виду оно может немного отличаться от браузерного, и обычно более правильное. Это превью отображается в кабинете в списке заказов, приходит в почтовых уведомлениях, и содержится в zip-архиве заказа. Два разных превью нужно для надёжности и решения проблем в случае их отличий, поскольку ни одно из этих превью не достоверное (из-за отсутствия возможности сделать полноценной скриншот в браузерах). Получить данное превью можно по ссылке вида:
    https://cosuv.ru/order/thumb/get/40/V0D903iQRFkNjUC
    где вместо 40 должен быть номер вашего кабинета (номер аккаунта), а вместо V0D903iQRFkNjUC должна быть подпись заказа (случайный набор символов, который хранится в параметре sign в данных заказа).
  10. Данные заказа и zip-архив передаются на ваш хостинг или сервер, если в кабинете вы прописали ссылку на обработчик. Подробнее описано в блоке "На основе серверного обработчика" на этой странице.
  11. Рассылаются почтовые уведомления об успешном заказе вам и вашему клиенту, если клиент указал свою почту в форме заказа. В уведомлениях типа "ваш скрипт" (см. объяснение в кабинете в разделе "Отправка заказов") возможна отправка данных заказа на ваш хостинг или сервер для уведомления ваших клиентов от вашего почтового адреса. Этот способ служит именно для уведомлений, не стоит его использовать для получения данных заказа из-за меньшего количества данных, особой их обработки, и менее удобного формата.
Если ваш сайт на CMS и вы хотите добавлять заказ в корзину, то вам потребуется добавлять в корзину продукт, нигде ранее не описанный. С этим могут быть трудности, поскольку модуль корзины может работать только на известных продуктах, добавленных в админке вашего сайта. Соответственно может потребоваться программист, способный написать новые функции к вашей CMS.
Получить конструктор
30 дней бесплатный
тестовый период