Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Виды сессий

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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


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

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

Автовыкуп

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

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

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

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

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

 

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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