Куцый набор методов API у Webasyst

Даже не знаю вопрос это или просто мысли вслух....

Задумал я увязать бухпрограмму, в которой ведется весь учет товаров, с Webasyst. Цель - все делать только в бухгалтерской программе (создание новых товаров, учет остатков, переоценка, формирование деклараций для перевозчика, отправка СМС, обработка заказов), а интернет-магазину оставить только функцию витрины.

Первая задача - вычитать список новых заказов и вывести отчет в бухпрограмме. Нет в API такого метода, чтобы найти только новые заказы. Вернее есть метод shop.order.search, но документация так написана, что непонятно, что именно передавать в параметр hash для поиска. Допустим, я смог каким то образом (например прямым запросом к БД) получить список Id новых заказов. Теперь нужно по каждому заказу вытащить информацию. Есть метод shop.order.getInfo, но он возвращает что угодно, только не список заказанных товаров. В общем как работать через API, если нужных методов очень мало реализовано? Очень не хочется строить все на запросах к базе.

Если кому эта тема интересна, могу подробнее описать идею интеграции Webasyst с любой бухгалтерской программой.

10 ответов

  • 3
    Алексей Webasyst 24 июня 2015 07:47 #

    1. Если посмотреть в описании метода hash -строка для формирования коллекции заказов. Используется в классе shopOrdersCollection. Соответственно в классе shopOrdersCollection куча примеров. Например выдержка:
    'search/state_id=new||processing&total>=100' — search by several fields of shop_order table; multiple conditions are separated by ampersand &
    * 'search/params.shipping_id=64' — search by values stored in table shop_order_params
    * 'search/items.service_id=2' — search by values stored in table shop_order_items
    * 'search/items.product_id=10' - search orders related to specific (id=10) product

    2. shop.order.getInfo возвращает JSON строку и помимо информации о заказе в items хранится следующая информация:

    "items": { "18": { "id": "18", "order_id": "9", "name": "GoPro HD HERO3", "product_id": "87", "sku_id": "183", "sku_code": "", "type": "product", "service_id": null, "service_variant_id": null, "price": "14799.0000", "quantity": "1", "parent_id": null, "stock_id": "3", "purchase_price": "0.0000", "image_id": "165", "sku_image_id": "0", "ext": "jpg", "file_name": "", "file_size": "0" }}

    Где "product_id": "87" заказанный товар

    Если вам не хватает каких-то методов вы всегда можете написать предложение по их добавлению.

    • +1
      Дмитрий Дмитрий 24 июня 2015 15:09 #

      В xml ответе я такого не увидел. Нет там списка товаров. Или может не доглядел.

  • 0

    Реальность жизни такова, что имеющимся API к магазину никто не пользуется. Поскольку им никто не пользуется (и не пинает вебасист), его никто не дорабатывает. Поскольку его никто не дорабатывает, он остаётся в плачевном состоянии. А поскольку он в плачевном состоянии, им никто не пользуется...

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

  • 2

    Когда-то пробовал написал плагин выборочной синхронизации двух магазинов на вэбасист.

    Так же начал использовать АПИ - в итоге просто закинул эту идею т.к. АПИ действительно очень куцое.

    В итоге - синхронизировать 2 магазина по АПИ невозможно.

    Основная проблема - характеристики... С ними там вообще беда...

  • 2
    Alexej Hammer 28 июня 2015 11:56 #

    А что делать тем кто хочет написать мобильное приложение? Нет в api метода для авторизации. Например создать заказ, как отправить shop.order.add ->contact_id если его невозможно узнать через api, потому что пользователь не может авторизоваться. Тоесть нужно в приложении самому как-то создавать авторизацию, создавая на сервере отдельный php скрипт со своим api. Короче допиливать и допиливать.
    Если есть уже решения, не сочтите за наглость, дайте ссылку.

  • 1

    Сейчас пишем тоже мобильное приложение - будет работать через свой плагин т.к. то что имеется - ......

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

    Для начала сделайте в апи набор всех функций для управления контактами, заказами, товарами (в полном объеме) - вот тогда им и начнут пользоваться.

    А свои плагины пишут не от вредности.

  • 1

    Воу-воу-воу. Исходный код и доступ к гитхабу у всех есть. Пул-реквесты благодарно принимаются. Не знаю политики, которой противоречат пул-реквесты.

    shop/api/v100500 не затрётся обновлением магазина. Не знаю политики, которой противоречит складывание своих классов в shop/api/v100500.

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

  • 1
    Alexej Hammer 29 июня 2015 13:50 #

    Вот ещё проблема. api выводит по методу shop.product.images.getList

    ссылки только на 200x0.jp g эскизы, а если мне в мобильном приложении требуется увеличить картинку, пользователь то покрупнее рассмотреть товар желает. Увеличивать 200px на весь экран мобилки?

    Как получить ссылки на эскизы 750х0.jp g используя этот метод?

Добавить ответ

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