я перешла на версию php 8.0 и возникла ошибка со статусами заказа после оплаты цифрового товара.
в чем проблема: $v[‘amount’] (количество товара) — где-то стал строкой (например, '1' вместо 1 ), а PHP 8+ не позволяет умножать строку на int без приведения типов.
получается надо функцию как-то поменять в ядре?
foreach ($order_info[‘products’] as $v) {
if (isset($v[‘amount’])) {
$v[‘amount’] = (int)$v[‘amount’];
}
…
}
из-за этого даже админ не может менять статусы заказов, статус всегда стоит как “неподтвержденный” даже если платежная система написала, что заказ подтвержден и на другой не меняется.
Пока вернулась обратно на 7.4, там всё работает. Подскажите в чём именно проблема?
Здравствуйте, @rumir! Спасибо за ожидание.
Мне не удалось воспроизвести описанную проблему, статус заказа с цифровым товаром меняется без ошибок.
Пожалуйста, уточните шаги для воспроизведения проблемы и пришлите текст PHP ошибки для лучшего понимания.
я нашла проблему. у меня в поле “Период доступности ключа для скачивания цифровых товаров в часах:” не стояло ничего. Думала, что если не стоит, то может будет бесконечно. Поэтому php 8.0 ругался.
Строчка в файле app/functions/fn.cart.php выглядит вот так:
@rumir, спасибо за предоставленные детали, рада, что вы нашли причину ошибки.
Я воспроизвела проблему и сообщила о ней нашим разработчикам.
Для настройки бессрочного доступа к скачиваемым файлам я рекомендую вам использовать опцию Не ограниченная по времени загрузка, которая находится на странице редактирования товара на вкладке Общее.