#1 2015-05-05 10:59

dlpv
Пользователь

Обновление остатков и цен через API

Есть задача - автоматизировать актуализацию цен и остатков в интернет-магазине на движке Webasyst 6.
Обновление должно проходить автоматически, соответственно импорт через CSV не подходит. Появилась идея сделать все через API.
Данные будут браться из бухпрограммы (не 1С!). В программе встроенный язык VBScript. Есть опыт работы через API с службами доставки и т.д.
Начинаю читать документацию по API Webasyst, и прозреваю. Авторизоваться запросом к API не получится, т.к. надо явно разрешить доступ на странице api.php
Или я чего-то не понимаю? Должен выдаваться токен и я так понимаю, что у него есть время жизни. А как же мне реализовать обмен данными по расписанию, если я упрусь в эту авторизацию?
Или можно токен получить один раз и потом постоянно его использовать?

Отредактировано dlpv (2015-05-05 11:22)

Неактивен

 

#2 2015-05-05 11:48

realteam
Пользователь

Re: Обновление остатков и цен через API

Скажу, что у Webasyst нет кучи функций требующих для создания даже приложения для ios/android, пришлось все писать программисту самому. Приложение уже готово, скоро покажу.

Неактивен

 

#3 2015-05-05 11:50

dlpv
Пользователь

Re: Обновление остатков и цен через API

с горем пополам авторизовался в ручном режиме и попробовал создать товар
в итоге ответ "Method GET not allowed"
при создании проверяются права пользователя, а как мне при авторизации указать именно того пользователя, у которого есть права на создание товаров?

при этом метод чтения свойств товара работает нормально

Отредактировано dlpv (2015-05-05 12:01)

Неактивен

 

#4 2015-05-05 11:57

dlpv
Пользователь

Re: Обновление остатков и цен через API

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

что неправильно в этом запросе?

Код:

http://mysite.com/api.php/shop.product.add?type_id=19&name=test&status=0&access_token=2c4ff17e8b29d81e733q73566f1adac8&format=xml

ответ такой
<response>
<error>invalid_request</error>
<error_description>Method GET not allowed</error_description>
</response>

Отредактировано dlpv (2015-05-05 16:35)

Неактивен

 

#5 2015-05-05 12:05

dlpv
Пользователь

Re: Обновление остатков и цен через API

мда, учиться и еще раз учиться
я по сути передавал GET запрос
буду дальше ковырять

Неактивен

 

#6 2015-05-05 16:27

dlpv
Пользователь

Re: Обновление остатков и цен через API

кто может дать пример формирования POST запроса для метода shop.product.add?
Что неправильно в моем коде?

Код:

Option Explicit
Sub test
Dim objXMLHttp, psend, Return, WshShell 
Set WshShell = CreateObject("WScript.Shell")
'Запускаем ping и ожидаем завершения его работы
Return = WshShell.Run("ping mysite.com -n 1", 0, True)
If Return=1 Then 
MsgBox "Проверьте, работает ли сайт mysite.com!"
Else
psend="name=11111&type_id=19&status=0"
    Set objXMLHttp = CreateObject("MSXML2.XMLHTTP") 
    objXMLHttp.open "POST", "http://mysite.com/api.php/shop.product.add?access_token=2c4ff17e8b29d81e733a73566f1adac8&format=xml", False 
    objXMLHttp.send psend
MsgBox objXMLHttp.responseText
End If
Set objXMLHttp =Nothing
End Sub

ответ приходит такой

Код:

"<?xml version="1.0" encoding="UTF-8"?>
<response>
  <error>invalid_param</error>
  <error_description>Required parameter is missing: name</error_description>
</response>
"

но я же передал параметр Name, что он от меня хочет?

Отредактировано dlpv (2015-05-05 16:36)

Неактивен

 

#7 2015-05-05 17:40

dlpv
Пользователь

Re: Обновление остатков и цен через API

все заработало, нужно было указать так
objXMLHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

теперь непонятно, почему при создании товара не проставляются количество и цена? Тип валюты указываю.
ПОЧЕМУ при передаче параметров currency=UAH&count=1&price=2, валюта прописывается, а цена и количество нет?

Зато методом shop.product.update все прекрасно прописывается! Мда, чудеса. Слов нет. Ну хоть через пень-колоду работает и ладно.

Отредактировано dlpv (2015-05-05 18:08)

Неактивен

 

#8 2015-05-05 18:56

Vladislav
Webasyst

Re: Обновление остатков и цен через API

цена/валюта/количество передаются в skus:
&skus[0][currency]=UAH&skus[0][price]=2&skus[0][stock][0]=200

Неактивен

 

#9 2015-05-06 09:39

dlpv
Пользователь

Re: Обновление остатков и цен через API

спасибо за подсказку, все заработало.
НО почему этого всего нет в документации? Откуда брать информацию, или только путем научного тыка?

Неактивен

 

Board footer

Powered by PunBB