Сообщение «Сумма заказа изменилась» при обработке вызова платёжной системы (callback)

Для заказов, оплаченных через интернет, платёжная система может присылать в интернет-магазин специальные запросы, чтобы обновить статус заказа. В запросе платёжная система присылает сумму заказа, чтобы убедиться в том, что состав заказа в магазине не успел измениться к этому моменту.

Если сумма заказа изменилась, статус заказа не будет обновлён: видимо, с заказом выполняются какие-то нестандартные действия, в которые платёжной системе лучше не вмешиваться. В этом случае в истории обработки заказа появится запись вида

Сумма заказа изменилась: ожидалось ..., получено ... Валюта: ...

Как работает проверка суммы заказа

Сумма заказа в запросе платёжной системы может незначительно отличаться от фактической суммы заказа в интернет-магазине. Например, всего на 1,1 копейки или меньше. Это может происходить, например, из-за погрешности округления или перевода суммы заказа в другую валюту. Такие небольшие погрешности намеренно игнорируются в Shop-Script.

Иногда эта разница может быть больше 1,1 копейки, но всё равно незначительной, например, 2 копейки. В этом случае статус заказа не обновится, а в истории обработки появится сообщение об изменившейся сумме заказа.

Как изменить логику проверки суммы

Если вы считаете, что разница в 2 копейки (но не больше 2 копеек) не слишком велика для автоматического обновления статуса заказа, можно увеличить порог срабатывания проверки суммы заказа. Для этого сохраните в файле wa-config/apps/shop/config.php значение параметра order_amount_tolerance, отличное от стандартного 0.011 (эквивалента суммы в 1,1 копейки, если валюта заказа — рубль, или 1,1 цента, если валюта — доллар или евро):

'order_amount_tolerance' => 0.02,
В пороговом значении вместо десятичной запятой нужно использовать точку.

Неправильно: 0,02
Правильно: 0.02

Если такого параметра в файле нет, добавьте его по аналогии с другими записями в этом файле:

'products_per_page' => 50,
'...' => ...,
'order_amount_tolerance' => 0.02,

Если этого файла у вас нет, создайте его с таким содержимым:

<?php

return array(
    'order_amount_tolerance' => 0.02,
);

После сохранения файла очистите кеш в приложении «Настройки».

0 комментариев

    Добавить комментарий

    Чтобы добавить комментарий, зарегистрируйтесь или войдите