Як передавати замовлення з OpenCart 3 в Elbuz готовим модулем

16 хв

Модуль Elbuz API Sync на сайті OpenCart 3 сам передає замовлення в Elbuz: нове — одразу після оформлення, наявне — після кожної зміни статусу. Вони стають документами «Замовлення покупця» без ручного перенесення.

Коли це знадобиться:

  • Менеджер має бачити замовлення в Elbuz одразу — воно приходить за кілька секунд, без розкладу.
  • Покупець оплатив на сайті — платіжний модуль змінює статус, і замовлення в Elbuz переходить у «Оплачено».
  • Elbuz тимчасово недоступний — оформлення на сайті не ламається, замовлення чекає в черзі модуля й доходить пізніше.
  • Замовлення досі забирає Elbuz Tunnel — модуль продовжує ті самі документи, дублів не буде.

З чого почати: скачайте й встановіть модуль, потім видайте йому ключ в Elbuz.

Що вміє модуль

Де це і хто має доступ

Скачати
elbuz_api_sync.ocmod.zip — OpenCart 3.0.x, PHP 7.1+ з curl
Модуль на сайті
Розширення → Розширення → Модулі → «Elbuz: синхронізація замовлень»
Ключ в Elbuz
Кабінет → Налаштування системи → «Інші налаштування» → «API та токени доступу»
Право доступу
співробітнику ключа — вікно замовлень і кнопка «Додати» в ньому
Де видно замовлення
вікно «Замовлення», джерело «API: назва ключа»

Модуль передає лише замовлення. Каталог він не передає: товари з сайту в Elbuz переносить Elbuz Tunnel.

Як встановити модуль на сайт

  1. Скачайте архів elbuz_api_sync.ocmod.zip.
  2. В адмінці OpenCart відкрийте «Розширення → Встановлення розширень» і завантажте архів кнопкою «Завантажити». Без доступу до інсталятора скопіюйте вміст папки upload з архіву в корінь сайту.
  3. Відкрийте «Розширення → Розширення», у списку типів оберіть «Модулі».
  4. У рядку «Elbuz: синхронізація замовлень» натисніть «Встановити» (зелений плюс), потім «Редагувати» (олівець).

Після встановлення модуль вимкнений і нічого не відправляє, доки ви не заповните підключення й не збережете його з «Статус» — «Увімкнено». Видалення модуля кнопкою «Видалити» прибирає його чергу й журнал.

Як видати модулю ключ в Elbuz

Модулю потрібен окремий ключ API v2. Його назва стане джерелом замовлень у списку, і за ключем Elbuz упізнає вже завантажені замовлення.

  1. В Elbuz відкрийте «API та токени доступу» й натисніть «+».
  2. У полі «Користувач» напишіть назву магазину, наприклад site_opencart.
  3. У «Від імені співробітника» оберіть співробітника, якому відкрите вікно замовлень і дозволена кнопка «Додати».
  4. Зніміть «Тільки для читання».
  5. Перемкніть «Зміни даних» на «Робити самому». Перемкнути може лише група «Управління».
  6. У «Запобіжник: змін на годину» поставте число з запасом: кожна відправка модуля — одна зміна, навіть коли в ній 100 замовлень.
  7. Збережіть і скопіюйте ключ — він починається з elbz_.
Картка ключа доступу site_opencart у вікні «Доступ до API Elbuz»
1Користувач
2Зміни даних: Робити самому
3Запобіжник: змін на годину
4Тільки для читання
  1. Користувач — назва ключа site_opencart; вона ж стає джерелом замовлень («API: site_opencart»).
  2. Зміни даних — режим «Робити самому»: зміни через ключ виконуються одразу, без підтвердження в «Пульсі».
  3. Запобіжник — ліміт 1000 змін на годину; після перевищення ключ сам повертається в режим «Питати».
  4. Тільки для читання — позначка знята, тож ключ може створювати й змінювати замовлення.

Якщо лишити «Зміни даних» у режимі «Питати» або ключ перевищить запобіжник, кожна відправка чекатиме, доки її приймуть у «Пульсі». У журналі модуля такі замовлення стоять із результатом «чекає підтвердження в Elbuz», у списку замовлень Elbuz їх немає.

Один ключ — один сайт. Однакові номери замовлень двох сайтів під одним ключем зіллються в один документ. Загальні правила ключів — у статті API v2.

Як підключити модуль до Elbuz

Де: модуль «Elbuz: синхронізація замовлень» → вкладка «Підключення».

  1. «Статус» — «Увімкнено».
  2. «Адреса API Elbuz» — адреса вашого акаунта з /api/v2 у кінці: https://ваш-домен.elbuz.com/api/v2. Адреса без https:// чи http:// не збережеться: «Адреса API має починатися з https:// або http://».
  3. «Ключ API» — ключ, скопійований в Elbuz.
  4. «ID шаблону Elbuz» залиште порожнім. Він потрібен лише для переходу з Elbuz Tunnel.
  5. Натисніть «Перевірити з'єднання». Відповідь «З'єднання є. Отримано статусів документа: N, статусів оплати: M.» означає, що адреса й ключ правильні, а статуси Elbuz з'явилися на вкладці «Статуси».
  6. Збережіть модуль синьою кнопкою з дискетою вгорі праворуч.
Вкладка «Підключення» модуля Elbuz: синхронізація замовлень в адмінці OpenCart 3 після перевірки з'єднання
1Статус
2Адреса API Elbuz
3Ключ API
4ID шаблону Elbuz
5Перевірити з'єднання
6Зберегти
  1. Статус — «Увімкнено»: без цього модуль нічого не відправляє.
  2. Адреса API Elbuz — адреса акаунта з /api/v2 у кінці.
  3. Ключ API — ключ із вікна «API та токени доступу», показується крапками.
  4. ID шаблону Elbuz — порожнє; заповнюють лише при переході з Elbuz Tunnel.
  5. Перевірити з'єднання — зверху зелене повідомлення з кількістю отриманих статусів Elbuz.
  6. Зберегти — без збереження модуль не почне відправляти замовлення.

«Перевірити з'єднання» бере адресу й ключ прямо з форми, без збереження. Відправляти замовлення модуль почне лише після збереження. Помилка перевірки виглядає як «Немає з'єднання з Elbuz: …» з причиною — розбір у таблиці нижче.

Як зіставити статуси сайту зі статусами Elbuz

Де: вкладка «Статуси». Для кожного статусу OpenCart оберіть «Статус документа в Elbuz» і «Статус оплати в Elbuz». Список статусів Elbuz з'являється після «Перевірити з'єднання».

Статус на сайтіСтатус документа в ElbuzСтатус оплати в Elbuz
Pending (Очікування)НовийЧекання
Processing (Обробка), оплаченеОплаченоОплачено
Canceled (Скасовано)Скасовано— не змінювати —

В OpenCart окремого статусу оплати немає: оплату показує той самий статус замовлення. Тому для статусів, у які сайт переводить оплачені замовлення, оберіть «Оплачено» в колонці оплати.

«— не змінювати —» означає, що цей статус сайту не міняє відповідний статус в Elbuz. Нове замовлення без зіставлення отримає статус за замовчуванням, «Новий». Якщо заповнено «ID шаблону Elbuz», для порожніх рядків діє зіставлення статусів шаблону.

Вкладка «Статуси» модуля: статуси OpenCart зіставлені зі статусами документа й оплати Elbuz
1Обробка → Оплачено
2Очікування → Новий
3Скасовано: оплату не змінювати
  1. Обробка — сюди сайт переводить оплачене замовлення, тому в обох колонках «Оплачено».
  2. Очікування — нове замовлення: статус «Новий», оплата «Чекання».
  3. Скасовано — статус документа «Скасовано», статус оплати лишається, як був («— не змінювати —»).

Модуль відправляє замовлення щоразу, коли змінюється його статус. Чи перепише новий статус сайту той, що поставив менеджер в Elbuz, вирішують загальні правила: хто кого перезаписує. Позиції записуються лише при створенні документа.

Як відправити замовлення, які вже є на сайті

Нові замовлення модуль відправляє сам. Ті, що були на сайті до встановлення, відправте вручну.

Де: вкладка «Відправка».

  1. У «Замовлення змінені з» оберіть дату. За замовчуванням — 30 днів тому.
  2. Натисніть «Відправити». Модуль бере всі замовлення, змінені з цієї дати, крім незавершених кошиків без статусу, і шле пакетами по 100.
  3. Не закривайте сторінку, доки біля кнопки не з'явиться «лишилось у черзі: 0». Рядок показує «Відправлено: N, помилок: M, лишилось у черзі: K».

Повторна відправка тих самих замовлень дублів не створює: вони оновлюються в уже створених документах. Тією самою кнопкою доганяють замовлення після збою — оберіть дату, з якої вони не дійшли.

Посилання для cron

Під кнопкою стоїть «Посилання для cron». Додайте його в планувальник хостингу на запуск раз на 5–15 хвилин, наприклад:

*/10 * * * * curl -s "https://ваш-сайт/index.php?route=extension/module/elbuz_api_sync/cron&key=…" >/dev/null

Cron відправляє те, що не пройшло одразу, — до 1000 замовлень за запуск. Без нього черга йде разом із наступним замовленням сайту: якщо замовлень уночі немає, затримане вчора дійде лише зранку. Посилання без правильного key відповідає 403 і нічого не відправляє.

Вкладка «Відправка» модуля: дата, кнопка «Відправити» й посилання для cron
1Замовлення змінені з
2Відправити
3Посилання для cron
  1. Замовлення змінені з — за замовчуванням 30 днів тому.
  2. Відправити — шле всі замовлення, змінені з цієї дати, пакетами по 100.
  3. Посилання для cron — для планувальника хостингу, раз на 5–15 хвилин; ключ у посиланні свій у кожного сайту.

Як перевірити, що замовлення доходять

  1. Оформіть на сайті тестове замовлення.
  2. У модулі відкрийте вкладку «Журнал». Замовлення має стояти в стані «відправлено» з результатом «створено». У колонці «Документ Elbuz» — ID документа в Elbuz, а не його номер у списку замовлень.
  3. В Elbuz відкрийте вікно «Замовлення». Замовлення стоїть зверху з джерелом «API: назва ключа»; його номер на сайті записаний у документ окремим полем.
  4. Змініть статус замовлення в адмінці OpenCart. У журналі з'явиться «оновлено», в Elbuz — статус за вашою таблицею зіставлення.
Вкладка «Журнал» модуля: замовлення сайту відправлені в Elbuz, створені й оновлені документи
1Номер замовлення на сайті
2Результат
3Документ Elbuz
  1. Замовлення — номер на сайті, посилання відкриває замовлення в OpenCart.
  2. Результат — «створено» для нового документа, «оновлено», коли замовлення вже було в Elbuz.
  3. Документ Elbuz — внутрішній ID документа в Elbuz, не номер замовлення в списку.

Журнал показує 30 останніх замовлень. Жовті рядки ще в черзі, червоні — не відправлені; причина — у колонці «Повідомлення». Номер у колонці «Замовлення» відкриває замовлення в OpenCart.

Список замовлень із джерелом «API: site_opencart»: три замовлення з сайту в Elbuz
135971: оплачено на сайті
235973: нове, не оплачене
  1. 35971 — замовлення, оплачене на сайті: в Elbuz його оплата «Оплачено».
  2. 35973 — нове замовлення: оплата «Чекання».

Що буде, якщо Elbuz не відповів

Оформлення замовлення на сайті модуль не гальмує й не ламає. На відповідь Elbuz він чекає до 5 секунд, а помилку записує в журнал і лишає замовлення в черзі.

Шлях замовлення від сайту до Elbuz: кожна відправка бере поточні дані замовлення, тож повтор не надсилає застарілий статус
прийнявключ у режимі «Питати»422 у даних замовленнянемає зв'язку, ключ,права, лімітнітакЗамовлення оформлено абозмінено його статусМодуль ставить замовлення вчергуі одразу відправляє, чекає до 5секундЩо відповів Elbuz?«відправлено»: «створено» або«оновлено»«відправлено»: «чекаєпідтвердження в Elbuz»заявка в «Пульсі»«не відправлено»: чекає змінистатусуабо кнопки «Відправити»«у черзі»: повтор через 1, 4, 9 …хвилинз наступним замовленням, за cronабо кнопкою30 спроб без успіху?
  • Початок або кінець
  • Дія або результат
  • Розвилка: далі шлях залежить від відповіді
Що сталосяЩо робить модульСтан у журналі
Elbuz прийняв замовленняЗаписує номер документа«відправлено», «створено» або «оновлено»
Ключ у режимі «Питати»Більше не повторює: заявка вже в «Пульсі»«відправлено», «чекає підтвердження в Elbuz»
Elbuz відхилив дані конкретного замовлення (422 з полем orders[…])Зупиняє лише це замовлення, решта пакета йде далі«не відправлено», «помилка»
Немає зв'язку, помилка ключа чи прав, ліміт запитів, інша відповідь 422 (наприклад, шаблон не знайдено)Повторює через 1, 4, 9 … хвилин, найдовша пауза — 12 годин«у черзі», «помилка»
30 невдалих спроб поспільПрипиняє повтори«не відправлено», «помилка»

Замовлення зі станом «не відправлено» піде знову, коли зміниться його статус на сайті або коли ви натиснете «Відправити» з датою, що його охоплює. Усі повтори беруть поточні дані замовлення.

Як перейти з Elbuz Tunnel без дублів

Замовлення, які вже забрав тунель, записані з джерелом його шаблону. Щоб модуль оновлював саме їх, а не заводив нові документи, вкажіть номер цього шаблону.

  1. В Elbuz відкрийте Довідники → Операції → Завантаження даних. Номер шаблону тунелю — в останній колонці списку шаблонів, «ID».
  2. У модулі на вкладці «Підключення» впишіть його в «ID шаблону Elbuz» і збережіть.
  3. Змініть статус одного старого замовлення на сайті. У журналі модуля має бути «оновлено», а не «створено».
  4. У шаблоні тунелю зніміть галочку «Замовлення», щоб замовлення не приходили двома шляхами. Каталог тунель забирає й далі.

З «ID шаблону Elbuz» діє зіставлення статусів шаблону: його кнопки «Статуси замовлення» й «Статуси оплати». Рядок, заповнений на вкладці «Статуси» модуля, важливіший за шаблон. Шаблон має бути видимим співробітнику ключа, інакше відправка поверне 422 з "template_id": "not found".

Сценарії

Новий магазин: замовлення мають з'являтися в Elbuz одразу

Задача: менеджер працює в Elbuz і не має чекати розкладу, щоб побачити замовлення сайту.

Що зробити: окремий ключ у режимі «Робити самому»; у модулі — «Статус» «Увімкнено», адреса, ключ, «Перевірити з'єднання», зіставлення статусів, збереження; «Відправити» з датою початку роботи сайту; посилання для cron у планувальник раз на 10 хвилин.

Що вийде: кожне нове замовлення за кілька секунд стає документом «Замовлення покупця» з джерелом «API: назва ключа», зміна статусу на сайті оновлює той самий документ.

Оплата карткою на сайті має позначатися в Elbuz

Задача: менеджер не повинен звіряти оплати з платіжною системою вручну.

Що зробити: на вкладці «Статуси» для статусу, який ставить платіжний модуль після оплати, оберіть «Оплачено» в обох колонках.

Що вийде: щойно платіжний модуль змінить статус, замовлення в Elbuz отримає статус оплати «Оплачено». Залишок і резерв не зміняться, доки документ не проведено.

Каталог іде тунелем, замовлення — модулем

Задача: тунель роками забирав і каталог, і замовлення; замовлення мають приходити одразу, а не з наступним прогоном.

Що зробити: перехід з тунелю: «ID шаблону Elbuz» шаблону тунелю, перевірка на старому замовленні, потім зняти в шаблоні галочку «Замовлення».

Що вийде: старі замовлення оновлюються в тих самих документах, нові додаються туди ж. Тунель далі оновлює каталог за своїм розкладом.

Що робити, коли замовлення не приходять

Розбір частих проблем
Що ви бачитеЧому такЩо зробити
«Немає з'єднання з Elbuz: HTTP 401 invalid, disabled or expired key»ключ скопійовано не повністю, вимкнено або замінено новимскопіюйте ключ заново з «API та токени доступу», перевірте «Активність» ключа
«Немає з'єднання з Elbuz: HTTP 404» або помилка з'єднанняв адресі немає /api/v2 або помилка в доменіадреса має бути https://ваш-домен.elbuz.com/api/v2
У журналі «HTTP 403 read-only key»у ключа стоїть «Тільки для читання»зніміть позначку в ключі; модуль повторить відправку сам
У журналі «HTTP 403 no right for sync»співробітнику ключа заборонена кнопка «Додати» у вікні замовленьдайте право або оберіть іншого співробітника в ключі
У журналі «HTTP 403 IP … is not allowed for this key»у ключа заданий список дозволених IP, і сервера сайту в ньому немаєдодайте IP сервера сайту в ключ
Результат «чекає підтвердження в Elbuz», замовлення в Elbuz немаєключ у режимі «Питати» або перевищив запобіжникприйміть заявки в «Пульсі», перемкніть ключ на «Робити самому», підніміть запобіжник (ключ)
«не відправлено», у «Повідомлення» HTTP 422 і поле orders[…]Elbuz не прийняв дані замовлення, наприклад статус із зіставлення видалено в Elbuzнатисніть «Перевірити з'єднання», заново оберіть статуси, збережіть і відправте замовлення кнопкою «Відправити»
Замовлення довго стоїть «у черзі»Elbuz не відповідав, а cron не налаштованододайте посилання для cron або натисніть «Відправити»
Те саме замовлення двічі в Elbuzйого завантажив тунель, а модуль працює без «ID шаблону Elbuz»; або ключ змінили на іншийперехід з тунелю; не міняйте ключ модуля на інший, лише перевипускайте той самий
Журнал порожній після нового замовленнямодуль вимкнений або налаштування не збережено«Статус» — «Увімкнено», збережіть; «Відправити» без цього відповість «Увімкніть модуль і збережіть налаштування.»

Часті запитання

Модуль передає в Elbuz товари й ціни?

Ні, лише замовлення. Каталог із сайту забирає Elbuz Tunnel, а з Elbuz на сайт — вивантаження через тунель.

У якій валюті приходять суми?

У валюті замовлення, тобто так, як платив покупець. Ціна позиції — з податком, доставка — окремою сумою.

Покупець додав товар у замовлення на сайті — чи зміниться документ?

Ні. Позиції записуються лише при створенні документа; змінений склад переносять у документ вручну. Повторні відправки, поки документ не проведено, оновлюють статус, оплату й спосіб доставки; адреса, суми й покупець лишаються з першої відправки.

Чи працює модуль на OpenCart 2 або 4?

Ні, модуль для OpenCart 3.0.x. Із сайту на OpenCart 2 замовлення забирає тунель.

Чи спише замовлення з модуля залишок?

Ні. Документ створюється непроведеним, а залишок і резерв Elbuz рахує лише за проведеними документами.

Що буде, якщо видалити замовлення на сайті?

Документ в Elbuz лишиться: модуль документи не видаляє. Переведіть замовлення на сайті в статус, зіставлений зі «Скасовано», до видалення, або видаліть документ в Elbuz.

Суміжні теми

Чи була стаття корисною?