Как программно добавить дополнительную плату в Prestashop?

замечательное сообщество. Мне нужно добавить дополнительную плату к заказам в prestashop. Я разработал специальный платежный модуль, который работает должным образом. Я просто не могу найти никакой информации о том, как добавить эту дополнительную плату (это настраивается в самом платежном модуле) в корзину, счет-фактуру и везде, где это необходимо. Всю информацию я нашел, в ответах ссылка на покупку модуля на маркетплейсе. Я не могу позволить себе купить его. Итак, я буду признателен, если вы можете пролить свет на этот вопрос.

Я использую PS 1.6 и 1.7.x.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 457
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Лучшим способом достижения было бы:

  1. Добавьте новый продукт в свой каталог под названием «Дополнительная плата».
  2. Выберите «Нигде» для его видимости и установите цену, соответствующую дополнительной плате, которую вы пытаетесь взимать.
  3. Переопределите метод getOrderTotal() в классе Cart, чтобы добавить новое условие, указывающее, что если был выбран конкретный платежный модуль, продукт «Дополнительная плата» должен быть автоматически добавлен в корзину (используя $this->updateQty(1, $id_product_extra_fee);)
  4. Обязательно обработайте случай, когда покупатель решит переключиться на другой способ оплаты (затем удалите этот товар из своей корзины).

Это автоматически заполнит счет-фактуру, электронное письмо с подтверждением, детали заказа в панели администратора и т. д.

Спасибо за ваш вклад. Действительно, я нашел это решение после нескольких часов поиска. Но есть недостаток, который, возможно, вы знаете, как решить: Администратор может настроить дополнительную комиссию в настройках платежного модуля. Таким образом, дополнительная плата составляет % от общей стоимости данного заказа, поэтому цена «поддельного» продукта является переменной. Как справиться с этим? Должен ли я изменить цену программно, прежде чем добавить ее в корзину?

George 26.03.2019 16:11

Да, правильным способом может быть создание конкретной цены «на лету» для этого продукта/покупателя. Эта функция изначально недоступна в PrestaShop, потому что она запрещена большинством платежных решений (например, проверьте Условия использования PayPal, где они конкретно упоминают об этом).

Bruno Leveque 26.03.2019 19:33

Другие вопросы по теме