Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Підтримка] plata by mono від monobank Polia -


platabymono

Recommended Posts

25.01.2024 в 20:36, sasha0801 сказал:

Нормальний у Вашому розумінні це як?

 

для мене наприклад "не нормальний" три місяці як придбав а він толком не працює, а підтримка жах повний!!! Ще не зустрічав такого на форумі.

 

ось 

image.thumb.png.3c9794d66effbaaf8f30c1dc73f7e2e6.png

 

image.thumb.png.ea7f3c0c47afeebed26ba70147811725.png

 

Вже три місяці від автора чекаю допомогу, набридло вже!

 

а чим вас від моно не влаштовує?

Надіслати
Поділитися на інших сайтах


В 26.01.2024 в 20:28, prizruslan сказав:

 

а чим вас від моно не влаштовує?

Я десь написав, що мене від моно не влаштовує? Я саме ним і користуюсь бо платний "нормальний" на 100% так і не працює( 

 

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...
25.01.2024 в 20:36, sasha0801 сказал:

Нормальний у Вашому розумінні це як?

 

для мене наприклад "не нормальний" три місяці як придбав а він толком не працює, а підтримка жах повний!!! Ще не зустрічав такого на форумі.

 

ось 

У мене таких проблем не було, розробник допоміг вирішити всі питання і був завжди на звязку. 

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Остання версія видає помилку, коли намагаєшся увійти в налаштування.
Клієнт намагався оплатити, але оплата не пройшла. " monopay: Оплата не пройшла, причина — Помилка налаштувань торгівельної точки"
Замовлення скасувалось.
Загублений покупець.

Надіслати
Поділитися на інших сайтах


Доброго дня! 
У мене магазин на ocStore 2.3. Встановлена перша версія модуля. Працює. Потрібно оновитися до останньої версії чи краще не чіпати?

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...
В 12.12.2023 в 20:28, maksym41193 сказав:

так, одне зробили, інше зламали)

замовлення оплачені, але всеодно постійно потрапляють в "зникнені замовлення", чого не було до оновлення

підтримка топ, два тижні тиша) 

Як це у вас вирішилось? 

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

У нас усі платежі на холді.
я так розумію холд – це передоплата
Підкажіть, де регулюється передоплата/ моментальна оплата
Щоб платежі не вставали на холд
Хто-небудь знає?
Розробник мовчить

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Може хтось знає.  Періодично клієнтам виставляються суми на 1-2 грн чомусь. Зробили аналіз,  у всіх рінзі браузери,  ОС на телефонах і компах. Не можу зрозуміти в чому справа ( 

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Доброго дня.

В мене для замовлень в валюті модуль передає в платіжну форму суму в гривнях (сума в валюті помножена на курс), де помножує її ще раз на курс валюти. 
Тобто, замовлеення 10 доларів, а він передає як (10*39,5), а потім в платіжні формі ще раз помножує на 39,5. Мені загалом це подобається, але клієнтам - ні. 
image.png.2ec4228614ae0950693e32a5a147251b.png

 

Замовлення на EUR11.65 Отакий він, жорстокий український бізнес :).

В мене в налаштуваннях Гривня є базовою валютою з курсом 1, а доллар має курс 0,025. Тож десь є помилка в логіці модуля, але де - я не розібрався. Якщо хтось знає як лікувати - підкажіть, будь ласка. 

Змінено користувачем pawana
Надіслати
Поділитися на інших сайтах


  • 1 month later...

Встановили на шаблон від Octemplates, але нічого не працює. Модуль встановлюється, є налаштування, назва випадає така як і у людини вище "сhecked="checked"... незрозуміло чому це не пофіксать, виправив самостійно, але основна проблема в тому, що якщо обирати спосіб оплати через екваірінг монобанку, ввести всі дані отримувача, то після натискання кнопки підтвердження замовлення кнопка просто висить. Показує, що йде завантаження, прочекав пів години, так і крутилося, пробував кілька разів з різними налаштуваннями, але ситуація не змінється. На тестовому сайті і на основному ситуація однакова. Після того як заходиш у модуль і дивишся оплати, то воно там показує, що типу були транзакції (намагалися), але по факту нічого не працює. 

Надіслати
Поділитися на інших сайтах


04.07.2024 в 20:39, leochi сказал:

Встановили на шаблон від Octemplates, але нічого не працює. Модуль встановлюється, є налаштування, назва випадає така як і у людини вище "сhecked="checked"... незрозуміло чому це не пофіксать, виправив самостійно, але основна проблема в тому, що якщо обирати спосіб оплати через екваірінг монобанку, ввести всі дані отримувача, то після натискання кнопки підтвердження замовлення кнопка просто висить. Показує, що йде завантаження, прочекав пів години, так і крутилося, пробував кілька разів з різними налаштуваннями, але ситуація не змінється. На тестовому сайті і на основному ситуація однакова. Після того як заходиш у модуль і дивишся оплати, то воно там показує, що типу були транзакції (намагалися), але по факту нічого не працює. 

Оновити мод oct_fast_checkout
Або ...
зробити свій шаблон
 

{% if error_message %}
<div class="alert alert-warning">
  {{ error_message }}
  <button type="button" class="close" data-dismiss="alert">×</button>
</div>
{% else %}
<form id="mono_submit" name="mono_submit" action="{{ checkout_url }}" method="POST">
  <div class="buttons">
    <div class="pull-right">
      <input type="button" value="{{ button_confirm }}" id="button-confirm" class="btn btn-primary" />
    </div>
  </div>
</form>
<script type="text/javascript"><!--
    $('#button-confirm').bind('click', function() {
		location = '{{ checkout_url }}';
        return false;
    });
    //--></script>  
{% endif %}

приблизно так

Надіслати
Поділитися на інших сайтах

  • 3 weeks later...
05.07.2024 в 11:33, chukcha сказал:

Оновити мод oct_fast_checkout
Або ...
зробити свій шаблон
 

{% if error_message %}
<div class="alert alert-warning">
  {{ error_message }}
  <button type="button" class="close" data-dismiss="alert">×</button>
</div>
{% else %}
<form id="mono_submit" name="mono_submit" action="{{ checkout_url }}" method="POST">
  <div class="buttons">
    <div class="pull-right">
      <input type="button" value="{{ button_confirm }}" id="button-confirm" class="btn btn-primary" />
    </div>
  </div>
</form>
<script type="text/javascript"><!--
    $('#button-confirm').bind('click', function() {
		location = '{{ checkout_url }}';
        return false;
    });
    //--></script>  
{% endif %}

приблизно так

 

Так ніби Octemplates оновили всі свої шаблони і видалили модуль Fast order, у нас остання оновлена версія шаблону, можливо саме через це не і не працює. Зараз модуль називаеється Smart Checkout  на ньому не працює. Якщо у когось є рішення щодо того як це вилікувати у данному модулі будь-ласка напишіть. Якщо рішення не будет, тоді вже треба значить звертатися до спеціаліста, який виправить помилку. 

Надіслати
Поділитися на інших сайтах


25.07.2024 в 18:09, korisnirechi сказал:

 

Так ніби Octemplates оновили всі свої шаблони і видалили модуль Fast order, у нас остання оновлена версія шаблону, можливо саме через це не і не працює. Зараз модуль називаеється Smart Checkout  на ньому не працює. Якщо у когось є рішення щодо того як це вилікувати у данному модулі будь-ласка напишіть. Якщо рішення не будет, тоді вже треба значить звертатися до спеціаліста, який виправить помилку. 

зі слов авторів шаблону - все працює, пишіть у підтримку

  • +1 2
Надіслати
Поділитися на інших сайтах

Підкажіть, будь ласка, де я можу прописати redirect url  , щоб після оплати кліент автоматично переходив на сторінку успішного замовлення на сайті? треба для налаштування утм міток та рахунку конверсій

Надіслати
Поділитися на інших сайтах


В 01.08.2024 в 12:49, five4dog сказав:

Підкажіть, будь ласка, де я можу прописати redirect url  , щоб після оплати кліент автоматично переходив на сторінку успішного замовлення на сайті? треба для налаштування утм міток та рахунку конверсій

Така ж біда :(

Наскільки я знаю, це не передбачено їхнім API.

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Усім доброго дня.

Таке питання. Перестала працювати опція генерації посилання на оплату з QR кодом - создать mono invoice + QR
image.png.586aa0161f613317c5d9b94ca046c8a1.png

При натисненні - перекидає на нову (пусту) сторінку і на цьому все...
При натисненні на перше посилання - інвойс формується без питань, все норм

На скільки я розумію помилку - не вірно вказано qrId, але все зроблено на стороні моно так як потрібно (як сказали у підтримці)

Ось відповідь серверу
image.png.abe8e89e2f0e8ff004a354503d5277c9.png

Можливо хтось стикався з такою проблемою? Підкажіть де шукати причину

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Доброе утро!Есть ли возможность добавить в модуль поддержку других языков? В других модулях это делалось переводом и добавление файлов.

Как изменить надписи при оформлении заказа на те, что предложены в брендбуку?

Screenshot_20240905-070806.png

 

Сейчас вот так.

 

Screenshot_20240905-071106.png

Змінено користувачем zaleha
Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

як вирішити пробленму: під час оплати в оплату також входе доставка як її прибрати (тобто на сторінці https://pay.mbnk.biz е 2 товари сам товар + оплата) як прибрати оплату

1512789282_.png.ec863211e66906119db4160c7d6fc56c.png

Змінено користувачем scream13
Надіслати
Поділитися на інших сайтах


  • 1 month later...
  • 4 months later...
  • 3 weeks later...

Скачал модуль для 2.3-3.0 - обнаружил ряд существенных недостатков из-за отсутствующих базовых минимумов - ограничения по сумме, дефолтный статус заказа (вместо статуса 0, и, как следствие "Потеря" заказа), настройка статусов для возврата.

Внёс небольшие изменения в код модуля.

Изменённые файлы:

  • upload/admin/controller/extension/payment/mono.php – контроллер настроек модуля (админка).
  • upload/admin/model/extension/payment/mono.php – модель модуля (админка).
  • Файлы языков админки: upload/admin/language/en-gb/extension/payment/mono.php и upload/admin/language/uk-ua/extension/payment/mono.php.
  • Шаблоны страницы настроек (админка): upload/admin/view/template/extension/payment/mono.tpl (OC 2.3) и upload/admin/view/template/extension/payment/mono.twig (OC 3.0).
  • upload/catalog/controller/extension/payment/mono.php – контроллер оплаты на стороне магазина (каталог).
  • upload/catalog/model/extension/payment/mono.php – модель оплаты на стороне магазина (каталог).
  • Файлы языков каталога: upload/catalog/language/en-gb/extension/payment/mono.php и upload/catalog/language/uk-ua/extension/payment/mono.php.

Удалённые файлы:

  • В новой версии отсутствуют служебные файлы macOS (.DS_Store) из папок upload/ и upload/admin/ – их удаление не влияет на работу модуля (просто очистка архива).

Детальный обзор изменений по каждому файлу


1. Файл: admin/controller/extension/payment/mono.php

Изменения в коде: В контроллере админской части были добавлены новые поля настроек в массив $form_inputs для сохранения настроек модуля.
 

             $this->prefix . "mono_sort_order",
+            $this->prefix . "mono_order_default_status_id",
             $this->prefix . "mono_order_success_status_id",
+            $this->prefix . "mono_order_reversed_status_id",
             $this->prefix . "mono_order_cancelled_status_id",
             $this->prefix . "mono_order_process_status_id",
             $this->prefix . "mono_order_hold_status_id",
             $this->prefix . "mono_destination",
             $this->prefix . "mono_use_holds",
+            $this->prefix . "mono_fiscalization_code_field",
+            $this->prefix . "mono_total",
+            $this->prefix . "mono_totalmax",
         ];


Пояснения:

  • Добавлены новые настройки статусов заказа:

    • mono_order_default_status_id – ID статуса нового заказа (статус, который будет присваиваться заказу сразу после оформления, до оплаты). Это нужно для определения начального статуса заказа (предотвращает попадание неоплаченных заказов в “потерянные”).

    • mono_order_reversed_status_id – ID статуса для возврата средств (статус, в который переводится заказ при возврате платежа). Этот новый статус используется при обработке возвратов, чтобы явно пометить заказ как возвращённый (см. изменения логики возврата ниже).

  • Добавлено поле mono_fiscalization_code_field – настройка для фискализации. Ранее в языке эта переменная была, но не сохранялась; теперь она добавлена в список сохраняемых настроек. Влияние: обеспечивает сохранение значения поля "код фискализации" (если используется интеграция с фискальным сервисом).

  • Добавлены поля ограничения суммы: mono_total и mono_totalmax – минимальный и максимальный порог суммы заказа для отображения данного способа оплаты. Назначение: позволить админу задать диапазон сумм, при котором метод оплаты Plata by mono доступен. Эти значения будут проверяться на стороне каталога (см. изменения в модели каталога) и ограничивать использование метода при слишком маленькой или большой сумме заказа (поддержка ограничения мин/макс суммы оплаты).

Все перечисленные поля добавлены в $form_inputs, что означает, что при сохранении настроек модуля OpenCart будет их учитывать и сохранять в базе данных. Без этих добавлений новые настройки не сохранялись бы.

2. Файл: admin/model/extension/payment/mono.php

Изменения в коде: В модели админской части внесены изменения в структуру таблицы логов и форматирование закомментированного кода.
 

         $this->db->query("
 		CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "monopay_logs`
         (
+            `id`             INT(11)     NOT NULL AUTO_INCREMENT,
             `key`            TEXT        NOT NULL DEFAULT '',
             `value`          TEXT        NOT NULL DEFAULT '',
             `module_version` VARCHAR(50) NOT NULL DEFAULT '',
             `timestamp`      TIMESTAMP   NOT NULL DEFAULT NOW(),
+            PRIMARY KEY (`id`)
         ) ENGINE = MyISAM ...
         ");

 

Пояснения:

  • Добавлен первичный ключ id в таблицу monopay_logs: теперь при создании таблицы логирования monopay_logs добавляется поле id INT(11) NOT NULL AUTO_INCREMENT и объявляется как PRIMARY KEY. Это изменение вводит уникальный идентификатор для каждой записи лога.
    Зачем: наличие первичного ключа id упрощает управление записями (например, удаление или выбор конкретных записей) и улучшает структуру таблицы. Ранее таблица не имела явного PK, теперь логическая целостность выше; на работу модуля это напрямую не влияло, но является улучшением базы данных.
     

3. Файлы языков админки (admin/language/en-gb и uk-ua)

В языковых файлах админской части (английском и украинском) добавлены новые переменные текста для новых настроек (минимальная/максимальная сумма и новые статусы заказа).

Изменения в коде (en-gb):

 $_['entry_geo_zone'] = 'Geographic area';
+$_['entry_order_default_status'] = 'New order status';
 $_['entry_order_success_status'] = 'Paid order status';
+$_['entry_order_reversed_status'] = 'Order status after refund';
 $_['entry_order_process_status'] = 'Order status in processing';
 $_['entry_order_cancelled_status'] = 'Canceled order status';
 $_['entry_order_hold_status'] = 'Status for hold';
 ...
 $_['entry_hold'] = 'Hold mode';
+$_['entry_total'] = 'Lower order amount threshold';
+$_['entry_totalmax'] = 'Upper threshold of order amount';
 $_['entry_fiscalization_code_field'] = 'Value for "code" parameter if fiscalization is activated (...';

Изменения в коде (uk-ua):

 $_['entry_geo_zone'] = 'Географічна зона';
+$_['entry_order_default_status'] = 'Статус нового замовлення';
 $_['entry_order_success_status'] = 'Статус сплаченого замовлення';
+$_['entry_order_reversed_status'] = 'Статус замовлення після повернення коштів';
 $_['entry_order_process_status'] = 'Статус замовлення в обробці';
 $_['entry_order_cancelled_status'] = 'Статус відміненного замовлення';
 $_['entry_order_hold_status'] = 'Статус замовлення, що знаходиться в холді';
 ...
 $_['entry_hold'] = 'Режим холдів';
+$_['entry_total'] = 'Нижній поріг суми замовлення';
+$_['entry_totalmax'] = 'Верхній поріг суми замовлення';
 $_['entry_fiscalization_code_field'] = 'Значення для параметру "code", якщо фіскалізацію активовано (...';

Пояснения:

  • Новые языковые переменные для статусов:

    • entry_order_default_status – добавлена строка для названия поля «Статус нового заказа» (англ. "New order status", укр. "Статус нового замовлення").

    • entry_order_reversed_status – строка для «Статус заказа после возврата средств» (англ. "Order status after refund", укр. "...після повернення коштів").

    Эти строки используются в интерфейсе настроек для новых опций выбора статуса по умолчанию и статуса при возврате. Без них названия новых настроек не отображались бы в форме.

  • Новые переменные для лимитов суммы:

    • entry_total – метка поля «Нижний порог суммы заказа» (минимальная сумма заказа для доступности метода).

    • entry_totalmax – метка «Верхний порог суммы заказа» (максимальная сумма заказа для использования метода).

    Эти текстовые переменные отображаются рядом с соответствующими полями ввода в настройках модуля, позволяя администратору понять, что означают новые поля Минимальная сумма и Максимальная сумма для оплаты Plata by mono.

Все новые языковые константы добавлены без удаления старых – то есть, расширяют существующий набор настроек. Это обеспечивает корректное отображение новых опций в панели администрирования на соответствующих языках. 

 

4. Шаблоны настроек (admin/view/template/extension/payment/mono.tpl и .twig)

В шаблонах страницы настроек модуля (как для OpenCart 2.3 – файл .tpl, так и для OpenCart 3.0 – файл .twig) добавлены новые поля ввода и выпадающие списки для вновь введённых настроек. Также незначительно поправлен формат HTML в одном месте.

Изменения в коде (mono.tpl - фрагменты):

... <!-- Новые поля Минимальной и Максимальной суммы -->
+<div class="col-xs-12">
+    <label ... for="input-total"> <?php echo $entry_total ;?> </label>
+    <input type="text" name="mono_total" value="<?php echo $mono_total ;?>" ... id="input-total"/>
+</div>
+<div class="col-xs-12">
+    <label ... for="input-totalmax"> <?php echo $entry_totalmax ;?> </label>
+    <input type="text" name="mono_totalmax" value="<?php echo $mono_totalmax ;?>" ... id="input-totalmax"/>
+</div>
+<div class="col-xs-12">
+    <label ... for="input-order-status"> <?php echo $entry_order_default_status ;?></label>
+    <select name="mono_order_default_status_id" id="input-order-status"> 
+        <?php foreach($order_statuses as $order_status) { ?>
+            <option value="<?php echo $order_status['order_status_id'] ;?>" <?php echo $order_status['order_status_id'] == $mono_order_default_status_id ? 'selected' : '' ;?> ><?php echo $order_status['name'] ;?></option>
+        <?php } ?>
+    </select>
+</div>
...
 <!-- Поле выбора статуса оплаченного заказа (существующее) -->
 <label ...><?php echo $entry_order_success_status ;?></label>
 <select name="mono_order_success_status_id" ...>
     <?php foreach($order_statuses as $order_status) { ?>
-        <option value="<?php echo $order_status['order_status_id'] ;?>" <?php echo $order_status['order_status_id'] == $mono_order_success_status_id ? 'selected' : '' ;?> ><?php echo $order_status['name'] ;?></option>
+        <option value="<?php echo $order_status['order_status_id'] ;?>" ... ><?php echo $order_status['name'] ;?></option>
     <?php } ?>
 </select>
...</div>
+<div class="col-xs-12">
+    <label ... for="input-order-status"> <?php echo $entry_order_reversed_status ;?></label>
+    <select name="mono_order_reversed_status_id" id="input-order-status">
+        <?php foreach($order_statuses as $order_status) { ?>
+            <option value="<?php echo $order_status['order_status_id'] ;?>" <?php echo $order_status['order_status_id'] == $mono_order_reversed_status_id ? 'selected' : '' ;?> ><?php echo $order_status['name'] ;?></option>
+        <?php } ?>
+    </select>
+</div>

(Аналогичные изменения присутствуют в версии шаблона .twig – добавлены те же поля с использованием синтаксиса Twig. Отличия в .twig файле идентичны по логике: добавлены блоки с {{ entry_total }}, {{ entry_totalmax }}, {{ entry_order_default_status }}, {{ entry_order_reversed_status }} и соответствующие поля формы payment_mono_total, payment_mono_totalmax, payment_mono_order_default_status_id, payment_mono_order_reversed_status_id.)

Пояснения:

  • Поле “Минимальная сумма заказа” (mono_total): Добавлен новый input (текстовое поле) для ввода минимального порога суммы. Метка поля берётся из entry_total.
    Назначение: позволяет администратору указать минимальную сумму заказа, при которой Plata by mono становится доступен. Если сумма заказа меньше этого значения, метод оплаты не будет предложен покупателю (логика реализована в модели каталога).

  • Поле “Максимальная сумма заказа” (mono_totalmax): Добавлен input для ввода максимального порога суммы заказа (метка entry_totalmax).
    Назначение: аналогично, но для верхнего предела – если сумма заказа превышает указанное значение, метод Plata by mono не появится при оформлении. Это реализует ограничение мин/макс суммы оплаты.

  • Выпадающий список “Статус нового заказа” (mono_order_default_status_id): Добавлен новый <select> с опциями статусов заказа, позволяющий выбрать статус, который будет присваиваться заказу сразу после оформления (до оплаты). Метка поля – entry_order_default_status.
    Зачем: ранее заказ мог создаваться без явного статуса ожидания оплаты, что могло приводить к тому, что неоплаченный заказ оказывался в категории "Потерянные заказы". Теперь администратор может задать конкретный статус (например, "Ожидание оплаты") для новых заказов по Plata by mono до получения оплаты. Это изменение связано с улучшением логики отображения заказа до оплаты, предотвращая потерю заказов.

  • Выпадающий список “Статус после возврата” (mono_order_reversed_status_id): Ещё один <select> для выбора статуса, в который перейдёт заказ в случае возврата средств по платежу. Метка – entry_order_reversed_status.
    Назначение: дать возможность указать специальный статус для возвращённых/отменённых платежей (например, "Возврат средств" или "Отмена платежа"). Этот статус будет использоваться модулем при обработке веб-хука возврата от Monobank, вместо прежней логики (см. изменения в контроллере каталога). Таким образом, модуль поддерживает новый статус заказа для возврата средств.

Шаблон .tpl и .twig синхронизированы – изменения дублированы для обеих версий движка шаблонов, чтобы в OpenCart 2.3 (TPL) и OpenCart 3.0 (Twig) интерфейс настроек модуля был одинаковым и содержал новые поля.

 

5. Файл: catalog/controller/extension/payment/mono.php

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

Изменения в коде (основные фрагменты):

@@ ... функція обработки callback (webhook) ... @@
-                if ($order['order_status_id'] == $this->config->get($this->prefix . 'mono_order_success_status_id')) {
-                    $this->model_checkout_order->addOrderHistory($order_id, $this->config->get($this->prefix . 'mono_order_success_status_id'),
-                        $this->language->get('text_status_refund'));
-                } else if ($order['order_status_id'] == $this->config->get($this->prefix . 'mono_order_hold_status_id')) {
-                    $this->model_checkout_order->addOrderHistory($order_id, $this->config->get($this->prefix . 'mono_order_cancelled_status_id'),
-                        $this->language->get('text_status_hold_cancelled'));
-                }
+                $comment_reversed = $this->language->get('text_status_refund');
+                if ($order['order_status_id'] == $this->config->get($this->prefix . 'mono_order_hold_status_id')) {
+                    $comment_reversed = $this->language->get('text_status_hold_cancelled');                    
+                }
+                $this->model_checkout_order->addOrderHistory($order_id, $this->config->get($this->prefix . 'mono_order_reversed_status_id'), $comment_reversed);
                 break;
@@ ... функция создания ссылки оплаты (getCheckoutUrl) ... @@
     function getCheckoutUrl($order_info, string $ccy) {
+        $this->load->model('checkout/order');
         ...
         $create_invoice_response = $this->createInvoice(...);
         $this->model_extension_payment_mono->InvoiceInsert(... 'created' ...);
+        $this->model_checkout_order->addOrderHistory(
+            $order_info['order_id'], 
+            $this->config->get($this->prefix . 'mono_order_default_status_id'),
+            $this->language->get('text_invoice_created'), 
+            false
+        );
         return $create_invoice_response['pageUrl'];
     }

Пояснения:

  • Изменение логики возврата средств: При получении веб-хука о возврате платежа (или отмене транзакции) модуль теперь использует новый статус заказа для возврата и единообразную обработку:
    В старой версии код (показан в удалённых строках) проверял текущий статус заказа:

    • Если заказ был в статусе “оплачено” (успешный платеж), ему повторно присваивался статус "оплачено" (mono_order_success_status_id) с комментарием о возврате (text_status_refund). То есть статус фактически не менялся, просто добавлялся комментарий, что выполнен возврат.

    • Если заказ был в статусе “холд” (платёж на удержании), то ставился статус "отменён" (mono_order_cancelled_status_id) с комментарием о холде отменённом (text_status_hold_cancelled).

    В новой версии эта логика упрощена и улучшена:

    • Всегда используется единый статус возврата – берётся значение mono_order_reversed_status_id (новая настройка “статус после возврата”). Независимо от исходного статуса, заказ переводится в этот статус.

    • Комментарий к истории заказа определяется условно: по умолчанию используется text_status_refund (“успешный возврат”), но если возврат произошёл с холдированного платежа (т.е. исходный статус был статус холда mono_order_hold_status_id), тогда комментарий будет text_status_hold_cancelled (“холд отменён”). Комментарий сохраняется в переменной $comment_reversed и передаётся в addOrderHistory.

    Причина изменений: Прежний подход не менял статус для полностью оплаченых заказов при возврате (оставлял их в статусе "Оплачен"), что могло затруднять отличить возвращённые заказы. Теперь введён специальный статус для возвратов – это позволяет явно пометить заказ как возвращённый/отменённый. Администратор может выбрать подходящий статус (например, "Возврат средств" или "Отменён") в настройках модуля. Таким образом, логика возврата стала яснее: при возврате средств заказ получает отдельный статус, а не остаётся в прежнем. Это изменение связано с добавлением нового статуса заказа для возврата в модуле.

  • Присвоение статуса при создании инвойса (оформлении заказа): В методе getCheckoutUrl (вызывается при начале оплаты, когда покупатель перенаправляется на страницу Monobank для оплаты) добавлен вызов: 

    $this->model_checkout_order->addOrderHistory($order_id, $default_status_id, $comment, false);

     

  • Здесь $default_status_id берётся из настройки mono_order_default_status_id, а комментарий – языковая переменная text_invoice_created (добавлена в файл языка, см. ниже), обозначающая что “заказ создан”. Этот код ставит заказу статус "новый заказ" сразу после формирования счёта (инвойса) и перед перенаправлением на оплату. Кроме того, перед этим вызовом загружается модель заказа ($this->load->model('checkout/order')), чтобы метод addOrderHistory был доступен – это техническое дополнение, необходимое для выполнения смены статуса.

    Назначение: Теперь заказ сразу получает определённый статус (выбранный в настройках, например "Ожидание оплаты") вместо неопределённого состояния. В старой версии этого не было – заказ до подтверждения оплаты мог не получить явного статуса через историю, из-за чего в OpenCart такие заказы могут считаться "missing" (пропавшими) и отображаться в разделе "Потерянные заказы". Благодаря данному изменению исключается вероятность, что неоплаченный заказ затеряется: он будет виден в админке с заданным статусом (ожидает оплаты) до тех пор, пока клиент не оплатит или пока не истечёт время. Это реализация требования по изменению логики отображения заказа до оплаты, чтобы заказ не попадал в "Потерянные".

    Комментарий text_invoice_created служит для журнала истории (например, "monopay: Заказ создан"). Он добавлен для информативности, чтобы администратор видел запись, что по этому заказу сформирован счёт Plata by mono и ожидается оплата.

  • Косметические изменения: В нескольких местах в коде контроллера изменены отступы в комментариях (добавлены пробелы после //). Эти изменения не влияют на логику выполнения, а лишь приводят код к единому стилю. Отметил это для полноты картины, хотя функционального значения эти правки не имеют.
     

6. Файлы языка каталога (catalog/language/en-gb и uk-ua)
 

В файлах языка на стороне витрины (каталога) добавлен новый текст для комментария "заказ создан" при выставлении счёта, используемый в вышеописанной логике. Другие существующие текстовые константы остались без изменений.

Изменения в коде (en-gb):

 $_['text_currency_error'] = 'Error! Invalid currency, ...';
+$_['text_invoice_created'] = 'monopay: The order has been created'; 
 $_['text_status_success'] = 'monopay: Payment was successful';
 $_['text_status_created'] = 'monopay: Invoice created but not payed yet';
 $_['text_status_refund'] = 'monopay: Successful refund';

Изменения в коде (uk-ua):

 $_['text_currency_error'] = 'Помилка! Оплата приймається лише ...';
+$_['text_invoice_created'] = 'monopay: Замовлення створено';
 $_['text_status_success'] = 'monopay: Оплата пройшла успішно';
 $_['text_status_created'] = 'monopay: Інвойс створено, але ще не оплачено';
 $_['text_status_refund'] = 'monopay: Здійснено повернення';

Пояснения:

  • Добавлена языковая строка text_invoice_created: в английском – "monopay: The order has been created", в украинском – "monopay: Замовлення створено". Эта строка используется как комментарий при добавлении истории заказа, когда выставляется счёт (инвойс) и заказ получает статус ожидания оплаты. Таким образом, администратор в истории заказа увидит пометку, что заказ был создан и ожидает оплаты через Plata by mono.

  • Остальные строки (text_status_success, text_status_created, text_status_refund и др.) не изменились. Добавление text_invoice_created заполняет пробел в описании статуса до оплаты.

Эта новая строка вместе с изменением в контроллере обеспечивает информативность: сразу после оформления заказ имеет комментарий о создании счёта. Это помогает  понять, что заказ и платёж находятся в стадии ожидания.

 

7. Файл: catalog/model/extension/payment/mono.php

В модели платежного модуля (каталог) добавлена новая логика, связанная с минимальной и максимальной суммой заказа, а также небольшой корректирующий код для геозоны.

Изменения в коде:

 if ($query->num_rows) {
     $show_monopay = true;
 } else {
+    $show_monopay = false;
 }

+// Дополнительная проверка по сумме
+if ($show_monopay) {
+    $min_total = $this->config->get($prefix . 'mono_total');
+    $max_total = $this->config->get($prefix . 'mono_totalmax');
+
+    if (
+        (!empty($min_total) && $total < (float)$min_total) ||
+        (!empty($max_total) && $total > (float)$max_total)
+    ) {
+        $show_monopay = false;
+    }
 }

Пояснения:

  • Явная установка $show_monopay = false для неподходящей геозоны: В проверке доступности метода по географической зоне добавлен блок else { $show_monopay = false; }. Ранее $show_monopay по умолчанию и так был false (до проверки), поэтому функционально это изменение мало что меняет, но делает логику явнее. Теперь, если текущая геозона покупателя не входит в разрешённую (geo_zone), модуль чётко устанавливает флаг отображения метода в false.
    Влияние: это больше улучшение читаемости кода; итоговое поведение остаётся — если геозона не подходит, Plata by mono не отображается.

  • Добавлена проверка минимальной и максимальной суммы заказа: Новый блок if ($show_monopay) { ... } выполняет дополнительную проверку по сумме заказа, но только если метод уже разрешён по предыдущим условиям (статусу и геозоне).
    Внутри проверяется:

    • Настройка mono_total (мин. сумма). Если она задана и не пуста, и текущий $total заказа меньше указанного значения, то $show_monopay = false.

    • Настройка mono_totalmax (макс. сумма). Если задана и текущий $total превышает указанный максимум, также отключается метод ($show_monopay = false).

    Назначение: реализовать логику ограничения по сумме заказа. Теперь администратор может ограничить использование Plata by mono для слишком малых или слишком крупных заказов. Например, можно сделать так, что Plata by mono появится только для заказов от 100 грн до 10000 грн – эти пределы задаются в новых полях настроек, и модель их проверяет.
    Влияние на работу: если сумма заказа вне допустимого диапазона, покупатель не увидит "Plata by mono" как способ оплаты при оформлении. Это может быть важно для ограничения мелких транзакций или, наоборот, очень крупных, по усмотрению мерчанта.

    Данный блок – ключевая часть реализации поддержки минимальной и максимальной суммы оплаты. Без него введённые админом значения Минимальная сумма и Максимальная сумма не влияли бы на отображение способа оплаты.

Ключевые изменения и новые возможности модуля

 

В совокупности, модификация модуля Plata by mono привнесла ряд улучшений и новых функций:

  • Поддержка ограничения по сумме заказа: Добавлены настройки минимальной и максимальной суммы для использования метода оплаты (поля mono_total и mono_totalmax в настройках модуля). Реализована соответствующая проверка в коде – если сумма заказа выходит за пределы заданного диапазона, Plata by mono не предлагается покупателю. Это даёт мерчанту гибкость в ограничении применения способа оплаты по сумме заказа.

  • Новые настраиваемые статусы заказа: Появились опции для выбора статусов:

    • Статус нового заказа (до оплаты) – присваивается заказу сразу после его оформления, ещё до получения оплаты. Обычно это статус типа "Ожидание оплаты". Введение этой настройки решает проблему исчезновения неоплаченных заказов, позволяя отнести их к определённой категории и не считать «потерянными».

    • Статус при возврате средств – статус, в который переводится заказ, если по нему произошёл возврат или отмена платежа. Вместо того чтобы оставаться в статусе "Оплачен" или "Отменён" по умолчанию, заказ может получить специальный статус (например, "Возврат средств"). Это улучшает учёт возвратов в системе.

  • Изменена логика обработки заказа до оплаты: При переходе покупателя на оплату Monobank модуль сразу добавляет запись в историю заказа и устанавливает заказу заранее определённый статус (см. выше — статус нового заказа). Ранее заказ мог оставаться без изменения статуса до подтверждения оплаты, что помечало его как "Missing" в OpenCart. Теперь каждый оформленный заказ явно помечается, что счёт выставлен и ожидается оплата (с комментарием "Заказ создан" в истории). Это означает, что даже если клиент не завершит оплату, заказ останется в системе с понятным статусом, и администратор сможет его увидеть и обработать (например, связаться с клиентом или удалить по необходимости).

  • Улучшенная логика возврата платежа: При уведомлении о возврате (webhook от Monobank) модуль теперь изменяет статус заказа на специально указанный "статус после возврата" и добавляет понятный комментарий ("успешный возврат" или "холд отменён"). Это облегчает технической поддержке и менеджерам понимание, что произошло с заказом: статус заказа будет, например, "Возврат выполнен" вместо того, чтобы оставаться "Оплачен". Таким образом, учёт возвратов стал прозрачнее, и исключаются ситуации, когда заказ считался выполненным, хотя деньги возвращены.

Каждое из перечисленных изменений направлено на расширение функционала модуля Plata by mono и повышение надёжности его работы. В результате модуль получил новые возможности (лимиты суммы, статусы для разных этапов платежа) и устранил возможные проблемы (пропажа заказов без статуса, неопределённость при возврате средств), что должно облегчить поддержку и использование Plata by mono с OpenCart 2.3/3.0.

Не знаю, нужно ли это кому-то кроме меня, но, на всякий случай, решил выложить полный отчёт и лог изменений. Вдруг разработчик решить добавить подобный функционал, но уже собственноручно.
PS. Чистоту DOM не наводил. Очень хотелось, но не стал. От всех этих  <select id="input-order-status"> с одинаковым id "вздрагивалось", но я себя переборол.

mono_oc2_3_3_edited.zip

  • +1 3
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.