miniShop2. Покупка без авторизации (anonymous)

Всем доброго времени суток!
Возникла проблема с покупкой в miniShop2 без авторизации. По какой-то непонятной причине miniShop2 регистрирует только первого покупателя, после чего все следующие покупки из этого же браузера делаются на первого зарегистрированного пользователя. С зарегистрированными пользователями еще интересней.
Я сделал 3-х покупателей делая покупки с разных браузеров. Дальше начались весёлые диалоги:

Я: Покупка на пользователя №1
miniShop2: Пользователь №1 успешно совершил покупку.
Я: Покупка на пользователя №2
miniShop2: Пользователь №2 успешно совершил покупку.
Я: Покупка на пользователя №3
miniShop2: Пользователь №1 успешно совершил покупку.
Я: What???
Я: Новый пользователь!
miniShop2: Пользователь №1 успешно совершил покупку.
Я: Анонимная сессия и встроенный VPN Оперы. Покупка на пользователя №3
miniShop2: Пользователь №1 успешно совершил покупку.

Для проверки я собрал пустой MODX 2.7.3. Из пакетов только Ace, Batcher, msDemoData, pdoTools и Theme.Bootstrap. Сайтов с MODX понаделана огромная куча. Интернет магазинов с miniShop2 немного, но они все работают с авторизацией и поэтому с такой проблемой я не сталкивался. И вот он первый магазин «без регистрации и СМС». Весь вчерашний день я потратил на тесты, чтение доков и поиск по modx.pro. Результат нулевой. Люди, помогите, я не понимаю, может я что-то пропустил?
Для желающих поучаствовать в аттракционе, могу скинуть ссылку на магазин.
Янис
26 июня 2020, 08:52
modx.pro
189
0

Комментарии: 11

Евгений Webinmd
26 июня 2020, 11:26
0
попробуйте на тестовом тарифе modhost, может проблема с настройкой хостинга
    Янис
    26 июня 2020, 13:48
    0
    Поставил: http://s22959.h10.modhost.pro/
    Те же яйца, вид сбоку. Первая покупка ОК, а следующие уходят первому.
    Максим
    26 июня 2020, 17:57
    0
    Сделал 2 заказа с одного браузера указав разные почты. Письма пришли корректно. Посмотрите в админке должны быть 2 новых пользователя. Так же протестил на других сайтах и тоже подобного нет.
      Янис
      26 июня 2020, 20:07
      0
      Подтверждаю. Тогда я ничего не понимаю. Какой бы я браузер не использовал, получается сделать корректно только первый заказ. Проблема с провайдером? Есть ещё люди кто может сделать два заказа?
        Максим
        27 июня 2020, 12:20
        0
        У меня в профиле есть скайп. Напишите, созвонимся и протестируем.
          Янис
          27 июня 2020, 16:28
          0
          У тестового сайта срок закончился. Но я успел провести ещё кучу тестов и нашёл проблему. Чтобы не быть голословным, вот скрин из заказа, слева адрес, что был указан в заказе, справа — пользователь, на кого miniShop2 офрмил заказ (это сделано много позже первых тестов, просто чтобы не запутаться):

          Регистрации на сайте нет, но где-то, как-то оставалась сессия (хотя в ходе тестов я удалял кукис сайта и закрывал все сессии из админки). Так вот у меня глючили все три браузера через которые я делал тесты. Проблема была именно в них. Поэтому я и не мог сразу найти проблему, а грешил на miniShop2. После очистки историй, кукис и всех сохранений всё заработало как надо.
        Янис
        28 июня 2020, 13:27
        0
        Нашёл я причину, почему заказы от разных пользователей будут приходить на одного, совершенно другого пользователя. Браузер не при чём.
        Итак, выдержка из документации miniShop2 Службы->Логика работы: «Получаем id юзера, по указанному email. Если такого юзера нет, то регистрируем его со случайным паролем и заносим в группы, указанные в настройке ms2_order_user_groups.»
        Это не так. Выдержка из minishop2.class.php, строка 612, создание фильтра для поиска юзера
        $filter = array('username' => $email, 'OR:Profile.email:=' => $email);
        if (!empty($phone)) {
          $filter['OR:Profile.mobilephone:='] = $phone;
        }
        Т.е. если у пользователя указан тот же номер телефона, что и в заказе, то поиск прерываем и заказ присуждаем пользователю с совпавшим номером. Что, на мой взгляд неправильно.
        Причин, почему номера телефонов совпали, но на самом деле это совершенно разные люди полно, начиная от банальной ошибки пользователя, заканчивая тем, что организация по каким-то причинам передала телефон другому сотруднику. @Василий Наумкин собственно просьба к тебе, как к автору. Как минимум это надо отобразить в документации. В идеале или убрать поиск по телефону, или вывести это условие в настройки минишопа, хотя, может есть третье решение.
          Андрей
          28 июня 2020, 14:30
          0
          Лучше об этом написать здесь — https://github.com/bezumkin/miniShop2/issues
          Василий Наумкин
          28 июня 2020, 14:40
          0
          Фокус в том, что я этот код и не писал — что можно отследить по истории изменений.

          Вот мой код 4-хлетней давности, здесь нет никакой проверки телефона


          Потом 2 года назад она появилась


          А потом её немного переписали, но смысл тот же


          Так что, увы, это не я придумал делать телефон уникальным идентификатором покупателя. Документацию ты можешь изменить сам, она открыта — github.com/bezumkin/Docs
            Янис
            28 июня 2020, 17:03
            0
            Ок, русский вариант документации поправил. И насколько я понял, английской версии почти нет.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11