Интеграция с Ozon, Wildberries - извлечение статистики
Введение
В этой статье рассмотрим как можно собирать статистику из маркетплейсов (Ozon, WB) в свою базу данных для возможности последующего вывода этих данных в виде графиков и таблиц.
Общая схема работы сбора данных с маркетплейсов
Таблицы базы данных:
- outer_rawData - просто JSON данные по отчетам, полученным от внешнего источника (просто забрали данные и положили в эту промежуточную таблицу).
- ozon_... таблицы с данными по отчетам Ozon, для каждого отчета - одна таблица.
- wb_... таблицы с данными по отчетам WB. На каждый отчет WB - своя таблица с таким префиксом.
API исходящие методы
- ozon_... запросы отчетов Озон и сохранение в промежуточной таблице outer_rawData,
- wb_.... запросы отчетов WB и сохранение в промежуточной таблице outer_rawData.
Ежедневно в /syssp
- в 2 ночи - Вызов методов АПИ wb и ozon для получения последних отчетов - вызов процедуры mrkt_sendRequests
- в 3 ночи - Обновление данных по таблицам(из JSON в норм данные) - вызов процедуры mrkt_updateTables (преобразует новые данные из таблицы outer_rawData в бизнес таблицы).
Получение данных с WB
Документация WB API - https://openapi.wildberries.ru/analytics/api/ru/
Для работы с АПИ нужно получить Ключ авторизации.
Пример получения отчета с Sales:
Исходящий метод wb_sales (тип GET).
Процедура Request (отчет получаем данные за 3 дня):
CREATE PROCEDURE [dbo].[api_wb_sales_request]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32)
AS
BEGIN
-- SELECT 1
select '' Msg, 1 Result, 'https://statistics-api.wildberries.ru/api/v1/supplier/sales?dateFrom='+ convert(nvarchar(10), dateadd(day, -3, getdate()), 120) Url -- 2024-04-01
-- SELECT 2 PARAMETERS
select 'Authorization' name, dbo.as_setting('wb.apiKey', '') value, 'header' [type]
END
Процедура Response:
CREATE PROCEDURE [dbo].[api_wb_sales_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32)
AS
BEGIN
-- SELECT 1
select '' Msg, 1 Result, @response Response
if(isjson(@response)=1)begin
insert into outer_rawdata (code, created, sourceCode, itemID, value)
select 'sales', getdate(), 'wb', itemID, value
from(
SELECT value, JSON_VALUE(value,'$.date') date, JSON_VALUE(value,'$.srid') itemID
FROM OPENJSON(@response)
) t1
where itemID not in (select itemID from outer_rawdata)
end
END
Здесь мы извлекаем данные из внешнего источника и сохраняем новые данные в таблице outer_rawdata (уникальным полем здесь является srid).
Получение данных с Ozon
Документация по API OZON - https://docs.ozon.ru/api/seller/
На входе для интеграции нам нужны Client-Id и ApiKey.
Реализуем исходящий метод API ozon_transactions.
Процедура Request:
CREATE PROCEDURE [dbo].[api_ozon_transactions_request]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32) -- текущий пользователь.
AS
BEGIN
-- SELECT 1
select '' Msg, 1 Result, 'https://api-seller.ozon.ru/v3/finance/transaction/list' Url
-- SELECT 2 PARAMETERS
select 'Client-Id' name, dbo.as_setting('ozon.clientID', '') value, 'header' [type]
union
select 'Api-Key' name, dbo.as_setting('ozon.apiKey', '') value, 'header' [type]
union
select '' name, '{
"filter": {
"date": {
"from": "'+convert(nvarchar(10),dateadd(day,- 3, getdate()), 120)+'T00:00:00.000Z",
"to": "'+convert(nvarchar(10), getdate(), 120)+'T00:00:00.000Z"
},
"operation_type": [],
"posting_number": "",
"transaction_type": "all"
},
"page": 1,
"page_size": 1000
}' value, 'json' [type]
END
Процедура Response:
CREATE PROCEDURE [dbo].[api_ozon_transactions_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32)
AS
BEGIN
-- SELECT 1
select '' Msg, 1 Result, @response Response
if(isjson(@response)=1)begin
declare @resultOperations nvarchar(max) = JSON_QUERY(@response, '$.result.operations')
insert into outer_rawdata (code, created, sourceCode, itemID, value)
select 'transactions', getdate(), 'ozon', itemID, value
from(
SELECT value, JSON_VALUE(value,'$.operation_date') date, JSON_VALUE(value,'$.operation_id') itemID
FROM OPENJSON(@resultOperations)
) t1
where itemID not in (select itemID from outer_rawdata)
end
END
Получаем данные и сохраняем данные в промежуточной таблице outer_rawdata. Здесь идентификатором выступает operation_id. Сохраняем только данные с новыми operation_id.
Процедура адаптации данных из JSON в таблицы статистики
Далее наша задача - перевести данные JSON в удобный для обрабтки формат - формат таблиц с отдельными полям.
Пример для WB (для первых 3 полей).
CREATE PROCEDURE [dbo].[mrkt_updateTables]
AS
BEGIN
-- WB Sales
insert into wb_sales (date, lastChangeDate, srid)
select
try_convert(datetime, JSON_VALUE(r1.value, '$.date')) date,
try_convert(datetime, JSON_VALUE(r1.value, '$.lastChangeDate')) lastChangeDate,
JSON_VALUE(r1.value, '$.srid') srid
from outer_rawdata r1 where sourceCode ='wb' and code = 'sales'
and itemID not in (select srid from wb_sales)
END
Ежедневная обработка данных
В /syssp прописываем вызов процедур в 2 и 3 ночи.
CREATE PROCEDURE [dbo].[falcon_nt_sync_hour]
AS
BEGIN
if(DATEPART(HOUR, GETDATE())=2) begin
exec dbo.mrkt_sendRequests
end
if(DATEPART(HOUR, GETDATE())=3) begin
exec dbo.mrkt_updateTables
end
END
Процедура mrkt_sendRequest выглядит следующим образом (вызывает 2 метода АПИ):
CREATE PROCEDURE [dbo].[mrkt_sendRequests]
AS
BEGIN
select 'apirequest' type, 'wb_sales' code
union
select 'apirequest' type, 'ozon_transactions' code
END
Заключение
Таким образом мы ежедневно получаем данные из Wildberries и Ozon по 2 отчетам.
Аналогично можно получать и другую информацию с внешних источников.
Далее эти данные можно использовать для построения графиков, получения агрегированных отчетов и т.д.
Google поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация, юзабилити
- Лендинги
- Универсальный API
- Примеры интеграций Прием платежей через Яндекс.Кассу Онлайн-платежи. Интеграция с Робокассой (платежный шлюз) Zapier интеграция на платформе Falcon Space Интеграция коллтрекинга МАНГО ОФИС (режим Площадка) Интеграция API DaData.ru подсказки по адресам Интеграция API Курсы валют Центрального Банка РФ в веб-платформе Falcon Space Интеграция API Почта РФ Интеграция API Служба доставки СДЭК (CDEK) Интеграция API Служба доставки Деловые линии Интеграция импорт и парсинг файла CSV Интеграция API IpGeoBase Город по IP-адресу Интеграция API DaData.ru Город по IP-адресу Как вычислить расстояние между 2 точками с координатами через Google Maps Сканирование штрихкодов и QR кодов через камеру и с картинок Получение данных контрагента по ИНН Прием платежей на сайте через CloudPayments Как сделать интеграцию с Мой Склад Внедрение подсказок dadata на сайт Вывод точек на карте Яндекс. Интеграция с Яндекс Карты Интеграция с телефонией Zadarma.com Получение данных о контрагенте - интеграция с сервисом ЗаЧестныйБизнес Интеграция с AMO CRM Как импортировать данные в базу CRM из Google Контакты Вход/регистрация через ВКонтакте(vk.com) Интеграция CRM с онлайн чатом на сайте (Replain) Как связать yandex metrika clientID с пользователем на сайте и посмотреть полный путь его по сайту? Телеграм. Работа с файлами Как сделать обработку входящей почты (создание клиента в CRM из Email) Интеграция сайта с ChatGPT (openAI) Интеграция с Яндекс Метрика Интернет-эквайринг Тинькоф Банк Интеграция с платежным шлюзом LifePay Как сделать вебхук для передачи данных с Тильды на Falcon Space Пополнение средств через Yookassa (Юкасса) Тинькофф Банк - уведомление в учетную систему по операциям с расчетным счетом Интеграция с Ютуб. Получение роликов канала Интеграция с Ozon, Wildberries - извлечение статистики Вывод данных из различных удаленных SQL Server через технологию Linked Server
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта