Оплата с помощью WebMoney

Discussion in 'PHP' started by Rastamanka, 18 Mar 2012.

  1. Rastamanka

    Rastamanka Elder - Старейшина

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    В общем необходимо сделать автоматическую оплату с помощью WebMoney. Который после покупки выдает рандомный логин и пасс юзеру.
    Есть URL https://merchant.webmoney.ru/conf/guide_simple.asp
    Но не очень понятно где в данном примере мне потом отдавать логин и пасс сгенерированный. Так понимаю в success.html но как определить что пользователь произвел оплату а не напрямую зашел на ту страницу подменив referer.
     
  2. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    //кэп
     
  3. Rastamanka

    Rastamanka Elder - Старейшина

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    Туда скорее всего уходить что оплачено админское сообщение. А как мне юзеру то данные выдать после оплаты?
     
  4. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    http://wiki.webmoney.ru/wiki/show/Web+Merchant+Interface#12
     
  5. winter_silence

    winter_silence New Member

    Joined:
    22 Nov 2008
    Messages:
    21
    Likes Received:
    4
    Reputations:
    0
    Работал с другой платежной системой, но принцип думаю остается тот же:

    1) На твоем сайте изначально при покупке товара формируешь подпись из нужных данных, все это отправляется на мерчант для произведения оплаты.

    2) Мерчант после получения оплаты от пользователя отправляет данные на ResultURL (пользователь при этом находится на мерчанте).

    3) В ResultURL происходит проверка валидности присланных данных, и если все ок тут же можно произвести необходимое действие - в данном случае сгенерировать и дать пользователю пароль. Тут можно как угодно сделать - записать его в свою базу и отправить пользователю на мыло (мыло можно узнать в процессе оплаты).

    4) Ну и последнее действие - мерчант после оплаты предлагает перейти на SuccessURL - тут уже просто уведомление об успешной покупке на твоем сайте, может выборка ранее сгенерированного пароля из базы и показ его пользователю.
     
  6. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Как-то так. Естественно поправишь под себя.
    PHP:
    <?php    
        
    if (isset($_POST['LMI_PREREQUEST']) && $_POST['LMI_PREREQUEST'] == 1)
        {
            
    $query mysql_query("SELECT `id`, `type`, `amount`, `sotki`, `status`, `to` FROM `payments` WHERE `id` = '" intval($_POST['LMI_PAYMENT_NO']) . "' LIMIT 1");
            if (
    mysql_num_rows($query))
            {
                
    $row mysql_fetch_array($query);
                if (
    $row['status'] != 'wait')
                {
                    echo 
    'ERR: Заказ уже обработан';
                    
    mysql_query("UPDATE `payments` SET `status` = 'not paid' WHERE `id` = '" intval($_POST['LMI_PAYMENT_NO']) . "'");
                }
                else
                if (
    $row['to'] == 'order' && $_POST['userid'] == '0')
                {
                    echo 
    'ERR: Вы не можете пополнить личный счет';
                    
    mysql_query("UPDATE `payments` SET `status` = 'not paid' WHERE `id` = '" intval($_POST['LMI_PAYMENT_NO']) . "'");
                }
                else
                if (
    $row['amount'] != trim($_POST['LMI_PAYMENT_AMOUNT']))
                {
                    echo 
    'ERR: НЕВЕРНАЯ СУММА';
                    
    mysql_query("UPDATE `payments` SET `status` = 'not paid' WHERE `id` = '" intval($_POST['LMI_PAYMENT_NO']) . "'");
                }
                else
                if (
    $row['sotki'] != trim($_POST['count']))
                {
                    echo 
    'ERR: НЕВЕРНОЕ КОЛИЧЕСТВО СОТОК';
                    
    mysql_query("UPDATE `payments` SET `status` = 'not paid' WHERE `id` = '" intval($_POST['LMI_PAYMENT_NO']) . "'");
                }
                else
                if (!
    in_array(trim($_POST['LMI_PAYEE_PURSE']), array($global['WMZ'], $global['WMU'], $global['WME'], $global['WMR'])))
                {
                    echo 
    'ERR: НЕВЕРНЫЙ КОШЕЛЕК ПОЛУЧАТЕЛЯ ' $_POST['LMI_PAYEE_PURSE'];
                    
    mysql_query("UPDATE `payments` SET `status` = 'not paid' WHERE `id` = '" intval($_POST['LMI_PAYMENT_NO']) . "'");
                }
                else
                {
                    echo 
    "YES";
                }
            }
            else
            {
                echo 
    'ERR: Заказ не найден';
            }
        }
        else
        {
            
    error_reporting(0);
            
    $secret_key $global['wmsecret'];
            
    $common_string $_POST['LMI_PAYEE_PURSE'].$_POST['LMI_PAYMENT_AMOUNT'].$_POST['LMI_PAYMENT_NO'].
                
    $_POST['LMI_MODE'].$_POST['LMI_SYS_INVS_NO'].$_POST['LMI_SYS_TRANS_NO'].
                
    $_POST['LMI_SYS_TRANS_DATE'].$secret_key.$_POST['LMI_PAYER_PURSE'].$_POST['LMI_PAYER_WM'];
            
            
    $hash strtoupper(md5($common_string));
        
            if (
    $hash == $_POST['LMI_HASH'])
            {
             
    // ВСЕ ОК!!!!!!!!
                
    $query mysql_query("UPDATE `payments` SET `status` = 'paid', `paidtime` = '" mysql_real_escape_string($_POST['LMI_SYS_TRANS_DATE']) . "', `wmpurse` = '" $_POST['LMI_PAYER_PURSE'] . "', `wmid` = '" $_POST['LMI_PAYER_WM'] . "' WHERE `id` = '" intval($_POST['LMI_PAYMENT_NO']) . "'");
                
    $info getInfoPayment($_POST['LMI_PAYMENT_NO']);
                
    order($info['userid'], $info['nickname'], $info['sotki']);
            }
        }
     
    3 people like this.
  7. Ty4ka

    Ty4ka New Member

    Joined:
    9 Aug 2010
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Обязательно надо иметь аттестат продавца? Я так и не понял.
    Вроде на сайте вм написано, что можно принимать "подарки" до 5.000 в день и до 30.000 в месяц и для этого не нужно иметь атт. продавца, но на нем же написано, что чтобы использовать интерфейс веб мани мерчанта, нужно сначала получить атт. продавца...
     
  8. winter_silence

    winter_silence New Member

    Joined:
    22 Nov 2008
    Messages:
    21
    Likes Received:
    4
    Reputations:
    0
    Для автоматического приема wm обязателен персональный аттестат.

    Без персонального аттестата как вариант использовать такой способ: статично выводить сформированную ссылку для платежа, при нажатии на этот линк у пользователя всплывает окно вм кипера (если он запущен) где уже заполнены реквизиты для перевода. В свою очередь после приема платежа вручную выполняешь нужную услугу, способ экзотический, но одно время помог

    PHP:
    echo"<center><a href=wmk:payto?Purse=R111111111111&Amount=$k_summ&Desc=Оплата%20PIN%20кода%20на%20сумму%20$k_summ%20рублей&BringToFront=Y><b>
    Оплатить PIN код на сумму <font color=red>
    $k_summ WMR</font></b></a></center>";
    echo
    "<br>После оплаты Вам будет выслан PIN код активации баланса на сумму <font color=red>$k_summ </font>WMR, в течении 24 часов на ваш <b>WebMoney keeper</b> !";
    ?>
     
    1 person likes this.
  9. Yrec23

    Yrec23 New Member

    Joined:
    12 Apr 2013
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Наличие аттестата приветствуется! С аттестатом все в разы проще.
     
  10. Yrec23

    Yrec23 New Member

    Joined:
    12 Apr 2013
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Аттестат по деньгам обойдется в 600-700 рублей. Это не такие уж и большие деньги, если ты решил заработать, а не баловаться со скриптами в попытке кого-нить кинуть. С аттестатом можно и на Joomla поставить модуль и на Wordpress без головной боли, VirtueMart, SWMoney script наконец на сайт воткнуть и торгуй на здоровье!
    Ты представь что ты хочешь открыть магазин в реале без вклада! Не платить за аренду, не платить за оборудование и торговать воздухом, да еще и счет в банке без оплаты ежемесячной взять, чтобы с Юр. лицами по безналу работать... Себя послушайте ребята! Что за бред! Вложите денег хоть немного и ловите выхлоп от них, если конечно руки не из задних норманнов на джинсах растут.