Webmoney Merchant и php

Тема в разделе "PHP", создана пользователем rasandrey, 25 июл 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Кто работал над интеграцией оплаты через webmoney? В общем есть форма, куда вводится сумма для пополнения вручную:

    HTML:
    <form id=pay name=pay method="POST" action="https://merchant.webmoney.ru/lmi/payment.asp">
    <input type="text" name="LMI_PAYMENT_AMOUNT" value="">
    <input type="hidden" name="LMI_PAYMENT_DESC" value="пополнение"> 
    <input type="hidden" name="LMI_PAYMENT_NO" value="{$pop_id_user}"> 
    <input type="hidden" name="LMI_PAYEE_PURSE" value="R188039656147">
    <input type="hidden" name="LMI_SIM_MODE" value="0"> 
    <input type="hidden" name="rmode" value="r">
    <input type="submit" value="Пополнить">
    </form>
    Как теперь мне можно получить сумму, которую ввел пользователь в поле LMI_PAYMENT_AMOUNT в Result URL?

    Пробую так:
    PHP:
                if($_POST['LMI_PREREQUEST'] == 1) {
                
    session_start();
                
    $_SESSION['amount'] = $_POST['LMI_PAYMENT_AMOUNT'];
                echo 
    'YES'
                
    }
    Но $_SESSION['amount'] остается пустым...
    подскажите плиз
     
  2. WorldsSpawn

    WorldsSpawn Создатель

    Регистр.:
    30 мар 2009
    Сообщения:
    15
    Симпатии:
    12
    Ну конечно же пустым, ведь запрос идет на другой сервер)

    Попробуй значение брать к примеру средствами аякса, в этом случае и суммы в разных валютах сможешь выводить)
     
  3. DupleX

    DupleX Создатель

    Регистр.:
    20 апр 2006
    Сообщения:
    26
    Симпатии:
    4
    Проверь на выходе LMI_PAYMENT_AMOUNT - выходит ли он, и потом проверь на получении $_POST['LMI_PAYMENT_AMOUNT'] - до своего условия
     
  4. RomAndry

    RomAndry Постоялец

    Регистр.:
    21 ноя 2007
    Сообщения:
    102
    Симпатии:
    24
    Перед отправкой серверу - писать в базу и при получении сверять все.
     
  5. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    разобрался, сделал немного иначе: 1 форма перекидывает на страницу с другой формой (где уже есть поля с первой формы под hidden) и типа сообщение :
    "Сейчас будет выполнено перенаправление. Если Ваш браузер не поддерживает перенаправление, нажмите кнопку :"

    Увидел на одном из сайтов, посчитал, что так будет удобнее
     
    Agler нравится это.
  6. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    ИМХО это проще - является полным бред ....

    пример:
    на странице А юзер вводит цену 1$
    ( насколько я понял то приложения "Локально" фиксирует эту цену)

    его перекидывает на страницу B где под хайдом уже прописан 1$ ....
    юзер открывает исходный код страницы и изменяет 1$ на 0.01$

    Потом с страницы B его перекидывает на Мерчант с запросом на оплату 0.01$ а не 1$ ....

    А так как фиксация походу идет на первой странице где стоит 1 бакс то после получения ответа об успешно завершенной операции будете думать что вам заплатили 1 бакс а на самом деле окажется что 0.01 ......
    ---------------------------------------------------
    в Result URL сумма берется из $_POST['LMI_PAYMENT_AMOUNT'] но хранить ее в сессии никакого смысла особенно сохраняя на странице Result URL

    если вы хотите юзеру на финальной странице написать что-то типа "вы заплатили столько то денег... бла-бла-бла" ...
    то более верным будет при проверке в Result URL сохранить номер платежа в БД (и с ним цену и все что нужно ) ... а на результируюзей странице брать номер платежа ( который туда передаст мерчант) и по нему драть все что нужно с бД
    или же по номеру платежа через X18 проверять результат и оттуда цену брать
     
  7. Sachek

    Sachek Умелый

    Регистр.:
    23 мар 2009
    Сообщения:
    383
    Симпатии:
    103
    Маленько не понял, как человек "меняет исходный код страницы" :)
    Я к сожалению не работал с вебмани, работал с либерти. Но суть мерчанта одна и та же.
    Я делал по простому - бралось 2 страницы, к примеру на первой странице вписывалась сумма, на второй странице выводилась эта сумма из сессии и к примеру требовалось подтвердить капчей или ввести скажем емейл и счет, после чего все данные загонялись в переменные и переменные пересылались на мерчант :) Это я привел пример сервиса по обмену валют (кусочек обработчика).
    Через базу со сверкой переменных можно, но это туго и тупо...
    Хотя возможно я и ошибаюсь, но этом чисто мое ИМХО.
     
  8. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    для обменника нужно проверять как минимум есть ли нужная сумма денег для обмена ... ну а эту сумму естественно с БД брать ...
    для магазина нужно проверять соответствует ли сумма оплаты стоимости товара ... - ну а стоимость товара то вить тоже в БД храниться ...
    можно не проверять наверно только если на ваш кошелек жертвуют произвольную сумму денег не имеющую ни к чему отношения

    возьмем какой-то обменник ... к примеру этот __changer.ru ( курс у них конечно не лучший )
    1 страница - выбираем валюты для обмена + их количество
    ( написано что резерв валюты ограничен но в поле можно ввести и 99999999999 .. на след. страницу перейдет ... - недоработачка однако )
    2 страница - указываем кошельки ( + можно менять сумму для обмена ... зачем усложнять непонятно )
    на этом этапе кошельки проверяются на достоверность ( существует ли кошелек ... принадлежат ли они 1-му WMID... не заблокированы ли они )
    3 страница - типа пишет введенные мною данные ..
    4 страница - че-то там левое написано
    5 страница - самое интересное ....
    здесь че-то написано мол ща вас перенаправит на мерчант... и типа если вас не перенаправит нажмите кнопку продолжить ...
    так вот здесь банальным нажатием "стоп" в браузере прекратили выполнение скрипта ....
    открываем исходный код и меняем сумму с 1 бакса на 0.01 ( в HTML коде :D )
    http://ipicture.ru/uploads/100730/d3wgVIcQ96.png
    и жмем "применить изменения"
    после чего нажимаем ту кнопку "продолжить" на странице с редиректом
    ну и нас перекидывает на мерчант
    [​IMG]
    где просят заплатить 0.01 доляр ( на не 1 доляр который вводили в форму )
    самое забавное что оплата прошла ... сняли падлы 0.01 доляра с кошелька + 0.01 комиссию

    и на мыло пришло следующее
    Здравствуйте! Ваша заявка №89081 на перевод средств 1 из WMZ Webmoney в WMR Webmoney в системе "Changer.ru" принята к исполнению
    это значит что они используют те данные которые пользователь ввел в форму ( на шаге 1 или 2 ) а не те которые мерчант передал на водтверждение в "Result URL" .... видать там у них и нет никакой проверки ....
    бабки сняли 0.01 вмз а эквивалент рублей не переводят, видят ждут пока с моего кошелька поступит 1 бакс ... да и сомневаюсь что уже вернут 0.01... хотя если не ошибаюсь то обменник должен возвращать средства по которым не был совершен обмен ...
    возможно если бы это был какой-то магазин ( или прогер немножко глупее ) то все бы получилось ... за 0.01 доляр мне бы перевели 0.29 рубля ну или купил бы что-то за 0.01доляр ...
     
  9. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.718
    Симпатии:
    5.693
    Угу... WMID в бан могут отправить с помощью тузлы небезизвестного клуба.
    Логи попытки взлома налицо (подмена суммы). Рекомендую так не шутить :)
     
    chang нравится это.
  10. dani.

    dani. Создатель

    Регистр.:
    19 сен 2008
    Сообщения:
    32
    Симпатии:
    6
    намекните что за тулза?
     
Статус темы:
Закрыта.