Проект на symfony
Исходные условия:
Наш магазин работает на платформе https://www.bigcommerce.com/ . Онаимеет закрытый исходный код и не позволяет работать с PHP or DB. Для доработки
мы создали отдельный сайт, который работает с их API. Сайт на symphony 3.2.
Основная задача:
На данном этапе возникла потребность поддерживать inventory.Есть csv файл, который содержит актуальную информацию. Этот файл будет
получатся с другого сайта. Поля в этом файле – upc and stock. Ссылке пока нет, поэтмусделать надо сделать заглушку для получения файла по ссылке. Надо сделать
скрипт, который будет обходить записи из этого файла и синхронизировать с
магазином через API.
Описание:
Не все продукты которые находятся в csv файле имеются вмагазине. В магазине есть категория (API id – 323), продукты с которой надо будетобходить. То есть надо будет выбрать все продукты из категории и сравнить inventory.
Если inventory в csv отличается – значит надо обновить. Но здесь есть важная
деталь. Продукт может иметь 1 или более SKUs. И inventory имеет не продукт, а SKU.
Соответственно, надо будет получать SKUs каждого продукта и с ним работать.
Документация по SKU - https://developer.bigcommerce.com/api/v2/#skus. Поле для идентификации SKU – upc. Оно есть и в csv файле. Inventory содержится
в поле inventory_level, который и надо обновлять из ‘stock’ в csv файле.
Библиотека для работы с API - https://github.com/bigcommerce/bigcommerce-api-php. Но в ней неправильно работает метод по обновлении SKU. Надо будет
использовать внутренний метод - updateResource.API endpoint - /products/{product_id}/skus/{id}. Можно посмотреть в документации.
При ошибки обновления – подождать некоторое время ипопробовать снова. Если и в этот раз не выйдет, синхронизацию остановить и
отослать письмо на пошту с соответствующим сообщением.
Еще один важный момент. API имеет ratelimits - https://developer.bigcommerce.com/api/#rate-limits-oauth. Это надо учитывать.
На выходе надо контроллери файл, который можно будет запускать из cli. Файл нужно, потому что он будет запускатся через cron.
Требования к работе:
Надо чистый качественный симонический код. Нужен человек сопытом, который выполнит работу без архитектурных ошибок. Вместе с заявками
оставляйте ссылки на на github или примеры с кодом.