====== Размещение заказа и получение ключей и ссылок на товары ESD ====== ===== О заказе ===== Для размещения заказа в систему MONT необходимо использовать метод [[ru:apiv2:methods:addorder:summary_page|AddOrder]]. Этот метод позволяет размещать заказы на несколько товаров сразу. В качестве входных параметров нужно передавать номер заказа(который должен быть уникален относительно заказов пользователя в системе MONT), и список строк заказа. В каждой строке необходимо указать партномер заказываемой позиции, необходимое количество, и номер строки заказа(который должен быть уникален относительно всех строк заказа пользователя в системе MONT). Мы рекомендуем подходить к формированию номеров заказа следующим образом: Предположим, к вам в систему размещен заказ на 2 товара - "abc-11111" и "6qr-00006". Ваша система присвоила ему некоторый уникальный для вашей системы номер, например "KEYS-00004280". В таком случае, при размещении заказа в систему MONT номер заказа вы оставляете как у вас в системе("KEYS-00004280"), а для каждой строки формируете номер по принципу "KEYS-00004280-N", где N - порядковый номер строки заказа. ВАЖНО!\\ При проектировании своей системы реселлер должен учитывать, что ключи/ссылки/файлы, заказанные через ESD - невозвратные, и после размещения заказ отменить уже не получится. Поэтому мы рекомендуем размещать заказ в систему MONT только после того, как конечный пользователь совершит оплату. Необходимость следования этой рекомендации определяется бизнес-процессами самого реселлера. ВАЖНО!(только для CSP)\\ Если с помощью какой-то строки заказа осуществляется первоначальное оформление подписки, то в ней также необходимо передать идентификатор подписчика, на которого она оформляется ==== Сценарий работы ==== - Клиент выбирает незаблокированный ([[ru:apiv2:types:pricecontract | Blocked = false ]])товар из прайса и указывает необходимое количество лицензий/ключей - Клиент проверяет что сформированный заказ не превышает доступный остаток средств. - Если заказываемый товар требует заполнение лицензии ([[ru:apiv2:types:pricecontract | LicenseFormRequired = True]]), то клиент получает форму для заполнения данными о конечном пользователе методом [[ru:apiv2:methods:getuserinfodescriptionfor]]. Далее клиент заполняет все необходимые поля контракта [[ru:apiv2:types:enduserinfodescriptioncontract]]. - Далее клиент размещает заказ методом [[ru:apiv2:methods:addorder:summary_page]]. Для каждой строки заказа ([[ru:apiv2:types:sendorderlinecontract]]) необходимо заполнить номер строки заказа (уникальный), количество лицензий/ключей, партномер и заполненную лиц. форму (из предыдущего пункта, если сам товар требует ее заполнения). Крайне рекомендуется перед размещением заказа убедиться в том, что прайс лист не изменился и товар по прежнему доступен. - Результатом вызова метода AddOrder станет контракт ([[ru:apiv2:types:ordercontract]]), у которого есть поле OrderStatus. Если значение этого поля = 1, то заказ находится в обработке, если статус =2 то выполнение заказа завершено с ошибкой, если статус равен 3 - то заказ успешно выполнен. В случае когда успешно выполнена лишь часть заказа, поля Keys, Links, Files будут содержать ключи, ссылки, ссылки на файлы соответственно только для тех строк заказа ([[ru:apiv2:types:orderlinecontract]]), которые были полностью успешно выполнены. ===== Примечание ===== Стоит обратить внимание, что у вендора Microsoft есть товары, для которых поле FulfillmentType = 1. Для таких товаров вендор ограничил срок действия ссылки 24 часа. Если получателю требуется актуальная ссылка, то ее необходимо запрашивать с помощью того же метода GetOrder. В ответе метода будут содержаться актуальные на момент вызова ссылки.