Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Система платежей E-Gold


Автор: RomanK 20.3.2006, 22:56
Вот создаю проект. В принципе все готово, но есть вопрос, который меня мучает. smile

Вот, короче, у меня есть книжный магазин. Приходит человек, кидает книгу в корзину. Нажимает 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 хешь}. Тогда, если мы сразу же переходим по этой ссылке, то мы автоматом получаем эту книгу, без всякой оплаты. ВОТ В ЭТОМ ВСЯ И ПРОБЛЕМА
Юзер, который хоть немного продвинут, ну хотя бы знает куда посмотреть, сможет легко "купить книгу" бесплатно.

Вот вопрос: Что мне делать? Как поступить? smile

Спасибо за внимание, и зарнее за помощь. smile

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 и все, книга тебе зачисляется как купленная.
В этом то вся и проблема.

Объясни пожалуйста, какие хеадеры ты имеешь ввиду? Я просто о них не слышал. smile

Автор: 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? Если знаете, отпишите пожалуйста. smile
Сам я тоже пошел искать на сайт E-Gold`a, только с английским у меня не очень... поэтому долго наверно искать буду. smile Если найду что-нибудь, отпишу здесь, может кому еще понадобится.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)