Введение

Модуль Автовыкуп — это помощник в работе с заказами (автоматизация) на сайте Товарного Провайдера (Таобао, 1688 и тд). 

Есть три вида систем заказов, которые участвуют в процессе:

  1. Ваша система заказов (покупателя ключа ОТ API).
  2. Система заказов OT Platform.
  3. Система заказов Поставщика товаров (Таобао).

Весь процесс работы можно описать схематично (используя нумерацию процессов, указанных выше): 

  • 1 → 2 — Добавление заказов в систему OT Platform
  • 2  3 — Работа Автовыкупа (экспорт заказов; синхронизация статусов (товаров и заказа), трек-кодов посылок и тд.
  • 2 → 1 — Работа с заказами после Автовыкупа.

Так как модуль Автовыкуп работает только с заказами, которые находятся в системе заказов OT Platform, необходимо с помощью API загрузить заказы из вашей системы в систему OT Platform. Когда заказы будут загружены, возможна дальнейшая работа с модулем Автовыкуп.

Внимание!

Модуль Автовыкуп требует регистрацию на сайте Товарного Провайдера, а также не заменяет общения с продавцами (согласования товаров, наличия, обсуждение доставки, брака и тп). Все условия работы с продавцом, разместившим товар на сайте Товарного Провайдера, необходимо обговаривать лично, если того требует ситуация.

Первоначальная настройка

Для начала работы необходимо создать пользователя в админке OT Platform. Для этого:

Заходим по адресу: http://open-demo.otcommerce.com/ik.php

Вводим свой ключ:

Затем вводим логин и пароль, которые были получены вместе с ключом:

Заходим в раздел «Пользователи › Покупатели» и создаем произвольного пользователя по инструкции в статье «Покупатели». (Если возникнут вопросы, можно обратиться в скайп-чат и получить консультацию у Менеджера ОТ).

Для дальнейшей настройки, сохраняем у себя (записываем или запоминаем) логин и пароль созданного пользователя.

Идем в раздел «Конфигурация › Доставка › Внешняя» и добавляем Внешнюю доставку с бесплатной (нулевой) стоимостью, используя статью «Внешняя доставка». (Если возникнут вопросы, можно обратиться в скайп-чат и получить консультацию у Менеджера ОТ). Это действие необходимо, потому что заказы в системе OT Platform привязываются к Доставке (при этом сама конфигурация не важна, поэтому делаем доставку бесплатной).

Для дальнейшей настройки, сохраняем у себя (записываем или запоминаем) идентификатор доставки.

Виды сессий

Админская/операторская сессия — нужна для всех операторских действий, в том числе и работа с Автовыкупом, и получение информации о заказах для синхронизации с ними, и изменение статусов заказов. Можно получить методом AuthenticateInstanceOperator, передав ваши админские логин/пароль (полученные с покупкой ключа ОТ API)

Пользовательская/покупательская сессия — нужна для добавления заказов от его имени. Можно получить методом Authenticate, передав логин/пароль от созданного ранее при настройке пользователя.

Провайдерская сессия — нужна для работы с Автовыкупом, связана с внешними системами, такими как Таобао, и в данном примере зависит от вашего Таобао-аккаунта и входа в него. Подробнее о получении будет в описании работы Автовыкупа.


Добавление заказов в систему ОТ Platform

Для добавления заказов в систему ОТ Platform существует метод AddOrder.

Для работы с ним необходимы:

  • Сессия пользователя/покупателя (создали логин и пароль в первичной настройке)
  • Описание заказа в формате xml

Заказ в формате xml

Общие данные о заказе:

  • DeliveryModeId — идентификатор доставки (созданной ранее)
  • Comment — комментарий к заказу (на ваше усмотрение, можно и не задавать)
  • UserProfileId — идентификатор профиля покупателя (можно получить методом GetUserProfileInfoList по сессии покупателя)

Список строк заказов (описаний товаров):

  • Id — идентификатор товара
  • ConfigurationId — идентификатор конфигурации товара (набора опций в товаре), если товар не имеет опций, нужно передать значение 0.
  • Quantity — количество товаров
  • Weight — вес товара, в данном случае неважен, можно не передавать
  • Comment — комментарий к товару (на ваше усмотрение, можно и не передавать)
  • PromotionId — идентификатор скидки товара, для заказа без скидки можно не передавать

Для нужд синхронизации с вашей системой рекомендуется сохранять в ней идентификаторы заказов, либо как вариант, передавать какую-либо вашу идентификационную информацию в качестве комментариев.

Результат работы метода AddOrder

AddOrder создает всегда один заказ, но в заказе может быть сколько угодно товаров.

Все параметры будут предварительно проверены, если по какой-либо причине товар нельзя заказать, он будет пропущен.

В ответ метод AddOrder выдаст информацию о готовом заказе либо ошибку. Стоит сверить список товаров в готовом заказе и тот что передавался в метод.

Если все ваши заказы успешно добавлены, и их составы вас устраивают, можно переходить к операторской работе с ними: управление, синхронизация, и запуск автовыкупа.

Если пропуски неприемлемы, можно просто отменить заказ методом CancelSalesOrder, передав сессию покупателя и идентификатор заказа, и следом попробовать снова добавить заказ с иными параметрами.

Возможные причины ошибок

Не смотря на то, что передать явную причину отказа не представляется возможным, можно проверить заказ по списку возможных ошибок и, тем самым, решить возникшую проблему.

  1. Товар снят с продажи (закончился на складе и тд). Убрать товар из списка товаров или подобрать аналогичный у другого продавца.
  2. Данной конфигурации товара нет на сайте (или она закончилась). Выбрать другую конфигурацию товара (цвет, размер и тп) или подобрать аналогичный у другого продавца.
  3. Указанного продавца больше нет на сайте. Выбрать аналогичный товар у другого продавца.
  4. Опечатка в каком-либо поле документа. Проверить правильность ввода данных.

Результат работы метода AddOrder: заказ из вашей системы попал в систему ОТ Platform (если смотреть аналогию в начале статьи, то из блока 1 попал в блок 2).

Имитация оплаты заказа

Внимание!

Далее требуется административная сессия.

 

Так как система ОТ Platform рассчитана на обычную работу интернет-магазина, невозможно отправить в Автовыкуп заказ, который не был оплачен. Пока мы разрабатываем иное решение по данному вопросу, необходимо настроить имитацию оплаты заказа по схеме, описанной ниже.

Все действия делятся на две части:

  1. Пополнение счета покупателя.
  2. Оплата заказа со счета покупателя.

Реальный перевод денег не требуется!

Пополнение счета покупателя

Пополнить счет можно методом PostTransaction. Для этого требуется:

  • Административная сессия.
  • Идентификатор покупателя.
  • Сумма перевода.
  • В isDebit передаем значение true (так как идет пополнение счета).
  • В комментарий и дату можно ничего не передавать.

Идентификатор покупателя и сумму можно узнать из информации о заказе, которая получена в ответ на AddOrder (либо можно запросить отдельно методом GetSalesOrderDetailsForOperator — там тоже админстративная сессия, идентификатор заказа, в параметр filter можно отправить пустую строку, а в queryType значение 0. Метод неоднократно пригодится вам и далее.)

Оплата со счета покупателя

Оплатить заказ со счета покупателя можно методом SalesPaymentReserve

Для этого требуется:

  • Административная сессия.
  • Идентификатор Заказа.
  • Сумма оплаты.


Если обе операции прошли успешно, то заказ теперь оплачен, и можно приступать к экспорту в систему Товарного Провайдера.

В любой момент состояние заказа можно проверить методом GetSalesOrderDetailsForOperator , он же понадобится в дальнейшем и для получения информации от Провайдера, такой как трек-номера, статусы, и т.д.

Автовыкуп

Первоначальная настройка

Если у вас есть регистрация на Таобао, то вы можете подключить Таобао, как своего Товарного Провайдера.

Внимание!

Автовыкуп не работает для товаров Tmall.

Примерно 1,5 года назад часть скидок на товары Tmall перестали передаваться через api Taobao.

Используемый сейчас, разработанный OpenTrade Commerce, эксклюзивный метод получения Tmall скидок не позволяет использовать эти скидки в Автовыкупе, так как система автоматизированного выкупа товаров работает только со скидками, передаваемыми через api Taobao.

 

Для подключения необходимо знать следующие данные:

Список логинов Таобао, которые будут использоваться для выкупа (логинов может быть неограниченное количество). Внимание! Номер телефона не является логином. Логин — это ник покупательского аккаунта:

Информация о получателе посылок (данные склада) на китайском языке:

  • Имя получателя (если не указано, будет ставиться транслитерированное имя покупателя заказа) —  Важно! Размер от 2 до 14 символов
  • Мобильный телефон получателя (11 цифр)
  • Код региона (это число можно увидеть, выбирая регион внутренней доставки в админке)
  • Почтовый индекс (zip-код)
  • Адрес склада на китайском языке (не включая регион: Например, если регион выбран Пекин, то в адрес не нужно писать город. Если выбран отдельный район Пекина, то в адрес не нужно писать и район.) 

Пример написания

Имя: 王鑫磊奇跡
Телефон: 11147043234
Код региона: 150784
Индекс: 021400
Адрес: 尚都国际小区东区9号楼23号车库


Если возникли вопросы, можно обратиться в скайп-чат для консультации с менеджером ОТ.

Получение Провайдерской сессии

Если вы используете несколько аккаунтов в системе Провайдера, например в Таобао, то на каждый аккаунт будет своя сессия. Все они после получения запоминаются в системе ОТ Platform, и используются не только для экспорта, но и, например, для автоматической фоновой синхронизации.

Рекомендация

Примерное время жизни сессии Таобао составляет сутки, поэтому рекомендуется каждый день перед началом работы пройтись по всем аккаунтам и получить для них сессии.

Если сессия ранее уже была получена, то можно узнать её методом GetProviderOrdersIntegrationSessionInfoList. К сожалению, процесс получения требует ручных действий от оператора, и не может быть полностью автоматизирован.

Чтобы получить сессию, необходимо:

  1. Адрес на вашем сайте с обработчиком, куда Таобао вернет оператора после авторизации.
  2. Вызвать метод GetProviderOrdersIntegrationSessionAuthenticationInfo, передав ваш адрес возврата (из пункта 1). В ответ вы получите адрес, который нужно открыть для оператора.
  3. Открыть полученный адрес оператору в браузере.
  4. Оператор должен войти в Таобао-аккаунт и подтвердить что разрешает работу с ним системе ОТ Platform.
  5. После чего браузер вернется на ваш адрес возврата (из пункта 1), в параметрах будет либо готовая сессия, либо текст ошибки.

Сессию можно запомнить или узнать заново запросив список методом GetProviderOrdersIntegrationSessionInfoList.

Интерактивные операции

Все остальные операции с Автовыкупом, не описанные выше, кроме получения сессии, могут выполняться неопределенное время и являться интерактивными (требующими действий от оператора), поэтому они реализованы в виде системы Фоновых Активностей. Каждый используемый метод выдает идентификатор фоновой активности, все действия происходят внутри неё, а наблюдать за активностью и управлять ею нужно через общие методы работы с ними.

Всего ручных действий с Автовыкупом четыре.

1. Экспорт заказа в Провайдер

Метод RunOrderExportingToProvider принимает:

  • админскую сессию,
  • тип Провайдера,
  • Провайдерскую сессию,
  • структуру, в которой указаны идентификатор заказа и идентификаторы строк заказа.

Если строки заказа не перечислены, будет экспортирован весь заказ (точнее, все доступные к экспорту строки). Но можно и экспортировать часть заказа, если перечислить конкретные строки заказа.

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

Затем будет попытка самого экспорта. В случае успеха в Провайдере (в Таобао) появится заказ (или несколько), а в строках заказа в системе OT Platform будет записана информация, какая строка к какому Провайдерскому заказу относится. По этой информации будет происходить дальнейшая синхронизация.

Если же при экспорте возникнет ошибка, то о ней будет сообщено в активности.

Среди ошибок могут быть:

  • Неверные настройки адреса для выкупа.(Имеются ввиду данные для Таобао: адрес в Китае, телефон и тп. Необходимо внести верные данные).
  • Лимит неоплаченных заказов в системе Провайдера. (Превышен лимит забронированных товаров. У каждого товарного Провайдера есть ограничение на количество забронированных товаров. Чтобы решить эту проблему, необходимо пополнить счет на сайте Товарного Провайдера и выкупить часть товаров.)
  • Упущенные при проверке несоответствия, такие как недостаточное количество, и т.д.
  • Или любые иные, типа плохой связи с Провайдером, работ в системе Провайдера или системе OT Platform, и т.д.

Кроме того, в настройках системы OT Platform может быть включена проверка после экспорта, всё ли верно прошло. В этом случае тоже сообщит об ошибке, если например товар должен был быть со скидкой, а забронировался без скидки.

2. Ручная синхронизация

Метод RunOrdersSynchronizingWithProvider принимает:

  • админскую сессию,
  • тип Провайдера,
  • Провайдерскую сессию.

Хотя синхронизация запускается периодически в фоне автоматически, можно запустить её и вручную.

При синхронизации проверяются все экспортированные заказы, и в них меняются статусы, если они сменились на стороне Провайдера (например, продавец отправил посылку), расставляются трек-номера, а так же прочие действия.

Синхронизация носит односторонний характер, и в случае, например, отмены заказа в системе OT Platform, у Провайдера заказ не отменится (в Таобао это вообще возможно лишь вручную на их сайте). Поэтому, чтобы ваш заказ получил статус отменен, необходимо вручную отменить заказ в личном кабинете Провайдера. После синхронизации статус заказа будет везде единым.

3. Ручное связывание заказов

Метод RunOrderLinkingWithProvider принимает:

  • админскую сессию,
  • тип Провайдера,
  • Провайдерскую сессию,
  • структуру, в которой указаны идентификатор заказа и список Провайдерских заказов.

Не всегда можно забронировать (экспортировать) товар автоматом, в случае с Таобао основная из причин это особые Tmall-скидки, которые просто недоступны автоматике.

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

Система сперва попытается сама определить совпадающие товары в указанных заказах, а если не нашло, спросит оператора, что с ним делать.

4. Отвязывание заказа

Метод RunOrderUnlinkingFromProvider принимает:

  • админскую сессию,
  • тип Провайдера,
  • Провайдерскую сессию,
  • структуру, в которой указаны идентификатор заказа и идентификаторы строк заказа.

Если строки заказа не перечислены, будут отвязаны все связанные строки.

Иногда, если экспорт прошел не так как надо, или вручную связали не то что надо, то перед повторными попытками нужно сперва данные строки заказа отвязать.

Или вы просто хотите, чтобы они больше не синхронизировались.

Работа с заказами системы OT Platform

Подробная информация о заказе

Если вы сохраняли в своей системе идентификаторы заказов OT Platform, то можно периодически просматривать их, проверяя нужную информацию.

Подробную информацию о заказе можно получить методом GetSalesOrderDetailsForOperator — там тоже админстративная сессия, идентификатор заказа, в параметр filter можно отправить пустую строку, а в queryType значение 0.

В ответе метода стоит обратить внимание на список строк заказа (свойство SalesLinesList), в каждой из которых интересно следующее:

  • StatusId/StatusName — статус данного товара, он меняется в соответствии со статусами в Провайдерском заказе. Сами соответствия можно настраивать, что описано в разделе настроек Автовыкупа.
  • VendPurchId  идентификатор Провайдерского заказа.
  • VendPurchWaybill  номер накладной, он же трек-номер посылки, которую вам отправил Продавец.
  • VendPurchAccountId  имя аккаунта, под которым был выкуплен товар.
  • VendPurchStatus  оригинальный статус товара в Провайдерском заказе, не переведенный в статус OT Platform.
  • VendPurchItemId / VendPurchConfigurationId / VendPurchPromotionId  идентификаторы товара / конфигурации / скидки в Провайдерском заказе.

Поиск строк заказов по идентификатору Провайдерского заказа

Если вам известен идентификатор Провайдерского заказа (например, в Таобао его видно в личном кабинете в списке заказов), можно получить то, что с ним связано в системе OT Platform.

Для этого используйте метод SearchOrderLines с примерно таким параметром xmlSearchParameters:

<OrderLineSearchParameters>
  <VendorPurchaseIdList>
    <Id>здесь идентификатор провайдерского заказа</Id>
  </VendorPurchaseIdList>
</OrderLineSearchParameters>

Поиск строк заказов по трек-номеру

Если вам известен трек-номер посылки, можно получить то, что с ним связано в системе OT Platform (в случае с Таобао это номер накладной, напечатанный на посылке, которая пришла на ваш склад. Он же там есть в виде штрих-кода, который вы можете считать, если имеется сканер).

Для получения информации используйте метод SearchOrderLines с примерно таким параметром xmlSearchParameters:

<OrderLineSearchParameters>
  <VendorPurchaseWaybillIdList>
    <Id>здесь трек-номер</Id>
  </VendorPurchaseWaybillIdList>
</OrderLineSearchParameters>
  • Нет меток