| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Система платежей E-Gold |
| Автор: RomanK 20.3.2006, 22:56 |
| Вот создаю проект. В принципе все готово, но есть вопрос, который меня мучает. Вот, короче, у меня есть книжный магазин. Приходит человек, кидает книгу в корзину. Нажимает Buy, и отправляется на сайт E-Gold для оплаты книги. E-Gold предостовляет такую возомжность, чтобы можно было платить сразу с сайта. Там есть такая форма, куда можно написать, в hidden поля естественно, цену, которую должен заплатить юзер, URL1 - туда переходит человек с сайта E-Gold, если оплата прошла удачно, и URL2 - туда переходит человек с сайта E-Gold, если оплата прошла не удачно. Как делаю я: Есть таблица Paid. Эта таблица содержит временную информацию об оплате. Когда человек переходит в корзину, автоматически генерируется случайный md5 хешь. Этот хешь - это ID в таблице Paid. И в итоге E-Gold форма у меня содержит данные: Price: 10$ (например) URL1: http://site.ru/paid.php?paid_id= {тут этот md5 хешь} URL2: http://site.ru/nopaid.php?paid_id= {тут этот md5 хешь} Когда оплата прошла удачно юзер переходит на страницу http://site.ru/paid.php?paid_id= {тут этот md5 хешь}, где нужная книга добавляется в его профиль, и он сможет ее в дальнейшем читать. Когда оплата не прошла юзер переходит на страницу http://site.ru/nopaid.php?paid_id= {тут этот md5 хешь}, где информация из временной таблицы (Paid) удаляется. В итоге все отлично работает, если бы не одно НО. Если в корзине открыть HTML код страницы, и посмотреть эту форму, то можно увидеть: http://site.ru/paid.php?paid_id= {тут этот md5 хешь}. Тогда, если мы сразу же переходим по этой ссылке, то мы автоматом получаем эту книгу, без всякой оплаты. ВОТ В ЭТОМ ВСЯ И ПРОБЛЕМА Юзер, который хоть немного продвинут, ну хотя бы знает куда посмотреть, сможет легко "купить книгу" бесплатно. Вот вопрос: Что мне делать? Как поступить? Спасибо за внимание, и зарнее за помощь. P.S. Модераторы, извините, но вопрос толком не связан с PHP, но я не знал, куда его лучше запостить. Запостил сюда. Если не так, то перенесите в другой раздел пожалуйста. |
| Автор: mr.fox 20.3.2006, 23:00 |
| я что-то не пойму .. тебе хедерами передается статус оплаты .. тоесть переведены деньги или нет .. зачем тебе в урл сайта выдавать какую то инфу ? Ставь айди в сессию .. пихай его в базу и все. |
| Автор: RomanK 20.3.2006, 23:30 |
| mr.fox, мне хеадерами ничего не передается, если конечно я не ошибаюсь, ибо с этими системами впервые столкнулся. Я могу только назначить ссылку, на которую переходит юзер, после удачного перевода денег, и не удачного. Если ставить ID в сессию а не в адрес, то даже в HTML виде открывать не надо будет. Просто открываешь страницу http://site.ru/paid.php и все, книга тебе зачисляется как купленная. В этом то вся и проблема. Объясни пожалуйста, какие хеадеры ты имеешь ввиду? Я просто о них не слышал. |
| Автор: Ciber SLasH 21.3.2006, 00:17 |
| RomanK, по идеи должно быть так: 1) пользователь заходит на твою страницу, выбирает книги, жмёт "купить" и его перенаправляют в систему оплаты, где он оплачивает товар 2) после денежной операции, эта система перенаправляет пользователя на твою страницу и посылает ей мотодом POST данные о сделке 3) твой скрипт, который должен выполняться при удачной покупки, проверяет посланные ему данные, от магазина, о сделке 4) системы обычно пересылают некий CRC-сделки, который должен совпасть с твоим CRC (собирается из данных пользователя) К примеру ROBOXchange, при успешной оплате отсылает CRC, который собирается так: md5($out_summ.':'.$inv_id.':'.$mrh_pass1.':shp_id='.$shp_id), где: $out_summ — сумма оплаты; $inv_id — ID-сделки; $mrh_pass1 — пароль, который выдаёт ROBOXchange при регистрации; $shp_id — внутренний параметр магазина (необязательный) т.е. при покупки надо собрать такой CRC и записать в БД, а при проверки надо сравнить присланный CRC с CRC в БД. Добавлено @ 00:19 Поищи мануал по своей системе оплаты. |
| Автор: RomanK 21.3.2006, 20:09 |
| Ciber SLasH, в принципе, то, что ты написал - логично. Я догадывался, что все-таки, что-то, какие-то данные приходят с сайта платежной системы после оплаты, но до сих пор, не проверял, да и возможности пока не было. Кто-нибудь из сдешних не знает что-нибудь типа этого про E-Gold? Если знаете, отпишите пожалуйста. Сам я тоже пошел искать на сайт E-Gold`a, только с английским у меня не очень... поэтому долго наверно искать буду. |