среда 18 марта, 2015 - Андрей Корзина
Корзина

Этот сервис предоставляет доступ к корзине пользователя. С его помощью пользователь в любое время может добавлять позиции в корзину, удалять позиции из корзины, получать список позиций корзины и осуществлять заказ.

WSDL схема: http://api.autogroup.pro/ClientApi/BasketService.svc/soap

URI сервиса:

SOAP - http://api.autogroup.pro/ClientApi/BasketService.svc/soap

Сервис включает в себя определение шести методов.

НазваниеНазначение
AddПозволяет добавить в корзину выбранные заказы.
GetItemsInBasketВозвращает все позиции, находящиеся в корзине пользователя.
ToOrderПозволяет заказывать выбранные позиции из корзины.
UpdateПозволяет редактировать позиции в корзине.
DeleteУдаляет указанные позиции из корзины.
ApproveChangesПозволяет пользователю подтвердить изменения.

Метод Add

Позволяет добавить в корзину выбранные позиции, для чего в метод необходимо передать идентификатор позиции, кол-во и комментарий.

Входные данные:

Имя параметраТипОбязательныйОписание
loginstringДаЛогин пользователя.
passwordstringДаПароль пользователя.
searchQueryIdGuidДаИдентификатор для заказа детали, который возвращается поисковым сервисом на втором этапе поиска.
countintДаКоличество деталей для заказа.
userCommentstringДаКомментарий пользователя.

Результат:

AddItemResult

Класс содержит результат добавления в корзину и идентификатор позиции в корзине.

Имя свойстваТипОписание
BasketIdGuid?Идентификатор позиции в корзине. Если добавить заказ в корзину не удалось, то значение равно null.
StateAddItemStateРезультат добавления в корзину.
RowVersionbyte[]Версия заказа в корзине. Необходима при заказе. Если добавить не удалось - пустой массив.
CommentstringКомментарий в случае ошибки.

AddItemResult

Результат добавления позиции в корзину.

ЗначениеОписание
ErrorПроизошла ошибка.
SuccessОперация успешно выполнена.
DepositModeOnНедостаточно средств на счету.
ItemNoLongerValidПредложение устарело. Повторите поиск.
IncorrectDataНеверные входные данные.

В этом примере показано, как вызвать метод Add.

using (var client = new BasketServiceClient())
{
    var searchQueryId = Guid.Parse("015efa1d-3e9e-45f2-8f0e-0eb14e6b33ad");
    var login = "login";
    var password = "password";
    var addToBasketResult = client.Add(login, password, searchQueryId, 1, "Комментарий пользователя.");

    if (addToBasketResult.State != AddItemState.Success)
    {
        Console.WriteLine("Ошибка при добавлении товаров в корзину");
    }
    else
    {
        Console.WriteLine("Товары добавлены в корзину");
    }
}

Метод GetItemsInBasket

Позволяет получить все позиции, находящиеся в корзине пользователя.

Входные данные:

Имя параметраТипОбязательныйОписание
loginstringДаЛогин пользователя.
passwordstringДаПароль пользователя.

Результат:

BasketItems

Класс содержит позиции в корзине и другую информацию.

Имя свойстваТипОписание
ItemsInBasketBasketItem[]Позиции в корзине.
UserCurrencyCodestringТрехбуквенная валюта клиента в формате ISO 4217.
CommentstringКомментарий в случае ошибки.

BasketItem

Позиция находящаяся в корзине.

Имя свойстваТипОписание
ArticleDetailstringАртикул детали.
BasketIdGuidИдентификатор позиции в корзине.
CountintКол-во деталей.
CountrystringСтрана производитель.
DeliveryDaysAverageint?Средний срок доставки (в днях).
DeliveryDaysGuranteedint?Гарантированный срок доставки (в днях).
DescriptionstringОригинальное описание
LotQuantityintКол-во деталей в партии.
Probabilitydecimal?Вероятность доставки.
CatalogNamestringКаталог.
UserCommentstringКомментарий пользователя.
PricedecimalЦена в базовой валюте.
RowVersionbyte[]Версия позиции в корзине. Необходима для заказа.

В этом примере показано, как вызвать метод GetItemsInBasket.

using (var client = new BasketServiceClient())
{
    var login = "login";
    var password = "password";
    var itemsInBasket = client.GetItemsInBasket(login, password);

    Console.WriteLine("Валюта: {0}", itemsInBasket.UserCurrencyCode);
    foreach (var basketItemStub in itemsInBasket.ItemsInBasket)
    {
        Console.WriteLine("Идентификатор позиции в корзине: {0}", basketItemStub.BasketId);
        Console.WriteLine("Артикул позиции в корзине: {0}", basketItemStub.ArticleDetail);
    }
}

Метод ToOrder

Позволяет заказывать выбранные позиции из корзины.

Входные данные:

Имя параметраТипОбязательныйОписание
loginstringДаЛогин пользователя.
passwordstringДаПароль пользователя.
itemsItemToOrder[]ДаСписок позиций для заказа.

ItemToOrder

Класс содержит идентификатор и версию позиции в корзине.

Имя свойстваТипОписание
BasketIdGuidИдентификатор позиции в корзине.
RowVersionbyte[]Версия позиции в корзине.

Результат:

ItemToOrderResult

Массив ItemToOrderResult[] возвращается при отправке позиции из корзины в заказ.

Имя свойстваТипОписание
BasketIdGuidИдентификатор позиции в корзине.
MotionDescriptionIdGuid?Идентификатор заказа (необходим для дальнейшей проверки движения заказа).
StateItemToOrderStateРезультат отправки из корзины в заказ.
LogicalIdentifierstringТекстовый номер заказа.
CommentstringКомментарий в случае ошибки при отправке из корзины в заказ.

ItemToOrderState

Результат отправки из корзины в заказ.

ЗначениеОписание
ErrorПроизошла ошибка.
SuccessОперация успешно выполнена.
IsVersionMismatchПозиция в корзине была изменена.
UnconfirmedItemПозиция устарела пока находилась в корзине. Найдены схожая позиция, которую надо подтвердить.
ExpiredLifeTimeВремя нахождения в корзине истекло.

В этом примере показано, как вызвать метод ToOrder.

using (var client = new BasketServiceClient())
{
    var login = "login";
    var password = "password";
    var itemsInBasket = client.GetItemsInBasket(login, password);

    // Заказываем первую позицию в корзине
    var itemToOrder = itemsInBasket.ItemsInBasket[0];
    var orderResult = client.ToOrder(
        login,
        password,
        new[] { new ItemToOrder { BasketId = itemToOrder.BasketId, RowVersion = itemToOrder.RowVersion } });

    var orderItem = orderResult.Single();

    Console.WriteLine("Идентификатор позиции в корзине: {0}", orderItem.BasketId);
    Console.WriteLine("Идентификатор заказа: {0}", orderItem.MotionDescriptionId);
    Console.WriteLine("Номер заказа: {0}", orderItem.LogicalIdentifier);
    Console.WriteLine("Результат отправки в заказ: {0}", orderItem.State);
}

Метод Update

Обновление позиции в корзине.

Входные данные:

Имя параметраТипОбязательныйОписание
loginstringДаЛогин пользователя.
passwordstringДаПароль пользователя.
itemsUpdateItemДаПозиция для обновления.

UpdateItem

Класс содержит идентификатор, версию позиции в корзине, кол-во и комментарий.

Имя свойстваТипОписание
BasketIdGuidИдентификатор позиции в корзине.
RowVersionbyte[]Версия позиции в корзине.
CountintКол-во деталей.
CommentstringКомментарий к позиции. Может быть null.

Результат:

UpdateItemResult

Результат обновления позиции в корзине.

Имя свойстваТипОписание
StateUpdateItemStateРезультат обновления корзины.
CommentstringКомментарий в случае ошибки.

UpdateItemState

Результат обновления корзины.

ЗначениеОписание
ErrorПроизошла ошибка.
SuccessОперация успешно выполнена.
IsVersionMismatchПозиция в корзине была изменена.
IncorrectDataНеверные входные данные.
ItemNotFoundПозиция не найдена.

В этом примере показано, как вызвать метод Update.

using (var client = new BasketServiceClient())
{
    var login = "login";
    var password = "password";
    byte[] rowVersion = { 0, 0, 1 }; // версия позиции в корзине
    Guid basketId = Guid.NewGuid(); // идентификатор позиции в корзине
    var newCount = 10; // новое кол-во деталей для заказа
    var newComment = "Новый комментарий к заказу";

    var updateBasket = client.Update(login, password, new UpdateItem
    {
        BasketId = basketId,
        Count = newCount,
        UserComment = newComment,
        RowVersion = rowVersion
    });

    Console.WriteLine("Идентификатор позиции в корзине: {0}", updateBasket.BasketId);
    Console.WriteLine("Результат обновления: {0}", updateBasket.State);
}

Метод Delete

Удаление позиций из корзины.

Входные данные:

Имя параметраТипОбязательныйОписание
loginstringДаЛогин пользователя.
passwordstringДаПароль пользователя.
itemsDeleteItemДаПозиция для обновления.

DelereItem

Класс содержит идентификатор и версию позиции в корзине.

Имя свойстваТипОписание
BasketIdGuidИдентификатор позиции в корзине.
RowVersionbyte[]Версия позиции в корзине.

Результат:

DeleteItemResult

Результат удаления позиций из корзины.

Имя свойстваТипОписание
StateDeleteItemStateРезультат удаления из корзины.
CommentstringКомментарий в случае ошибки.
BasketIdGuidИдентификатор позиции в корзине.

UpdateItemState

Результат удаления из корзины.

ЗначениеОписание
ErrorПроизошла ошибка.
SuccessОперация успешно выполнена.
IsVersionMismatchПозиция в корзине была изменена.
GroupFailОшибка при массовом изменении позиций.
IncorrectDataНеверные входные данные.
ItemNotFoundПозиция не найдена.

В этом примере показано, как вызвать метод Delete.

using (var client = new BasketServiceClient())
{
    byte[] rowVersion = { 0, 0, 1 }; // версия позиции в корзине
    Guid basketId = Guid.NewGuid(); // идентификатор позиции в корзине
    var items = new[] { new DeleteItem { BasketId = basketId, RowVersion = rowVersion } };
    var login = "login";
    var login = "password";
    var deleteFromBasket = client.Delete(login, password, items);

    foreach (var basketOperationResultStub in deleteFromBasket)
    {
        Console.WriteLine("Идентификатор позиции в корзине: {0}", basketOperationResultStub.BasketId);
        Console.WriteLine("Результат удаления: {0}", basketOperationResultStub.State);
    }
}

Метод ApproveChanges

Подтверждение пользователем изменений, проведенных системой над позицией в корзине.

Входные данные:

Имя параметраТипОбязательныйОписание
loginstringДаЛогин пользователя.
passwordstringДаПароль пользователя.
basketIdGuidДаУникальный идентификатор позиции в корзине.
rowVersionbyte[]ДаВерсия позиции в корзине.

Результат:

ApproveChangeResult

Результат подтверждения изменений в корзине.

Имя свойстваТипОписание
StateApproveChangeStateРезультат подтверждения позиции в корзине.
CommentstringКомментарий в случае ошибки.

ApproveChangeState

Результат подтверждения позиции в корзине.

ЗначениеОписание
ErrorПроизошла ошибка.
SuccessОперация успешно выполнена.
IsVersionMismatchПозиция в корзине была изменена.
IncorrectDataНеверные входные данные.
ItemNotFoundПозиция не найдена.

В этом примере показано, как вызвать метод ApproveChanges.

using (var client = new BasketServiceClient())
{
    var login = "login";
    var password = "password";
    var basketId = Guid.NewGuid();
    var rowVersion = new[] { 0, 0, 1 };
    var info = client.ApproveChanges(login, password, basketId, rowVersion);

    if (info.State != ApproveChangeState.Success)
    {
        Console.WriteLine("Не удалось подтвердить позицию");
    }
    else
    {
        Console.WriteLine("Позиция успешно подтверждена");
    }
}