Внимание! Документация была немного переработана. Ознакомиться с новой версией можно по ссылке
Данный API необходимо использовать при интеграции по двум направлениям:
Несмотря на достаточно большую смысловую разницу между этими двумя направлениями, частично они опираются на одни и те-же методы(например, метод GetPriceChanges), поэтому они объединены в один сервис. Но сценарии работы с ними различны, и каждый из них описан в разных разделах.
В Данном разделе описаны сценарии работы с сервисами MONT при интеграции по направлению ESD. В общем случае, их можно описать следующей схемой:
Первые три пункта относятся к построению витрины, и частично выполняются с помощью методов сервиса MONT Content. Подробно эти пункты расписаны в разделе «Построение витрины».
Рассмотрим ситуацию непосредственно оформления заказа пользователем, на примере стандартного интернет-магазина. Когда пользователь выбрал товары для покупки, и начинает оформлять заказ, необходимо сделать следующие действия:
Создание новой подписки всегда производится через создание заказа. При успешно созданном заказе будет создана и активирована новая подписка. Некоторые подписки (в зависимости от вендора) требуют заполнения лиц. формы. Одним из полей этой лиц. формы может стать согласие с дополнительными условиями поставки, использования и пр. (доп. соглашение)
Когда заказывается подписка на нового пользователя, необходимо сперва получить поля активационной формы для заполнения. Реселлер на своей стороне создает уникальный идентификатор подписчика и посылает запрос на создание подписчика с этим идентификатором со всеми заполненными полями. Если метод не вернул ошибку, следовательно, подписчик создан и активрован на стороне вендора.
Ниже представлен граф изменения статусов подписки. Из этого рисунка видно, что при остановке подписки из состояния активна или при запуске подписки из состояния остановлена, она не перейдет сразу в требуемое состояние. Ее статус изменится в определенный промежуточный статус. Система реселлера должна уметь периодически синхронизировать состояния изменившихся подписок. Для этого необходимо использовать методы GetSubscription и GetSubscriptionsId. Получив в первый раз все подписки (прислав запрос на получение подписок для 0 версии изменений), вместе с подписками следует сохранить пришедшую в ответе последнюю версию изменений. После этого периодически (например, раз в 10 минут) получайте изменившиеся подписки для вашей версии и перезаписывайте ее пришедшей последней версией изменений.
Для синхронизации цен в системе реселлера используйте метод GetPriceChanges
Перед созданием подписки необходимо получить, заполнить и передать правильно заполненную активационную форму с данными о подписчике. Информация о подписчике будет передана соответствующему вендору, и подписчик будет создан и активирован на стороне вендора. После этого можно размещать заказ, который будет содержать в себе подписку и активированного подписчика.
В случае когда производится покупка на существующего пользователя (есть идентификатор подписчика, и он уже что-то ранее заказывал) необходимо «понять» нужно ли активировать подписчика у вендора. Для этого сначала вызывается метод IsSubscriberActivated. Если метод вернул значение false вызывается метод получения активационной формы, а затем метод активации пользователя.
В API (аналогично синхронизации подписок) существуют 2 метода для синхронизации подписчиков. Если подписчики будут создаваться не только через API, но и через другие сторонние системы (например, через Edmont), может возникнуть необходимость в синхронизации списка подписчиков на стороне реселлера.
В данном разделе приведен список точек доступа к данному API.
Тест/Бой | Протокол | Адрес |
Тестовый | XML over HTTP | https://sandbox.mont.ru/version2/Service/B2BServiceV2Xml.svc |
Тестовый | SOAP | https://sandbox.mont.ru/version2/Service/B2BServiceV2.svc |
Боевой | XML over HTTP | https://webstore.mont.ru/version2/Service/B2BServiceV2Xml.svc |
Боевой | SOAP | https://webstore.mont.ru/version2/Service/B2BServiceV2.svc |
Вы можете скачать тестовый пример из гит-репозитория.