Проблема со ссылкой на заказ в письмах (Формат Номера Заказа). Принято

3

Добрый день.

В настройках движка стоит формат номера заказа 10{$order.id} . Т.е. ко всем id заказа добавляется 10. При отправке письма о заказе формируется ссылка в классе shopNotifications.class.php вида [domen]/my/order/[order_id]/[auth_code]/ . Получается что передается id заказа. Не форматный номер.

Далее при переходе по ссылке пользователь попадает на страницу заказа где требуется ввести PIN для доступа к просмотру заказа. Но, после того, как у нас id заказов перевалили за 10000 - по этой ссылке стала выдаваться 404 ошибка.

В коде обработчика страницы shopFrontendMyOrder.action.php есть блок для поиска заказа

$encoded_order_id = waRequest::param('id');
$order_id = shopHelper::decodeOrderId($encoded_order_id);
if (!$order_id) {
     // fall back to non-encoded id
    $order_id = $encoded_order_id;
    $encoded_order_id = shopHelper::encodeOrderId($order_id);
}

Т.е в первую очередь скрипт пытается декодировать пришедший id заказа! А только потом, в случае неудачи пришедший id воспринимает как реальный код заказа (не форматированный). Получается что наши реальные ID заказа сейчас попадают под формат номера заказа и обработчик декодирует его получая несуществующий номер заказа (либо получит старый номер заказа убрав 10) .

Подскажите что делать? Менять формат номера заказа не хочется, у нас много заказов и они же идут в различные службы доставки , отчеты и т.п.

Менять системные файлы - доработки слетят после обновления. Плюс видимо такая же процедура проводится при распечатке Товарной Накладной. В итоге тоже подставляется содержимое старых заказов (после декодирования убирается "10" и реальный код заказа уже старый).

2 комментария

  • +1

    Поменяем приоритет ожидаемого формата - будут те же коллизии, но наоборот - старые заказы будут вести на новые.

    Правильное решение: не использовать только числовые префиксы для заказа.

  • +1

    можно попробовать добавить к префиксу заказа в начале точку либо другой не сильно заметный символ, не являющийся цифрой.

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

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