Сервис поиска по коду Система поиска по коду включает в себя две функции: Code_Search и Code_Info. Их назначение- поиск по коду (например, код «12345») – функция выдает список кодов (в общем случае разных производителей, иногда очень длинный!) и показ более подробной информации по одному выбранному коду. Внимание!!! Количество запросов к функциям в сутки от одного клиента ограничено. По умолчанию не более 2000 запросов. Проектируйте ваши приложения таким образом, чтобы исключить излишние запросы, которые могут перегружать наш сервер. Например, для интернет-магазина этого, как правило, бывает вполне достаточно. Блокируйте индексирование поисковыми роботами тех страниц вашего сайта, на которых есть ссылки с запросами к web-сервису. Например, если у вас есть страницы со списком кодов или каталогом, каждая строка которых является ссылкой на страницу с информацией о коде, поисковый робот обойдет все странички и сгенерирует несколько тысяч запросов к нашему сервису, что приведет к блокировке вашего эккаунта. Для предотвращения индексирования используйте тэг <noindex> или файл robots.txt. Если же в вашем интернет-магазине реально большое число посетителей делающих реальные запросы, лимит запросов может быть увеличен администратором. Функция Code_Search Выдача функции Code_Search отсортирована в порядке отображения. Единственное что требуется при отображении – произвести группировку. Сначала надо сгруппировать коды по бренду (поле <SourceProducer>), затем по полю <CodeType> - Aftermarket и OEM – соответственно неоригинальный и оригинальный коды (в общем случае их может быть несколько, смотри пример ниже- по BREMI найдено 2 кода, соответствующие 2 вариантам поставки- со склада МИКАДО и со склада ATOY в финляндии), а Analog и AnalogOEM – соответственно неоригинальный и оригинальный аналоги. Аналоги рекомендуем обязательно визуально отделять от прямых кодов. При выводе на экран вы можете выводить все одним списком. При этом количество аналогов может быть очень большим, поэтому стоит сделать список аналогов раскрывающимся по запросу. Вот как это выглядит в интернет-портале Микадо: Второй вариант- сделать поиск двухуровневым. Первый уровень- показать только бренды: Второй уровень– показать цены и аналоги только по одному бренду. Такой вариант понятнее для непрофессионалов, но требует дополнительного перехода по ссылке. Не совсем очевидно без комментариев назначение отдельных полей результата работы функции. Рассмотрим их более подробно. Поле <OnStock> – количество деталей в наличии на складе МИКАДО (если <OnStock>=4+ , на складе в наличии БОЛЕЕ 4 штук). Если <OnStock>=0- значит позиция на заказ, тогда поставка ожидается через количество рабочих дней, указанное в поле <Srock>. Если <Srock> =? , срок поставки не определен (возможна поставка по спецзаказу от поставщика), для посетителей интернет-магазина такие позиции лучше не показывать. Поле <Price>– цена закупки в у.е. (евро)- поле оставлено для совместимости со старыми версиями сервиса. Поле < PriceRUR >– цена закупки в рублях. Цены показываются с учетом скидок для вашего клиентского номера. Для оригинальных запчастей (<CodeType> =OEM или AnalogOEM) в полях <Price>,<PriceRUR> показывается минимальная цена (поскольку, почти всегда, существует несколько вариантов поставки с разными ценами, сроками и вероятностью выполнения заказа). <Srock> всегда =?. Для таких кодов требуется делать ссылку на отдельную страничку, на которой уже показывать результат вызова функции Code_Info с параметром <ZakazCode>, взятым из результата функции Code_Search. Ее описание смотри ниже. Функция Code_Info Для неоригинальных запчастей практически вся информация дублирует информацию, полученную из функции Code_Search. Может быть добавлено только примечание по детали. Для оригинальных запчастей (<CodeType> =OEM или AnalogOEM) функция выдает список вариантов поставки, отличающихся ценой <PriceRUR>, наличием на складе <OnStock>, ожидаемым и максимальным сроками поставки <Srock> и <SrockMax> , вероятностью выполнения заказа <Rating> (в процентах). Соответственно, если вашего клиента интересует данная деталь, вы должны показать ему все возможные варианты заказа, чтобы он выбрал наиболее подходящий для него, поскольку, как правило, варианты с меньшим сроком поставки стоят дороже. Идентификатором варианта поставки является поле , значение которого используется в параметре функций добавления в корзину заказа сервиса Basket.asmx. Сервис работы с корзиной заказа Включает функции добавления позиции в корзину заказа, Basket_Add, Basket_AddExpress (вторая отличается тем, что в нее добавлен параметр ExpressIDномер экспресса для заказа деталей со склада МИКАДО с доставкой в то-же день, Номера экспрессов смотри по ссылке http://www.mikado-parts.ru/office/ExpSched.asp ), удаления ошибочно введенных в корзину позиций, просмотра корзины заказа, и истории заказа (проверка состояния заказной позиции). Параметры Basket_Add/Basket_AddExpress: ZakazCode – заказной код детали в кодировке МИКАДО (с префиксом, например XBM123/45) QTY - количество заказываемых деталей >0 и <1000 DeliveryType - для оригинальных запчастей (код детали начинается с "G") код варианта поставки. По оригиналу у одной запчасти, как правило, много вариантов с разными сроками/ценами. Список вариантов выдает функция CodeInfo сервиса service.asmx . Значение <DeliveryType> берется из нее и определяет выбранный вариант поставки. Для неоригинальных запчастей DeliveryType игнорируется, лучше посылать 0. Notes – ваши примечания. У нас никак не обрабатываются, но сохраняются с каждой строкой заказа. При интеграции с вашей системой обработки заказов имеет смысл писать туда ID вашей записи в базе заказов. ExpressID – читай пред.абзац. Результат: <Message>=”OK” или сообщение об ошибке уникальный номер записи в корзине. В дальнейшем может быть использован для удаления ошибочно введенной записи () или для просмотра истории ее обработки (). <ID> Пример вызова: Basket_Add Тест Чтобы протестировать операцию с использованием HTTP-протокола POST, нажмите кнопку "Запуск". Параметр Значение ZakazCode: xbm-123/45 QTY: 1 DeliveryType: 0 Notes: Test ClientID: 420 Password: ******** ?????? <?xml version="1.0" encoding="utf-8" ?> - <AddResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.mikado-parts.ru/WS/Service"> <Message>OK</Message> <ID>25232804</ID> </AddResult> Посмотрим, что в корзине: Basket_List Тест Чтобы протестировать операцию с использованием HTTP-протокола POST, нажмите кнопку "Запуск". Параметр Значение ClientID: 420 Password: ******* ?????? <?xml version="1.0" encoding="utf-8" ?> - <Basket xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.mikado-parts.ru/WS/Service"> - <List> - <BasketItem> <ID>25232804</ID> <ZakazCode>xbm-123/45</ZakazCode> <Name>Провод в/в bmw 45cm IGNITION LEAD</Name> <QTY>1</QTY> <Price>7.13</Price> <Status>Stock</Status> <Srok>07.09.2012</Srok> <Notes>Test</Notes> </BasketItem> </List> </Basket> Удалим запись из корзины: Basket_Delete Тест Чтобы протестировать операцию с использованием HTTP-протокола POST, нажмите кнопку "Запуск". Параметр Значение ItemID: 25232804 ClientID: 420 Password: ****** ?????? <?xml version="1.0" encoding="utf-8" ?> <string xmlns="http://www.mikado-parts.ru/WS/Service">OK</string> Посмотрим историю: Zakaz_History Тест Чтобы протестировать операцию с использованием HTTP-протокола POST, нажмите кнопку "Запуск". Параметр Значение nOrderID: 25232804 ?????? <?xml version="1.0" encoding="utf-8" ?> - <ZakazHistory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.mikado-parts.ru/WS/Service"> <BaskeID>25232804</BaskeID> <ZakazCode>xbm-123/45</ZakazCode> <ZakazQty>1</ZakazQty> <ZakazStatus>Deleted</ZakazStatus> <ZakazDateTime>06 Sep 2012 18:05:17</ZakazDateTime> <ZakazRows /> </ZakazHistory>