Магазин в iframe

У моей компании есть интернет-магазин, который используется сторонними продавцами для продажи своих товаров. У каждого продавца есть своя страница со списком всех его товаров. Многие просили дать возможность встроить их страницу в собственный сайт через iframe, и мне удалось создать встраиваемую версию их страницы, причем весь код на сервере выполняется корректно: создается новый заказ, он заполняется списком всех купленных товаров, а затем покупатель отправляется на страницу корзины нашего сайта. Этот процесс выгоден нам, потому что таким образом мы генерируем трафик на наш магазин, а покупатели могут посмотреть на товары других продавцов, увеличивая наш потенциальный доход. Это также позволяет мне переписывать гораздо меньше кода, поскольку мне не нужно создавать встраиваемую версию каждой страницы от покупки до выплаты.

Как я уже сказал, заказ регистрируется правильно, но когда пользователь попадает на страницу корзины, корзина всегда пуста. Объясню процесс немного подробнее: наш магазин позволяет незарегистрированным пользователям класть товары в корзину, но при оформлении заказа они должны зарегистрироваться или войти в систему. Зарегистрированные пользователи связаны со своим заказом в базе данных (это означает, что таблица "order" содержит колонку "user"), в то время как незарегистрированные пользователи сохраняют связь со своим заказом в переменной сессии.

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

После того, как пользователь отправляет заказ в iframe, он отправляется на страницу, все еще встроенную в iframe, которая содержит этот простой javascript:

window.top.location.href = "[basket URL]";

Это позволяет фрейму изменить URL родительской страницы.

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

SESSION_COOKIE_SAMESITE = 'None'
SESSION_COOKIE_SECURE = True

(на основе данного вопроса)

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

В качестве решения я подумал, что страница перенаправления может добавлять GET-запрос к URL, содержащему ID заказа, и я уверен, что смогу легко заставить это работать, но в то же время я чувствую, что это плохая идея, потому что этим можно злоупотреблять для "кражи" корзин других пользователей

Надеюсь, я дал вам достаточно элементов, чтобы найти ответ, но если вы чувствуете, что вам нужно знать больше, не стесняйтесь спрашивать.

Заранее спасибо за помощь.

Вернуться на верх