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

#prestashop #prestashop-1.6 #prestashop-1.7

#prestashop #prestashop-1.6 #prestashop-1.7

Вопрос:

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

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

Ответ №1:

Лучший способ добиться этого -:

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

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

Комментарии:

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

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