Push-нотификация


   

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

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

Доступны два вида callback URL-ов:

  • Success CallbackURL - используется для передачи информации по успешно завершимся методам
  • Error CallbackURL - используется для информировании об ошибках, возникших при выполнении метода

Если в вашей системе нет потребности в разделении обработчиков этих событий, то можно использовать один и тот же URL в обоих случаях. Кроме того, если вы хотите получать информацию только о вызовах, завершившихся с ошибкой, то можно указать только Error CallbackURL.

Настройка Callback URL-ов производится в личном кабинете мерчанта на merchants.ozon.ru, а в случае, если работа с merchants.ozon.ru еще недоступна, настройку могут выполнить менеджеры Торговой площадки Ozon.ru.

Формат данных, передаваемых при push-нотификации, соответствует формату исходного запроса (application/xml или application/json).

В случае одиночных вызовов асинхронных методов API (POST/PUT методы ресурса products) в данных push-нотификации будет возвращена подробная информация об ошибке (код и описание ошибки).

В случае пакетных обработок (POST/PUT files) в данных push-нотификации возвращается только обобщенная информация об общем статусе обработки:

  • завершено с ошибками ("State":"Failed")
  • частично завершено с ошибками (State":"PartiallyFailed")
  • завершено без ошибок ("State":"Successfull")

Структура данных в push-нотификации:

<?xml version="1.0" encoding="utf-8"?>
<JobResult>
<Id></Id>
<ErrorData></ErrorData>
<ErrorCode></ErrorCode>
<InitRequest Method="" Uri="">
<ContentType></ContentType>
<Ip></Ip>
<HttpHeaders>
<HttpHeader></HttpHeader>
</HttpHeaders>
<Body></Body>
</InitRequest>
</JobResult>

Полный пример см. ниже.

В элементе <InitRequest> возвращается исходный запрос к Merchants API полностью. В элементе <Body> приведено экранированное тело исходного запроса.

Элементы <ErrorData> и <ErrorCode> присутствуют только в том случае, если обработка завершена с ошибкой.

<?xml version="1.0" encoding="utf-8"?>
<JobResult>
<Id>102220</Id>
<ErrorData>Товар с SKU: TestSKU_Agiiuef_dd0 не существует</ErrorData>
<ErrorCode>40015</ErrorCode>
<InitRequest Method="PUT" Uri="https://api.ozon.ru/merchants/products/id">
<ContentType>application/xml</ContentType>
<Ip>10.17.32.74</Ip>
<HttpHeaders>
<HttpHeader Name="Connection">keep-alive</HttpHeader>
<HttpHeader Name="Accept">application/xml</HttpHeader>
<HttpHeader Name="Accept-Encoding">gzip,deflate,sdch</HttpHeader>
<HttpHeader Name="Accept-Language">en-US,en; q=0.8</HttpHeader>
<HttpHeader Name="Cookie">ttorder=1376053620962; ClientID=CZSSt4UcZz8=; s_cc=true; s_sq=%5B%5BB%5D%5D; s_intervReady=1406; s_ppv=47; s_intervLoad=2035</HttpHeader>
<HttpHeader Name="Host">alpha-wcf.qa.ozon</HttpHeader>
<HttpHeader Name="User-Agent">Mozilla/5.0,(Windows NT 6.1; WOW64),AppleWebKit/537.36,(KHTML, like Gecko),Chrome/28.0.1500.72,Safari/537.36</HttpHeader>
<HttpHeader Name="Origin">chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo</HttpHeader>
<HttpHeader Name="x-ApplicationId">superapp</HttpHeader>
<HttpHeader Name="x-Token">9895DDA48379484ABC51A4B193CDAE04</HttpHeader>
</HttpHeaders>
<Body Product MerchantSKU="TestSKU_Agiiuef_dd0" ProductTypeID="286495574000">
<SKU><Name>![CDATA[Aklpjqafsgj]]</Name></SKU>
<Price>
<SellingPrice>22</SellingPrice>
</Price>
</Product></Body>
</InitRequest>
</JobResult>