Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Бот робокассы и завершение сессии

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
ginec
Отправлено: 05 Мая, 2011 - 09:19:41
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Здравствуйте! Я принимаю платежи с помощью Робокассы. сейчас тестирую свой магазин с помощью их тестового сервера. CMS Joomla 1.5( не ругайтесь ). Компонент писал сам.
Моя проблема заключается в сессиях. После успешной оплаты, необходимо скинуть все товары, которые есть в корзине, т.е. завершить сессию. Когда робот Робокассы переходит по Result URL, в БД все заносится успешно, но сессия не скидывается. Более того, при переходе по Success URL или Fail URL, я оказываюсь разлогиненным на своем сайте, но при переходе на другую страницу сайта оказываюсь залогиненым. Чем это объясняется и можно ли этого избежать? Еще раз подчеркну мой вопрос: как сделать так, чтобы после запроса робота Робокассы Result URL и перехода на Success URL и сессия закрывалась? Заранее благодарен!

--

(Отредактировано автором: 05 Мая, 2011 - 10:54:08)

 
 Top
Viper
Отправлено: 05 Мая, 2011 - 09:25:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)






-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
ginec
Отправлено: 05 Мая, 2011 - 09:33:49
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




я ставил так
PHP:
скопировать код в буфер обмена
  1. $session = JFactory::getSession();
  2. $session->set('places', null); //вообще в этой сессии хранится массив.

Но так не завершается.
Цитата:
Более того, при переходе по Success URL или Fail URL, я оказываюсь разлогиненным на своем сайте

(Отредактировано автором: 05 Мая, 2011 - 09:35:24)

 
 Top
Viper
Отправлено: 05 Мая, 2011 - 11:11:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




ginec пишет:
я ставил так
ну это вы установили данные в сессии.

аналог unset это метод clear

$session = JFactory::getSession(); не вернет вам текущую сессию, т.к. нужно ещё передать массив с параметрами.

не пробовали $session = &JSession::getInstance('default', array()); ?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
ginec
Отправлено: 05 Мая, 2011 - 12:59:45
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Спсибо.
Сделал так
PHP:
скопировать код в буфер обмена
  1. JSession::clear( 'places', 'default' );

но корзина не опустела((
Поясните. если не сложно, в чем отличие
PHP:
скопировать код в буфер обмена
  1. $session = &JSession::getInstance('default', array());

от
PHP:
скопировать код в буфер обмена
  1.  $session = JFactory::getSession();



И какие параметры есть у этого метода. гуглил, но ничего толкового не нашел.

И все же вопрос пока не решен
(Добавление)
При переходе с робокассы, корзина становится пустой, но если перехожу на другую страницу, то и корзина не пуста

(Отредактировано автором: 05 Мая, 2011 - 14:05:10)

 
 Top
Viper
Отправлено: 05 Мая, 2011 - 14:51:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




ginec через getInstance можно обратиться не только к сессии по умолчанию. Если к примеру их несколько.
ginec пишет:
И какие параметры есть у этого метода
все параметры обоих подходов одинаковы и находятся в описании к JSession.
ginec сделайте дебаг сессии. print_r до работы с кассой, и после. Посмотрите что у вас передается от страницы к странице.

PS!
ginec пишет:
Более того, при переходе по Success URL или Fail URL, я оказываюсь разлогиненным на своем сайте
есть подозрение на баг в 1,5 ветке. Встречал мимолетное упоминание об этом на joomla dev. В 1.6 по заверениям уже исправлено.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
ginec
Отправлено: 05 Мая, 2011 - 16:28:23
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




может надо token передавать? уже голова ломается...
(Добавление)
Viper, спасибо за помощь! в контроллере у меня за проверку result url отвечал task paymentChecker, после переименования в payment все заработало. видать из-за camelCase
 
 Top
Zuldek
Отправлено: 05 Мая, 2011 - 17:40:42
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




А что будет если:

1. Сессия умрёт до того как придёт запрос на reselt/success url, например через 9-10 часов (оплатил заказ на следующее утро через терминал)?
2. Если запрос на Reselt url вообще не придёт так и останется полная корзина пока сессия не умрёт?

Не очень понял зачем держать товар в корзине после инициации оплата заказа. В скриптах которые писал, подсмотрев на других интернет-магазинах, после оплаты, или инициации оплаты заказа товары из корзины удалялись и отображались в журнале заказов профиля клиента где и можно было следить за их статусом. Оттуда же они могли быт ьперенесены в корзину (если не проплатил и захотел-таки оплатить, либо если захотел сделать повторный заказ тех же товаров). Каждые 10.5 часов заказанный неоплаченный товар разблокировался для заказа другими клиентами.

(Отредактировано автором: 05 Мая, 2011 - 17:43:06)

 
 Top
ginec
Отправлено: 05 Мая, 2011 - 17:58:44
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Zuldek пишет:
Не очень понял зачем держать товар в корзине после инициации оплата заказа.

Размышляете Вы интересно. И даже заставили меня засомневаться в моих действиях. Т.е. вы предлагаете избежать сессий и заносить в бд товар и idUser?
 
 Top
ginec
Отправлено: 06 Мая, 2011 - 13:05:44
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Не знаю, как заказчик отнесется к такой идее. Там ситуация сложная. Если обходиться без сессий, то получается надо чтобы юзер был залогинен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB