Нормализация цен в платежном модуле
Начиная с v22-3-4 в API добавлена функция нормализации цен в файле api/Payment.php:
public function normalize($order_id){
Чтобы добавить эту функцию в старые версии просто скопируйте ее код из свежего дистрибутива в ваш файл api/Payment.php.
Нормализация - это уменьшение стоимости товаров на скидку (если она есть в заказе) и с учетом копеек/округления, равномерно распределенную по всем товарам, причем таким образом, чтобы стоимость заказа и сумма позиций, передаваемых в фискальных данных полностью совпадали.
Получить товары с уже нормализоваными ценами из заказа № $order_id в платежном модуле очень просто:
$purchases = $fivecms->payment->normalize((int)$order_id);
т.о. для получения информации о товарах в заказе нужно использовать код выше вместо этого старого:
$purchases = $fivecms->orders->get_purchases(array('order_id' => intval($order_id)));
Важные нюансы по добавлению доставки в фискальные данные
- Доставка добавляется как отдельный товар и скидка на нее не распространяется.
- Не забывайте делать проверку на метку "оплачивается отдельно/separate_delivery" в информации о заказе:
if($order->delivery_id && !$order->separate_delivery && $order->delivery_price > 0) {
$delivery = $fivecms->delivery->get_delivery($order->delivery_id);
...
}
Если доставка бесплатна или оплачивается отдельно, то информацию о ней не нужно передавать.
Связанные статьи
UPD: обновлено 09.05.2023
Еще нет своего сайта? Запустите интернет-магазин на платформе 5CMS - Все для продаж уже внутри!
-
Пошаговая инструкция по установке сервиса Мemcached в Ubuntu
-
Инструкция по обновлению платежного модуля ЮKassa