Перейти к содержимому


Настройка Взаимодействия С Платформой Через Api

api

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 79

#1 support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 20 Октябрь 2014 - 17:46

В данной ветке форума рассмотрим практические примеры взаимодействия с платформой, через API. API позволяет создавать свои приложения, выполняющие те действия, которые отсутствуют по той или иной причине в функционале платформы. Например внедрение платёжного эквайринга какого-либо банка, или автоматизация выгрузки заказов в системы доставки или клиентов в системы рассылок.

Для того, чтобы наладить взаимодействие с вашим сайтом через API, достаточно зайти в раздел Настройки > API (Временно не выводится в панели управления, т.к. ещё дорабатывается и тестируется), либо по адресу: http://site.ru/admin/api где site.ru - адрес вашего сайта.
Далее создаём новое приложение, нажимая "Добавить своё приложение":
1.png
2.png

Затем указываем необходимые права доступа у нового приложения.

Справа в колонке со своими приложениями будет высвечиваться ключ доступа, по которому можно будет обращаться к сайту.
3.png

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

Далее к API на сайте мы обращаемся через POST запросы. Все параметры передаются POST-ом. Секретный ключ передаётся в переменной secret_key = '';
В URL адресе запроса указываем только модуль к которому производится запрос, действие, а также идентификатор записи, если он требуется для этого действия.

Рассмотрим на примере получения списка заказов:
Делаем POST запрос на URL адрес:
http://site.ru/api/v1/order_statuses/get_list
  • где v1 - это версия API (Текущая версия v1, если появятся новые, мы обязательно об этом сообщим),
  • order_statuses- это модуль, с которым работаем. В данном случае это статусы заказов.
  • get_list - действие, которое нужно выполнить серверу и затем вернуть результат выполнения. В данном примере - это получение списка заказов
В теле запроса мы отправляем авторизационную информацию:
POST Data:
secret_key=9ea6d5ec9e2a6a9a30da211e48484ff8

В данной версии API данные всегда возвращаются в json формате.

Стандартные коды ответом следующие:
  • 'status'    =>  'ok'  - Всё прошло успешно / 'error' - возникла ошибка
  • 'message'  =>  'Сообщение системы' появляется, когда система хочет что-то сказать
  • 'data' =>  MIXED_TYPE_DATA данные, которые возвращает система.
для данного запроса система вернёт нам следующие данные в JSON формате. Для наглядности отображаем их в более понятном виде:
Array
(
[status] => ok
[data] => Array
(
[0] => Array
(
[order_status_id] => Array
(
[type] => int_unsigned_not_null
[edit] =>
[value] => 1
)
[order_status_name] => Array
(
[type] => str
[edit] =>
[value] => Новый
)
[order_status_desc] => Array
(
[type] => str
[edit] =>
[value] => Новый заказ
)
)
[1] => Array
(
[order_status_id] => Array
(
[type] => int_unsigned_not_null
[edit] =>
[value] => 2
)
[order_status_name] => Array
(
[type] => str
[edit] =>
[value] => В обработке
)
[order_status_desc] => Array
(
[type] => str
[edit] =>
[value] => Заказ обрабатывается
)
)
... остальные статусы заказов ...
)
)

Для каждого поля система отдаёт информацию о том, какой тип данных у данного поля, а также возможно ли его изменять. Если edit=true, то поле доступно для изменений, если edit=false, как в данном примере, то изменение не доступно.

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

Пример создания простого запроса к API на получение списка последних 10 созданных заказов на PHP:
<?php
$ch = curl_init('http://site.ru/api/v1/orders/get_list');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
'secret_key' => '0837962f5a3cc1a97f164df9df55d826',
'per_page' => 10,
)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$resultSrc = curl_exec ($ch) or die(curl_error($ch));
$result = json_decode($resultSrc , true);
echo $result; echo $resultSrc; echo curl_error($ch);
curl_close ($ch);
?>


Команды API по разделам:
Заказы
Статусы заказов
Клиенты
Группы клиентов

#2 sibulba

sibulba

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 2 335 сообщений

Отправлено 20 Октябрь 2014 - 18:23

приведите примеры приложений
для неопытных пользователей это филькина грамота

но приятно что сдвинулось с места что-то

#3 мистка

мистка

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 2 435 сообщений
  • ГородМосква

Отправлено 20 Октябрь 2014 - 18:23

Очень много информации для полных лузеров возможна помощь в интеграции определенной платежной системы если на данный момент уже получено одобрение и со стороны платежной системы разработчики открыты к диалогу(есть выделеный разработчик который сейчас ковыряет наш сторик дабы понять как прикруть систему)

#4 sibulba

sibulba

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 2 335 сообщений

Отправлено 20 Октябрь 2014 - 18:26

увидел строчку про "центр приложений"
прошу ссылку))))

#5 support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 20 Октябрь 2014 - 18:31

Просмотр сообщенияsibulba (20 Октябрь 2014 - 18:23) писал:

приведите примеры приложений
для неопытных пользователей это филькина грамота

но приятно что сдвинулось с места что-то
На данный момент мы пишем документацию, ссылки появляются в блоке запросов: "Команды API по разделам".

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

#6 sibulba

sibulba

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 2 335 сообщений

Отправлено 20 Октябрь 2014 - 18:32

а какие приложения ожидать конкретно от Вас?

сапер или пасьянс паук может быть?)

#7 support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 20 Октябрь 2014 - 18:38

Просмотр сообщениямистка (20 Октябрь 2014 - 18:23) писал:

Очень много информации для полных лузеров возможна помощь в интеграции определенной платежной системы если на данный момент уже получено одобрение и со стороны платежной системы разработчики открыты к диалогу(есть выделеный разработчик который сейчас ковыряет наш сторик дабы понять как прикруть систему)
Если таковой специалист есть - киньте ему эту ветку форума, он с ней разбёрётся. Для подключения любой платёжной системы достаточно наладить с ней взаимодействие на своём хостинге, разместить на неё кнопку в шаблоне "Просмотр заказа", далее по факту получения положительного ответа об оплате, сообщить через API о том, что заказ сменил статус на оплачен на нашу платформу. Подобный пример запроса описан в соседней ветке форума: Команды Api Для Раздела Заказы > "Обновление данных заказа"

Просмотр сообщенияsibulba (20 Октябрь 2014 - 18:26) писал:

увидел строчку про "центр приложений"
прошу ссылку))))
Пока не доступна

Просмотр сообщенияsibulba (20 Октябрь 2014 - 18:32) писал:

а какие приложения ожидать конкретно от Вас?

сапер или пасьянс паук может быть?)
Центр приложений в первую очередь средство для сторонних разработчиков, мы будем делать приложения, если они необходимы и нет людей, которые готовы были бы его сделать.
Если сапёр или пасьянс поможет повысить ваши продажи, мы поможем его сделать или сделаем сами.

#8 мистка

мистка

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 2 435 сообщений
  • ГородМосква

Отправлено 20 Октябрь 2014 - 18:41

Просмотр сообщенияsupport (20 Октябрь 2014 - 18:38) писал:

Если таковой специалист есть - киньте ему эту ветку форума, он с ней разбёрётся. Для подключения любой платёжной системы достаточно наладить с ней взаимодействие на своём хостинге, разместить на неё кнопку в шаблоне "Просмотр заказа", далее по факту получения положительного ответа об оплате, сообщить через API о том, что заказ сменил статус на оплачен на нашу платформу. Подобный пример запроса описан в соседней ветке форума: Команды Api Для Раздела Заказы > "Обновление данных заказа"


Да конечно я уже отправила (это система пал плей) Спасибо. Надеюсь прикрутят

#9 User

User

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 20 Октябрь 2014 - 21:45

Просмотр сообщенияsupport (20 Октябрь 2014 - 17:46) писал:

В данной версии API данные всегда возвращаются в json формате.

На xml можно надеяться?

#10 support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 20 Октябрь 2014 - 22:49

Просмотр сообщенияUser (20 Октябрь 2014 - 21:45) писал:



На xml можно надеяться?
Можно, в принципе это лишь вопрос вывода. Если он реально необходим, можем добавить. В большинстве языков программирования дешифровка json-а или xml делается одной строкой, для php это например код:
$result = xmlrpc_decode(str);
вместо текущего:
$result = json_decode($str, true);

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

#11 sibulba

sibulba

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 2 335 сообщений

Отправлено 21 Октябрь 2014 - 09:47

по логике вещей если сделать вменяемую выгрузку xml то можно будет проще менять характеристики и данные товара?

#12 User

User

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 21 Октябрь 2014 - 13:05

Просмотр сообщенияsupport (20 Октябрь 2014 - 22:49) писал:

Можно, в принципе это лишь вопрос вывода. Если он реально необходим, можем добавить. В большинстве языков программирования дешифровка json-а или xml делается одной строкой, для php это например код:
$result = xmlrpc_decode(str);
вместо текущего:
$result = json_decode($str, true);

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

В VBA нет парсера json, а xml есть. Добавьте, пожалуйста, если возможно.

#13 support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 21 Октябрь 2014 - 17:59

Просмотр сообщенияUser (21 Октябрь 2014 - 13:05) писал:

В VBA нет парсера json, а xml есть. Добавьте, пожалуйста, если возможно.
Хорошо, в ближайшее время добавим. Как только реализуем, мы напишем в этой ветке форума о данной возможности.

Просмотр сообщенияsibulba (21 Октябрь 2014 - 09:47) писал:

по логике вещей если сделать вменяемую выгрузку xml то можно будет проще менять характеристики и данные товара?
По сути формат обмена данными не влияет на удобство изменения характиристик/данных товара. Он предназначен для того, чтобы наиболее простым образом получать/отправлять данные между серверами. Также например как и HTTP протокол не влияет на удобство изменения данных товара, т.к. эти данные напрямую не связаны.

#14 timavleev

timavleev

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 135 сообщений
  • ГородМосква

Отправлено 21 Октябрь 2014 - 22:21

Просмотр сообщенияsupport (21 Октябрь 2014 - 17:59) писал:

Хорошо, в ближайшее время добавим. Как только реализуем, мы напишем в этой ветке форума о данной возможности.


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

Вы про xml обновление товаров говорите? Если да, то очень надо!
Добавлять большие массивы товара удобно с помощью csv. А чтобы ежедневно изменять остатки (наличие) хотя бы 7 тыс. позиций, нужно что-то другое.

#15 xloops

xloops

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 79 сообщений

Отправлено 21 Октябрь 2014 - 22:43

Я не понял, можно ли на данный момент подключить сервис доставки? http://shop-logistic...es/service/api/

#16 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 22 Октябрь 2014 - 00:34

Просмотр сообщенияtimavleev (21 Октябрь 2014 - 22:21) писал:

Вы про xml обновление товаров говорите? Если да, то очень надо!
Добавлять большие массивы товара удобно с помощью csv. А чтобы ежедневно изменять остатки (наличие) хотя бы 7 тыс. позиций, нужно что-то другое.

нет, имелось в виду взаимодействие с API. Вместо обработки формата json использование xml формата.

Просмотр сообщенияxloops (21 Октябрь 2014 - 22:43) писал:

Я не понял, можно ли на данный момент подключить сервис доставки? http://shop-logistic...es/service/api/

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

Сообщение отредактировал support: 23 Октябрь 2014 - 02:09


#17 мистка

мистка

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 2 435 сообщений
  • ГородМосква

Отправлено 22 Октябрь 2014 - 10:07

в день этой записи я отправила через обратную связь вам письмо от сервиса пал плей так и не дождалась ответа

#18 User

User

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 22 Октябрь 2014 - 23:40

А оно точно работает? Ключи генерил разные.

Запрос из VBA простейший:
Set ht = New WinHttpRequest
ht.Open "POST", "http://мойсайт.ru/ap...tuses/get_list"
ht.Send "secret_key=d1f487xxxxxxxxxxxxxxxxxx03e7f57"
Debug.Print ht.responseText

но как ни крути:
{"status":"error","message":"\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043e\u0434. \u041e\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c POST \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 secret_key"}

ps: так же, хочется надеяться, в xml кириллица будет в более вменяемой кодировке...

#19 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 23 Октябрь 2014 - 02:16

Проверьте правильность и отправку вашего ключа "secret_key", так как например тот же консольный запрос

curl --data "secret_key=b*c6*385*c18*6e*dd4*46*005*5b3*d" http://*.storeland.ru/api/v1/order_statuses/get_list

корректно обрабатываются. В vba можно попробовать использовать объект ServerXMLHTTP

#20 support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 23 Октябрь 2014 - 02:24

Просмотр сообщениямистка (22 Октябрь 2014 - 10:07) писал:

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


Просмотр сообщенияUser (22 Октябрь 2014 - 23:40) писал:

А оно точно работает? Ключи генерил разные.

Запрос из VBA простейший:
Set ht = New WinHttpRequest
ht.Open "POST", "http://мойсайт.ru/ap...tuses/get_list"
ht.Send "secret_key=d1f487xxxxxxxxxxxxxxxxxx03e7f57"
Debug.Print ht.responseText

но как ни крути:
{"status":"error","message":"\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043e\u0434. \u041e\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c POST \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 secret_key"}

ps: так же, хочется надеяться, в xml кириллица будет в более вменяемой кодировке...

Похоже, что данные не были получены, вероятно, что запрос может и был создан через POST, но данных в виде ключа не было получено.
Пример того же скрипта на PHP у меня отработал корректно:
$ch = curl_init('http://or......shop.ru/api/v1/orders/get_list');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
  'secret_key'  => 'd1f4хххххххххххххххххххххххх7f57',
  'per_page'	=> 5,
)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$resultSrc = curl_exec ($ch) or die(curl_error($ch));
$result = json_decode($resultSrc , true);
echo $result; echo $resultSrc; echo curl_error($ch);
curl_close ($ch);
вывел json с 5 последними заказами...

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





Темы с аналогичным тегами api

Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных