Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

 

Раскрыть
titleCustomer did not choose anything
<Request />
equal to
<Request>
    <Current />
</Request>
equal to
<Request>
    <Current Quantity="1" />
</Request>
Раскрыть
titleRequest with quantity in a product without options at all or without selected options
<Request>
    <Current Quantity="5" />
</Request>
Request to current options:
<Request>
    <Current ConfigurationId="idconfiguration" />
</Request>
or
<Request>
    <Current ConfigurationId="idconfiguration" Quantity="5" />
</Request>
or
<Request>
    <Current>
        <Property Id="idcolor" ValueId="idRed"
    </Current>
</Request>
or
<Request>
    <Current>
        <Property Id="idcolor" ValueId="idRed"
        <Property Id="idSize" ValueId="idMiddle"
    </Current>
</Request>
or
<Request>
    <Current Quantity="5">
        <Property Id="colorid" ValueId="idRed"
        <Property Id="idSize" ValueId="idMiddle"
        <Property Id="idModel" ValueId="idSomeModel"
    </Current>
</Request>
Раскрыть
titleRequest with selected other configurations
<Request>
    <Selected ConfigurationId="idConfiguration" Quantity="1" />
    <Selected ConfigurationId="idConfiguration" Quantity="2" />
    ...
</Request>
or
<Request>
    <Selected Quantity="1">
        <Property Id="idColor" ValueId="idRed"
        <Property Id="idSize" ValueId="idMiddle"
    </Selected>
    <Selected Quantity="2">
        <Property Id="idColor" ValueId="idGreen"
        <Property Id="idSize" ValueId="idMiddle"
    </Selected>
    ...
</Request>

A query with everything together can be any combination of other types of queries, for example:
<Request>
    <Current Quantity="5">
        <Property Id="idColor" ValueId="idRed"
    </Current>
    <Selected Quantity="2">
        <Property Id="idColor" ValueId="idGreen"
        <Property Id="idSize" ValueId="idMiddle"
    </Selected>
</Request>


What's Current/Selected - and what's correct? Current or Selected?

If you need only 1 simultaneously selected config, then you can not think about Selected at all.
If you need several (as in 1688), then in Selected send everything where the quantity is entered.

 

Favourite goods

Get list of itemshttp://docs.otapi.net/en/Documentations/Method?name=BatchGetUserData , blockList=Note.

Add item to favorites: http://docs.otapi.net/en/Documentations/Method?name=AddItemToNote , fieldParameters=<Fields/>

Remove item from favorites: http://docs.otapi.net/en/Documentations/Method?name=RemoveItemFromNote , confirmation to delete is required before removing.

Move item into cart: http://docs.otapi.net/en/Documentations/Method?name=MoveItemFromNoteToBasket

Change item quantity in favorites: http://docs.otapi.net/en/Documentations/Method?name=EditNoteItemQuantity

Change commenthttp://docs.otapi.net/en/Documentations/Method?name=EditNoteItemFields , <Fields><FieldInfo Name="Comment" Value="Text for comment"/></Fields>

Change item configuration:
1. you can get available configurations by the following methods http://docs.otapi.net/en/Documentations/Method?name=BatchGetSimplifiedItemFullInfo and http://docs.otapi.net/en/Documentations/Method?name=BatchGetSimplifiedItemConfigurationInfo - similar to item card.
2. new configuration is saved by adding a new one and deleting the old one, i.e. consecutive calls http://docs.otapi.net/en/Documentations/Method?name=AddItemToNote (it is important to pass all fieldParameters from the old record into the method, otherwise you may lose some of information, for example, user’s comment on a product) and http://docs.otapi.net/en/Documentations/Method?name=RemoveItemFromNote 

Favorite sellers

Vendors list: http://docs.otapi.net/en/Documentations/Method?name=BatchGetUserData , blockList=FavoriteVendors

Add vendor to favorites: http://docs.otapi.net/en/Documentations/Method?name=AddVendorToFavorites , fieldParameters=<Fields/>

Remove vendor from favorites: http://docs.otapi.net/en/Documentations/Method?name=RemoveVendorFromFavorites , confirmation to delete is required before removing.

Cart

Get list of items: http://docs.otapi.net/en/Documentations/Method?name=BatchGetUserData , blockList=Basket.

The list of goods should be divided by providers, as you can order goods of only one provider in one order. User should be notified about minimum order amount (if it is set in configuration), you can get it using http://docs.otapi.net/en/Documentations/Method?name=GetCommonInstanceOptionsInfo method (Result->Order->MinOrderCost)

Remove item from cart: http://docs.otapi.net/en/Documentations/Method?name=RemoveItemFromBasket , confirmation to delete is required before removing.

Empty cart http://docs.otapi.net/en/Documentations/Method?name=ClearBasket , confirmation to delete is required before removing.

Move selected item from cart to favorites: http://docs.otapi.net/en/Documentations/Method?name=MoveItemFromCartToNote several calls are made to transfer several marked products MoveItemFromCartToNote

Change quantity of items in the cart: http://docs.otapi.net/en/Documentations/Method?name=EditBasketItemQuantity

Add/edit comment to item: http://docs.otapi.net/en/Documentations/Method?name=EditBasketItemFields <Fields><FieldInfo Name="Comment" Value="Comment text"/></Fields>

Edit item weight: http://docs.otapi.net/en/Documentations/Method?name=EditBasketItemFields <Fields><FieldInfo Name="Weight" Value="New weight of an item"/></Fields>

Edit item configuration:
1. you can get available configurations by http://docs.otapi.net/en/Documentations/Method?name=BatchGetSimplifiedItemFullInfo and http://docs.otapi.net/en/Documentations/Method?name=BatchGetSimplifiedItemConfigurationInfo methods - similar to item card.
2. new configuration is saved by adding a new one and deleting the old one, i.e. consecutive calls http://docs.otapi.net/en/Documentations/Method?name=AddItemToBasket (it is important to pass all fieldParameters from the old record into the method, otherwise you may lose some of information, for example, user’s comment on a product) and http://docs.otapi.net/en/Documentations/Method?name=RemoveItemFromBasket 

Profile

Get basic information about user (name, email, etc.): http://docs.otapi.net/en/Documentations/Method?name=GetUserInfo , you can edit this information with http://docs.otapi.net/en/Documentations/Method?name=UpdateUser method.

Delivery address. Delivery address is created and edited separately from basic information about the user. N delivery addresses are possible in total where N is taken from the setting http://docs.otapi.net/en/Documentations/Method?name=GetCommonInstanceOptionsInfo UserProfile->MaxProfilesCount. Methods for working with delivery address:

Interface is required for user that allows to select default profile https://www.screencast.com/t/1fZ9HuauBjf . Selected profile must be saved in user preferences: http://docs.otapi.net/en/Documentations/Method?name=UpdateUserPreferences , ProfileId field.

Get a list of content pages for profile screen: http://docs.otapi.net/en/Documentations/Method?name=GetContentMenuItemTree , parameters:

applicationType=MobileApplication
menuList=Profile
includeContent=true

Get list of countries for delivery: http://docs.otapi.net/en/Documentations/Method?name=GetDeliveryCountryInfoList .

Get list of cities: http://docs.otapi.net/en/Documentations/Method?name=SearchCities  (while user enters characters to search for the city, i.e. QueryText parameter is empty, you need to send IsMainCity = true to get a list of default cities). When user selects city from the list, save it in the City profile and CityCode profile and automatically fill in the Region field.

Important: CountryCode - obligatory field for placing an order, CityCode - optional field, system must transfer the code to the services if user selected a city from the list. Save only City node if user entered city that is not in SearchCities list.

Orders list

http://docs.otapi.net/en/Documentations/Method?name=SearchOrdersForUser

Active: <OrderSearchParametersForUser><IsCancelled>false</IsCancelled><IsCompleted>false</IsCompleted></OrderSearchParametersForUser>

Cancelled: <OrderSearchParametersForUser><IsCancelled>true</IsCancelled></OrderSearchParametersForUser>

Completed: <OrderSearchParametersForUser><IsCompleted>true</IsCompleted></OrderSearchParametersForUser>

The list of fields to display:

  • Order ID passed in API into all possible methods: Id
  • Order number displayed to buyer: DisplayId
  • Order date: CreatedDateTime
  • Statusс: StatusName
  • Sum: TotalAmount
  • Already paid: TotalAmount minus RemainAmount
  • For payment: RemainAmount
  • Goods price: GoodsAmount
  • Items positions: do not show this field if there is no such information

Order. Detailed information

Get order information: http://docs.otapi.net/en/Documentations/Method?name=GetSalesOrderDetails

Display order information for user (OrderInfo node, details here http://docs.otapi.net/en/Documentations/Type?name=OtapiOrderInfo), properties:

Display goods list in the order (SalesLinesList node, details about each line is here http://docs.otapi.net/en/Documentations/Type?name=SalesLine)

Shippings list - http://docs.otapi.net/en/Documentations/Method?name=GetSalesOrderShippings

Order. Placing an order and choosing delivery method

You can place goods of only one provider into one order.

When placing an order, you will need a form for choosing delivery address or, if an address was previously created, a form for creating delivery address / s (delivery profile documentation anchor).

When placing an order, you will need to select a delivery method from provided list: http://docs.otapi.net/en/Documentations/Method?name=SearchDeliveryModes request, xmlSearchParameters parameters:

  • ProviderType - provider ID;
  • Weight - goods weight, you will need to get a list of goods by http://docs.otapi.net/en/Documentations/Method?name=GetPartialBasket method in case of making order from the cart, get the sum of each item weight (for each product you need to multiply item weight by ordered quantity);
  • получить сумму веса каждой позиции (для каждого товара нужно умножить вес товара на заказываемое количество);
  • в случае оформления из корзины, потребуется получить список товаров методом http://docs.otapi.net/ru/Documentations/Method?name=GetPartialBasket , получить сумму веса каждой позиции (для каждого товара нужно умножить вес товара на заказываемое количество);
  • CountryCode - код страны доставки из выбранного адреса доставки;
  • CityCode - код города доставки из выбранного адреса доставки.

Пример параметров: <DeliveryModeSearchParameters><CountryCode>RU</CountryCode><CityCode>7700000000000</CityCode><Weight>75.000</Weight><ProviderType>Taobao</ProviderType></DeliveryModeSearchParameters>.

При отображении способов доставки, необходимо учесть флаг IsPickupPointMode.

  • CountryCode - delivery country code from selected delivery address;
  • CityCode - delivery city code from selected delivery address.

Parameters example: <DeliveryModeSearchParameters><CountryCode>RU</CountryCode><CityCode>7700000000000</CityCode><Weight>75.000</Weight><ProviderType>Taobao</ProviderType></DeliveryModeSearchParameters>.

IsPickupPointMode flag must be considered when displaying delivery methods.

  • Show user Delivery address and zip code fields (take field values from selected delivery address) if flag = false.
  • Take delivery address and zip code from selected pickup location if flag = true. Provide user with an interface for choosing a pick-up point: show all available pick-up points for current delivery method 
  • Если флаг = false, показываем пользователю поля Адрес доставки и Индекс (значения полей берем из выбранного адреса доставки).
  • Если флаг = true, Адрес доставки и Индекс берем из выбранного пункта выдачи. Предоставляем пользователю интерфейс по выбору пункта выдачи: показываем все доступные пункты выдачи для текущего способа доставки http://docs.otapi.net/ruen/Documentations/Method?name=SearchDeliveryPickupPoints (по умолчанию должен быть выбран пункт выдачи, который сохранен в выбранном адресе/профиле доставки).by default, the pick-up point must be selected, which is stored in selected address / delivery profile).

Save ExternalDeliveryId to user preferences after successfull order После успешного оформления заказа, нужно сохранить ExternalDeliveryId в предпочтения пользователя (http://docs.otapi.net/ruen/Documentations/Method?name=UpdateUserPreferences) , а так же обновить параметры адреса доставки, если интерфейс сразу этого не сделал as well as update delivery address parameters, if the interface has not done it immediately (http://docs.otapi.net/ruen/Documentations/Method?name=UpdateUserProfile).

Из корзины

Перед тем как оформить заказ из корзины, необходимо "проверить" актуальность цен и возможность оформления:

  • после того как клиент выбрал галочками товары которые он хочет оформлять, вызываем метод http://docs.otapi.net/ru/Documentations/Method?name=RunBasketChecking с выбранными идентификаторами корзины, в ответ получаем и запоминаем "идентификатор активности"
  • показываем клиенту оверлей, фразу "Пожалуйста, подождите. Товары в корзине проходят проверку на наличие. Время проверки зависит от количества товаров в корзине" и прогресс бар
  • вызываем функцию http://docs.otapi.net/ru/Documentations/Method?name=GetBasketCheckingResult передав в нее идентификатор активности
    • если в ответе нет ошибки и IsFinished != true, показываем прогресс клиенту из узла ProgressPercent и через одну секунду еще раз вызываем метод GetBasketCheckingResult 
    • из узла Messages для нужного элемента корзины показываем текст и статус (статус отображаем путем изменения цвета строки, Ok - зеленый, Warning - желтый, Error - красный)
    • если IsFinished == true, скрываем прогресс бар и
      • если в Messages есть хотя бы один Error - проматываем экран до первой ошибки и предоставляем пользователю возможность исправить ошибку (например выбрать другое количество товаров и по новой запустить проверку корзины)
      • если ошибок нет, но есть хотя бы один Warning - проматываем экран до первого предупреждения и предоставляем пользователю возможность повторно нажать на кнопку "оформить заказ", повторное нажатие должно сразу начать процедуру оформления заказа без повторной проверки корзины (важно: если пользователь изменил количество, конфигурацию или выбрал галочками другие товары - процесс проверки корзины должен начинаться заново)
      • если нет ни ошибок ни предупреждений, сразу открываем экран оформления заказа.

Важно при каждом изменении выбранных товаров запускать проверку корзины заново, а так же заново показывать сообщения об ошибке/успехе от сервисов.

Заказ можно оформить "из корзины", для этого нужно вызвать метод http://docs.otapi.net/ru/Documentations/Method?name=CreateOrder , передав в него:

  • элементы корзины (якорь на документацию по корзине)
  • способ доставки
  • профиль пользователя
  • не обязательно: можно предложить пользователю ввести комментарий к заказу.

Дозаказ

При оформлении заказа, нужно предложить пользователю возможность сделать дозаказ (если такая возможность у пользователя имеется). Получаем заказы, в которые можно сделать дозаказ, вызов http://docs.otapi.net/ru/Documentations/Method?name=SearchOrdersForUser с параметрами xmlSearchParameters=

<OrderSearchParametersForUser><ProviderType>ИдПровайдера(например: Taobao)</ProviderType><IsAvailableForRecreation>true</IsAvailableForRecreation></OrderSearchParametersForUser>

если такие заказы есть, предлагаем покупателю выбрать: оформляет он новый заказ или делает дозаказ. Для дозаказа нужно вызвать метод http://docs.otapi.net/ru/Documentations/Method?name=RecreateOrder .

Быстрый заказ

Заказ можно оформить из карточки товара, кнопка "Быстрый заказ", для этого нужно вызвать метод http://docs.otapi.net/ru/Documentations/Method?name=AddOrder , передав в него:

  • список оформляемых товаров (для быстрого заказа из карточки 1688, это несколько товаров разной конфигурации). Для каждого товара обязательно нужно передать ид товара, ид конфигурации и количество (остальные возможные параметры передавать не нужно)
  • способ доставки
  • профиль пользователя
  • не обязательно: можно предложить пользователю ввести комментарий к заказу.

Оплата заказа и пополнение лицевого счета

Если заказ не оплачен, обязательно предлагаем пользователю его оплатить. Если на лицевом счете клиента есть средства - запрос http://docs.otapi.net/ru/Documentations/Method?name=GetAccountInfo , узле AvailableAmount (при отображении обязательно используем CurrencySign) , предлагаем пользователю кнопку, которая оплатит заказ с лицевого счета. На кнопке пишем сумму доступную для оплаты, это должна быть или RemainAmount из информации о заказе http://docs.otapi.net/ru/Documentations/Method?name=GetSalesOrderDetails (при условии что на лицевом счете больше чем RemainAmount) или AvailableAmount (при условии что на лицевом счете меньше чем RemainAmount).

При нажатии на кнопку вызываем метод http://docs.otapi.net/ru/Documentations/Method?name=PaymentPersonalAccount и обновляем страницу заказа.

Заказ можно оплатить и через платежные системы. Запрашиваем список доступных платежных систем: http://docs.otapi.net/ru/Documentations/Method?name=GetPaymentModes . Картинка ПС - AbsoluteImageUrl, название ПС - Name. При клике на платежную систему, отображаем кнопку "Оплатить" и если узел CustomField == "Email" - отображаем поле ввода почты, если узел CustomField == "Phone" - отображаем поле ввода номера телефона.

При клике на кнопку Оплатить, вызываем метод http://docs.otapi.net/ru/Documentations/Method?name=GetPaymentParameters . Передаем параметры Amount (RemainAmount из информации о заказе), CurrencyCode, PaymentSystemId, OrderId, в SuccessUrl и FailUrl адреса возврата, которые приложение сможет перехватить. По полученному ответу формируем http-форму, открывем её в браузере, и отправляем её.:

  • RequestUrl - url на который нужно отправить форму
  • RequestMethod , если не пришел отправляем POST форму (иногда приходится отправлять GET, согласно параметру)
  • IsNewWindow - нужно открыть форму в новом окне или в текущем, для мобильного приложения параметр видимо не актуален - всегда открываем запрос в новом окне браузера
  • IsIFrame - вместо form отображаем в браузере iframe src={RequestUrl}?{Parameters вида param1=value1&param2=value2}
  • IsImmmediate - пока игнорируем в мобильном приложении
  • Parameters - список параметров платежа6 которыее надо обработать в зависимости от свойства IsUserData7
    • Если IsUserData==false, параметр нужно вставить в форму, для передачи в платежную систему.
    • Если IsUserData==true, параметр нужно просто вывести на экран.

Если в метод GetPaymentParameters не передать OrderId , то лицевой счет клиента пополнится на сумму Amount.

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