
PayTR для OpenCart — оплата картой и рассрочка (taksit) через PayTR iFrame API
Приём оплаты картой в Турции через PayTR iFrame API для OpenCart 4, 3 и 2.3: форма PayTR на странице магазина, заказ становится оплаченным только по подписанному уведомлению PayTR или ответу Status Inquiry, сверка суммы и валюты, TRY / EUR / USD / GBP / RUB. Pro — таблица рассрочки (taksit) в карточке товара, «только единовременно» для категорий и товаров, проценты рассрочки строкой заказа, журнал платежей с повторной проверкой и возвратами. Лицензия навсегда.
- Совместимость
- OpenCart 4.0.2 – 4.1.x, 3.0.x и 2.3.0.2 (проверено на 4.1.0.3, 4.0.2.3 с драйвером pdo, 3.0.5.0 на PHP 8.2 и 2.3.0.2 на PHP 7.0) · штатный чекаут · языки модуля English и Türkçe · валюты TRY, EUR, USD, GBP, RUB
- Версия
-
v1.0.0 (OpenCart 4)
v1.0.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3) - Лицензия
- один сайт, навсегда
- Триал
- 7 дней, без карты, один на сайт
Что есть во Free,
а что даёт Pro
Бесплатная версия работает без ограничения по времени. Pro добавляет остальные функции из таблицы.

Триал стартует, когда вы попросите
Свежая установка — бесплатная версия, ничего не включается само. Кнопка «Попробовать Pro 7 дней» → e-mail → ключ сразу в окне и письмом.

Один ключ — один сайт
Переносите магазин — отвяжите лицензию на старом домене и активируйте на новом сами. Для студий — ключи на 5, 25 сайтов или без ограничений.
Технические требования
OpenCart 4.0.2 – 4.1.x, 3.0.x или 2.3.0.2; PHP 7.0+ (для OpenCart 4 — версия PHP, которую требует ваш OpenCart), расширения curl и openssl.
Мерчант-аккаунт PayTR (Mağaza No, Mağaza Parola, Mağaza Gizli Anahtar) с включённым iFrame API.
Витрина, доступная из интернета, — чтобы PayTR мог отправить уведомление на Notification URL; желательно с SSL.
Вместе с PayTR для OpenCart покупают
4 модуля одним заказом — на 40% дешевле, чем по отдельности


Nova Poshta Premium — модуль Новая Почта для OpenCart 2.3, 3.x и 4.x

LiqPay — оплата картой для OpenCart 2.3, 3.x и 4.x

Telegram-уведомления и Viber/SMS покупателям для OpenCart
Полное описание модуля
PayTR для OpenCart подключает турецкий платёжный сервис PayTR через iFrame API: покупатель оплачивает картой в форме PayTR прямо на странице магазина, с 3D Secure и рассрочкой (taksit), а заказ становится оплаченным только тогда, когда PayTR подтвердил это подписанным уведомлением. Один модуль для OpenCart 4, 3 и 2.3, языки English и Türkçe.
Честно о тестировании. У нас нет мерчант-аккаунта PayTR, поэтому настоящих платежей через PayTR мы не проводили. Модуль написан по официальной документации dev.paytr.com (формулы подписей, поля запросов и ответов) и проверен в чистых магазинах на OpenCart 4.1.0.3, 4.0.2.3 (драйвер pdo), 3.0.5.0 и 2.3.0.2 на PHP 7.0 с тестовым сервером, который проверяет подписи так, как описано в документации PayTR. Проверены настоящие оформления на витрине с купоном, доставкой, опциями товара, во второй валюте (EUR) и на турецком языке, отказ карты, повторные и поддельные уведомления, возврат до уведомления, двойная оплата, изменение корзины во время оплаты, возврат средств из админки — с проверкой заказа и строк итогов в базе. Перед запуском проведите несколько платежей в тестовом режиме PayTR на своём аккаунте — для этого есть 7-дневный триал Pro.
Магазин на WooCommerce? Для него есть отдельный плагин PayTR для WooCommerce: та же форма PayTR (iFrame API) на классическом и блочном чекауте, подписанные уведомления и Status Inquiry, а в Pro — таблица рассрочки на товаре и возвраты из карточки заказа.
⚠ Один Notification URL на аккаунт PayTR
PayTR отправляет результат каждой оплаты на адрес, указанный в панели: Mağaza Paneli → Ayarlar → Bildirim URL. Это одно поле в настройках магазина. Если тем же аккаунтом PayTR уже пользуется другой сайт или другой модуль PayTR, уведомления будут приходить только на один из адресов, и часть заказов не получит подтверждение автоматически.
- Надёжнее всего — отдельный аккаунт PayTR на каждый магазин; если сомневаетесь, уточните в поддержке PayTR.
- Наш модуль на уведомления с чужими merchant_oid отвечает «OK» и ничего не меняет, поэтому он не мешает другому сайту, если адрес указан на наш.
- Свои заказы модуль дополнительно проверяет через Status Inquiry, когда покупатель возвращается в магазин после оплаты, а в журнале (Pro) есть кнопка «Проверить ещё раз».
Что видит покупатель
- Способ оплаты «Kredi / banka kartı (PayTR)» на чекауте — в турецких лирах и в валютах, которые PayTR включил магазину (EUR, USD, GBP, RUB). В других валютах способ не показывается.
- Форму PayTR на странице магазина: после «Оплатить картой» открывается страница «Kartla ödeme» с формой PayTR внутри (iFrame), высота подстраивается под форму. В тестовом режиме над формой — предупреждение, что деньги не списываются.
- Возврат в магазин: после оплаты — страница «Спасибо», после отказа — чекаут с той же корзиной, и можно сразу нажать «Оплатить» ещё раз.
- Таблицу рассрочки (Pro) в карточке товара: вкладкой рядом с описанием или под кнопкой «Купить», ежемесячный платёж и сумма для каждой программы карт.
Что получает админ
- Настройки: Mağaza No, Mağaza Parola (key) и Mağaza Gizli Anahtar (salt) — ключ и соль хранятся зашифрованными и после сохранения не показываются; кнопка «Проверить данные» делает подписанный запрос к PayTR с данными на экране.
- Готовый Notification URL для панели PayTR — с https, если витрина на SSL.
- Рассрочка: все варианты, до N платежей (2–12) или только единовременно; тестовый режим; язык формы; время на оплату; геозона; статусы для оплаты, проверки, отказа и возврата.
- Историю в каждом заказе: сумма, количество платежей, merchant_oid и откуда пришло подтверждение (уведомление или Status Inquiry); при отказе — причина от PayTR.
- Журнал отладки
cc_paytr.logбез ключей, соли и подписей.
Защита от ошибок оплаты
- Оплачено — только по PayTR. Переходы браузера ничего не отмечают: статус меняет только уведомление с правильной подписью HMAC-SHA256 или ответ Status Inquiry.
- Сверка суммы. Сумма попытки, валюта, собранная сумма и текущая сумма заказа должны совпадать; иначе статус «на проверку» с объяснением, что именно не так.
- Повторы без дублей. PayTR повторяет уведомление, пока не получит «OK»: модуль учитывает только первое и отвечает ровно «OK», без единого лишнего символа.
- Двойная оплата не теряется. Если покупатель оплатил тот же заказ дважды (две вкладки), статус не меняется, а в истории появляется запись о втором платеже — чтобы вы вернули его в панели PayTR.
- Кнопка «Назад» после оплаты не отправит тот же заказ в PayTR ещё раз.
Pro: таблица рассрочки, проценты в заказе, журнал и возвраты
- Таблица рассрочки (taksit tablosu) в карточке товара: World, Bonus, Axess, Maximum, CardFinans, Paraf, Advantage, Combo — ставки из сервиса PayTR Installment Rates, обновление раз в сутки. Показывать суммы с процентами (платит покупатель) или без них (peşin fiyatına).
- Только единовременно для выбранных категорий (вместе с подкатегориями) и товаров: PayTR получает no_installment=1, таблица не показывается.
- Проценты рассрочки в заказе: разница между собранной суммой и суммой товаров добавляется строкой «Installment interest (N installments)» один раз — итог заказа равен тому, что заплатил покупатель.
- Журнал платежей: получено, проценты, рассрочка, test / live, merchant_oid, возвращено.
- Возвраты из админки: полный или частичный, несколько раз подряд; отрицательные, нечисловые и превышающие остаток суммы отклоняются, статус «Возвращён» ставится только после полного возврата.
Как это работает шаг за шагом
- Покупатель выбирает «Kredi / banka kartı (PayTR)» и нажимает «Оплатить картой».
- Модуль создаёт попытку оплаты со своим merchant_oid и получает в PayTR токен формы (iFrame API, шаг 1) с суммой заказа, корзиной, валютой и настройками рассрочки.
- Покупатель оплачивает в форме PayTR на странице магазина; 3D Secure и выбор количества платежей — в форме PayTR.
- PayTR отправляет результат на Notification URL (шаг 2). Модуль проверяет подпись, сверяет сумму и валюту, меняет статус заказа и отвечает «OK».
- Покупатель возвращается на страницу «Спасибо». Если уведомление ещё не пришло, модуль один раз спрашивает PayTR через Status Inquiry.
Под капотом
- iFrame API PayTR: get-token с подписью HMAC-SHA256 по документации dev.paytr.com, уведомления с проверкой hash, Status Inquiry (durum-sorgu), Refund (iade), Installment Rates (taksit-oranlari).
- Отдельные таблицы модуля для попыток оплаты, платежей и ставок; запись настроек по ключу, без перезаписи всей группы.
- Без правок ядра и без OCMOD: штатное платёжное расширение OpenCart и событие на странице товара для таблицы рассрочки.
- После удаления модуля таблицы платежей остаются — журнал и возвраты доступны после повторной установки.
Установка
- OpenCart 4 и 3: «Расширения → Установщик» → загрузите zip для своей версии. OpenCart 2.3: скопируйте содержимое папки
upload/из архива в корень магазина. - «Расширения → Оплата» → PayTR (CatCode) → установить → редактировать.
- Введите Mağaza No, Mağaza Parola и Mağaza Gizli Anahtar из панели PayTR (Destek & Kurulum → Entegrasyon Bilgileri), нажмите «Проверить данные».
- Скопируйте Notification URL из настроек модуля в панель PayTR: Ayarlar → Bildirim URL → Değiştir.
- Включите тестовый режим, проведите тестовый платёж, затем выключите его.
Версии
- 1.0.0 — первый выпуск: iFrame API, Notification URL, Status Inquiry, сверка суммы и валюты, таблица рассрочки, «только единовременно», проценты рассрочки в заказе, журнал и возвраты; OpenCart 4, 3 и 2.3; English и Türkçe.
Вопросы
о модуле
Не нашли ответ? Напишите в Telegram — ответим в течение рабочего дня.
У меня один аккаунт PayTR на несколько сайтов. Подойдёт ли модуль?
Осторожно. В панели PayTR в настройках магазина есть одно поле «Bildirim URL» (Notification URL), поэтому уведомления об оплатах приходят только на один адрес. Если на том же аккаунте уже работает другой сайт или другой модуль PayTR, часть уведомлений уйдёт не туда. Наш модуль на чужие уведомления отвечает «OK» и ничего не меняет, а свои заказы дополнительно проверяет через Status Inquiry, когда покупатель возвращается в магазин. Надёжно — отдельный аккаунт PayTR на каждый магазин; если сомневаетесь, уточните в поддержке PayTR.
Что будет, если покупатель закрыл вкладку сразу после оплаты?
Заказ всё равно станет оплаченным, как только PayTR отправит уведомление на Notification URL: модуль проверяет его подпись и сумму. Если покупатель вернулся в магазин раньше уведомления, модуль сам спрашивает PayTR через Status Inquiry. До ответа PayTR заказ имеет статус 0 (в списке «Отсутствующие заказы»), как у PayPal для OpenCart.
Можно ли выдать заказ за оплаченный, просто открыв страницу «Спасибо»?
Нет. Страница возврата не отмечает оплату: оплаченным заказ делает только подписанное уведомление PayTR или ответ Status Inquiry, и оба сверяются с суммой и валютой попытки. Мы проверили поддельное уведомление и поддельную ссылку возврата — заказ не изменился.
Покупатель изменил корзину в другой вкладке, пока была открыта форма оплаты. Что тогда?
Модуль сверяет оплаченную сумму с текущей суммой заказа. Если они не совпадают, заказ получает статус «на проверку» с объяснением в истории, а не «оплачен» — чтобы вы не отгрузили больше, чем получили.
Как считается таблица рассрочки?
По ставкам из сервиса PayTR Installment Rates (кешируются на сутки) от цены товара с налогом, только для цен в турецких лирах. Можно показывать суммы с процентами (платит покупатель) или без них (peşin fiyatına, платит магазин). Таблица ориентировочная: точную сумму PayTR показывает в своей форме перед подтверждением, и это написано под таблицей.
Можно ли принять оплату в евро или долларах?
Да, если PayTR включил вашему магазину эти валюты: модуль передаёт валюту заказа (EUR, USD, GBP, RUB) и сумму в ней. В валютах, которые PayTR не принимает, способ оплаты не показывается.
Как протестировать до запуска?
Включите «Тестовый режим» — модуль передаст test_mode=1, и PayTR проведёт тестовый платёж без списания. Для этого нужны ваши данные из панели PayTR (Mağaza No, Mağaza Parola, Mağaza Gizli Anahtar).
Что будет, когда закончится триал Pro?
Оплата картой, уведомления, Status Inquiry и сверка работают дальше — это Free. Таблица рассрочки исчезает из карточки товара, а журнал и возвраты из админки становятся недоступны до покупки лицензии. Лицензия для OpenCart покупается один раз и действует навсегда.
Пока нет ни одного отзыва. Будьте первым.
Пока вопросов нет. Спроси — мы ответим в течение 24 часов.
Не тот вариант, что искали?
Делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.
Заказать кастомный модуль
Покупка модуля
—



