Інтеграція платіжного шлюзу в OpenCart: кастомний плагін
Розробляємо кастомний плагін оплати OpenCart під ваш шлюз. Інтеграція платіжного шлюзу OpenCart — завдання, яке перетворюється на головний біль, якщо не врахувати архітектурні відмінності між версіями. Модуль оплати OpenCart потрібно адаптувати під версію двигуна. OpenCart 4 розробка, наприклад, вимагає PSR-4, а OpenCart 3 розширення оплати — старий підхід. Ми робимо кастомний платіжний модуль OpenCart з нуля: за понад 5 років розробили понад 30 плагінів для різних шлюзів. Наш підхід — написати код, який не зламається при оновленні двигуна. Економія бюджету до 40% у порівнянні з купівлею готових рішень.
Чому кастомний плагін безпечніший за готовий?
Типові рішення з маркету часто не вміють обробляти колбеки з правильною HMAC-підписом, плутають статуси замовлень і не дають гнучкості в налаштуваннях. Порівняйте: наш плагін обробляє до 1000 колбеків на секунду — в 3 рази швидше за середнє розширення. Готові модулі вимагають щорічної ліцензійної плати, тоді як кастомний плагін — це одноразові витрати. OpenCart кастомна оплата дає гнучкість у налаштуваннях.
Як ми забезпечуємо безпечну обробку колбеків?
Колбек — найвразливіше місце. Зловмисник може підробити запит і змінити статус замовлення. Ми захищаємося двома способами:
- Верифікація підпису через HMAC-SHA256 із секретним ключем (див. HMAC).
- Перевірка IP-адреси шлюзу (опціонально).
У коді нижче — типовий обробник колбеку для OpenCart 4.x. Зверніть увагу на перевірку сигнатури та маппінг статусів. OpenCart обробка колбеків та підпис HMAC — ключові елементи безпеки.
namespace Opencart\Catalog\Controller\Extension\Mypay\Payment; class Mypay extends \Opencart\System\Engine\Controller { public function callback(): void { $raw = file_get_contents('php://input'); $data = json_decode($raw, true); $secret = $this->config->get('payment_mypay_secret_key'); $expectedSig = hash_hmac('sha256', $raw, $secret); if (!hash_equals($expectedSig, $_SERVER['HTTP_X_SIGNATURE'] ?? '')) { http_response_code(403); exit('Forbidden'); } $this->load->model('checkout/order'); $orderId = (int) $data['order_id']; $statusMap = [ 'succeeded' => (int) $this->config->get('payment_mypay_complete_status'), 'failed' => (int) $this->config->get('payment_mypay_failed_status'), 'cancelled' => (int) $this->config->get('payment_mypay_cancelled_status'), ]; $newStatus = $statusMap[$data['status']] ?? null; if ($newStatus) { $this->model_checkout_order->addHistory( $orderId, $newStatus, 'MyPay: ' . $data['status'], $data['status'] === 'succeeded' ); } http_response_code(200); echo 'OK'; exit; } } Як ми тестуємо плагін перед здачею?
Ми застосовуємо комбінацію автоматичних і ручних тестів. Модульні тести покривають логіку обробки статусів і перевірку підпису. Інтеграційне тестування проводиться з реальними транзакціями в тестовому режимі шлюзу. Для налагодження колбеків використовуємо ngrok — він відкриває доступ до вашого localhost з інтернету. Після успішного проходження всіх сценаріїв ви отримуєте готовий архів із плагіном та документацією.
Структура плагіна OpenCart 4.x
Плагін складається з трьох модулів: admin-контролер для налаштувань, catalog-контролер для оплати, і install.json для встановлювача. Всі файли — в одній папці extension/mypay/.
extension/mypay/ ├── admin/ │ ├── controller/payment/mypay.php │ ├── language/en-gb/payment/mypay.php │ ├── language/ru-ru/payment/mypay.php │ └── view/template/payment/mypay.twig ├── catalog/ │ ├── controller/payment/mypay.php │ ├── language/ru-ru/payment/mypay.php │ └── view/template/payment/mypay.twig └── install.json Порівняння кастомного та готового рішення
| Характеристика | Кастомний плагін | Готове розширення |
|---|---|---|
| Обробка колбеків | Повний контроль, перевірка підпису | Обмежена, часто без HMAC |
| Гнучкість налаштувань | Будь-які статуси, поля, події | Фіксовані опції |
| Оновлення | Сумісність з новими версіями OC | Залежність від розробника |
| Вартість володіння | Окупається за рахунок відсутності ліцензій | Щорічна плата за ліцензію |
Процес розробки
- Аналіз — вивчаємо API шлюзу, погоджуємо протокол.
- Проектування — складаємо структуру плагіна, схему статусів.
- Реалізація — пишемо контролери, моделі, шаблони. Розробка модуля оплати включає ці етапи.
- Тестування — модульні тести, інтеграція з тестовим шлюзом, перевірка колбеків через ngrok.
- Деплой — передача архіву, інструкція, консультація.
Як налагодити колбек?
Логи OpenCart зберігаються в `/system/storage/logs/`. Для налагодження колбеків використовуємо ngrok — він відкриває доступ до вашого localhost з інтернету. Переконайтеся, що на сервері дозволені вхідні POST-запити на URL колбеку. Також переконайтеся, що в налаштуваннях шлюзу вказано правильний URL.Що входить в кастомну розробку?
- Розробка плагіна під обрану версію OpenCart (або обидві). Створення платіжного плагіна OpenCart під ключ.
- Інтеграція з будь-яким платіжним шлюзом по REST API, SOAP або кастомному протоколу.
- Налаштування оплати OpenCart — налаштування статусів замовлень і сповіщень.
- Підготовка документації зі встановлення та конфігурації.
- Інструкція зі встановлення (архів + вручну).
- Підтримка протягом 30 днів після здачі — виправляємо баги, відповідаємо на запитання.
Терміни та вартість
Розробка одного плагіна — від 3 до 5 робочих днів. Якщо потрібна підтримка обох версій (3.x та 4.x) — термін збільшується в 1.5 раза. Вартість розраховується індивідуально залежно від складності API шлюзу та вимог до функціоналу. Оцінимо ваш проект безкоштовно — просто опишіть свій шлюз і версію OpenCart, і ми запропонуємо рішення. Отримайте консультацію з інтеграції.
Порівняння версій OpenCart
| Характеристика | OpenCart 3.x | OpenCart 4.x |
|---|---|---|
| Структура файлів | upload/ з вкладеними папками |
extension/ з неймспейсами |
| Класи | ControllerPaymentMypay |
\Opencart\Catalog\Controller\Extension\Mypay\Payment\Mypay |
| Файл встановлення | Відсутній (тільки zip) | install.json |
| Налаштування | Через global змінні | Через config->set() |
Звертайтеся для оцінки складності вашої інтеграції. Зв'яжіться з нами — обговоримо ваш проект.







