Использование параметра with_price_correction решает проблему передачи корректной цены позиции в заказе в платежный сервис.
Проблему и ее решение удобнее рассмотреть на примере.
1. Расчет на стороне системы inSales
1.1 Допустим, в заказе добавлены такие товары:
1.2 В заказе применена скидка 10%: 130 541.39 руб * 0,1 = 13 054.14 руб.
1.3 Итоговая сумма к оплате: 130 541.39 руб - 13 054.14 руб =117 487.25 руб
2. Отправка информации в банк
2.1 Для формирования чеков информация о составе заказа передается в платежную систему.
При этом стоимость одной позиции считается сразу со скидкой.
2.2 Итоговая сумма к оплате: 40 724.32 руб + 76 762.98 руб = 117 487.3 руб
3. Ошибка
В итоге в системе сумма заказа составляет 117 487.25 руб, а в платежную систему передается сумма 117 487.3 руб. В связи с чем на стороне сервиса формирования чеков возникает ошибка.
В данном случае рекомендуем использовать параметр with_price_correction=1.
Запрос API:
GET https://{myshop}.myinsales.ru/admin/orders/{order_id}.json?with_price_correction=11. При with_price_correction=1 считается разница: delta = order.total_price - sum(line.full_sale_price * quantity) - delivery.