Авторские статьи Делаем оплату WebMoney без аттестата

Discussion in 'Статьи' started by FollowMe, 23 Oct 2011.

  1. FollowMe

    FollowMe Banned

    Joined:
    26 Sep 2011
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    В этой статье я расскажу как сделать на сайте, средствами PHP автоматическую оплату по ВМ без аттестата продавца.

    Нам нужно:

    1. Любой WMID
    2. Аккаунт на digiseller.ru
    3. Знания PHP (Косвенные)

    Недавно потребовалось прикрепить к сайту оплату (автоматическую) и тут облом: нужен аттестат продавца.

    Меня это не смутило и я вспомнил о сервисе digiseller.ru, а именно о том, что там есть API. С помощью XML можно проверять оплату товара.

    Первым делом я сделал аккаунт, добавил новый товар с неограниченым количеством продаж и выставил цену. Так-же товаром был уникальный код, который и будет проверятся у нас на сайте.

    Получил ссылку: http://www.oplata.info/asp/pay_unit.asp?id_d=*******
    [​IMG]

    Добавил в панельке digiseller кошельки, авторизовал их и прикрепил.
    Попробовал оплатить 3 единицы товара и все прошло удачно.

    Работает так: На WMID покупателя высылается счет, который он оплачивает, а дальше digiseller делает все сам.


    На сайте я быстро сделал форму, сверху которой была ссылка на oplata.info для покупки уникального кода.
    Формой-же было поле, в которое вводится этот код, посылается запрос на digiseller и получаешь: Сумму оплаты и валюту.

    Вот скрипт приема купленного с digiseller кода и обработки:
    PHP:
     if (isset($_POST['xcode'])) { // Если код передается скрипту с именем xcode

      if (strlen($_POST['xcode']) == 16) { // Код на digiseller равен 16 символам

            $code = $_POST['xcode']; // Вводим переменную с кодом

              function _GetAnswer($address, $xml){ 
         $ch = curl_init($address); 
         curl_setopt($ch, CURLOPT_HEADER, 0); 
         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
         curl_setopt($ch, CURLOPT_POST,1); 
         curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
         $result=curl_exec($ch); 
         return $result; 
       } 
       $sign = md5("id продавца:$code:password от продавца"); // Тут заполняем в соответствии с своими данными
       $xml = '<?xml version="1.0" encoding="windows-1251"?>
    <digiseller.request>
    <id_seller>тут твой id</id_seller>
    <unique_code>'.$code.'</unique_code>
    <sign>'.$sign.'</sign>
    </digiseller.request>';
       $answer=_GetAnswer("http://shop.digiseller.ru/xml/check_unique_code.asp", $xml); 
       $xmlres = simplexml_load_string($answer);  

    function object2array($object) { return @json_decode(@json_encode($object),1); } 
    $xmlres = object2array($xmlres); // переводим XML в массив

    if ($xmlres['retdesc'] == "не найден unique_code (код ошибки 1)") { // проверяем, есть ли вообще такой код
    echo "Код не найден";
    } else {
    $type = $xmlres['type_curr']; // получаем валюту (WMZ, WMR, WMU)
    $amount = $xmlres['amount']; // получаем сумму
    if ($type == "WMR") {
    $amount = $amount/30; // тут меняете курс рубля на свой

    }
    if ($type == "WMU") {
    $amount = $amount/8; // тут курс гривны на свой
    }
    $amount = round($amount,3);
    $inv = $xmlres['inv'];
    $date = date('l jS \of F Y h:i:s A');
    $query = mysql_query("SELECT * FROM pays WHERE inv='$inv'"); // pays - таблица с оплатами
      if (mysql_num_rows($query) == 0) { // проверяем, был ли использован код
      $login = "логин пользователя";

    $query = mysql_query("INSERT INTO pays (inv, amount, date, login) VALUES ('$inv', '$amount', '$date', '$login')") or die("MySQL ERROR: ".mysql_error());; 


    $balance = mysql_query('select * from users where login = "'.$login.'" limit 0,1') or die("MySQL ERROR: ".mysql_error());; // получаем текущий баланс пользователя

    $balance = mysql_fetch_array($balance);
    $balance = $balance['balance'];
    $amount = $balance + $amount; // прибавляем

    $query = mysql_query("UPDATE users SET balance='$amount' WHERE login='".$login."'") or die("MySQL ERROR: ".mysql_error());; 

    echo "Счет пополнен! Редирект...";
    echo '<script language = \'javascript\'>
      var delay = 2000;
      setTimeout("document.location.href=\'\/\'", delay);
    </script>';

    } else {
    echo "Код уже был использован";
    }
    }
    } else {
      echo "<b>Введите правильный код!</b>";
      }
      }
    ВАЖНО! После того как получили информацию и обновили баланс клиента - создайте базу с кодами, поскольку ввести один и тот-же код можно несколько раз и баланс соответственно пополнится несколько раз. (В скрипте это реализовано)

    С Вами был ИдиЗаМной! Бросил в тебя веником :D
     
    #1 FollowMe, 23 Oct 2011
    Last edited: 23 Oct 2011
  2. Coder +++

    Coder +++ Elder - Старейшина

    Joined:
    24 May 2011
    Messages:
    111
    Likes Received:
    25
    Reputations:
    13
    Спасибо,познавательно.
     
  3. «DEXTER»

    «DEXTER» Member

    Joined:
    20 Jul 2011
    Messages:
    7
    Likes Received:
    20
    Reputations:
    0
    FollowMe, ничего нового не узнал, но молодец, что отписал.
    ну это не сравнить с функциями Merchanta конечно :)
    Это сойдет для продажи icq номеров допустим или ключей активаций, но больше не для чего существенного :)
     
  4. Zigert

    Zigert Member

    Joined:
    24 Jun 2009
    Messages:
    50
    Likes Received:
    8
    Reputations:
    0
    думаю для оплаты на моем мелком сайте подойдет, спасибо попробую запилить!+
     
  5. HBWS

    HBWS Member

    Joined:
    26 Nov 2010
    Messages:
    226
    Likes Received:
    22
    Reputations:
    0
    А продажи не упали случайно? Не всех привлечет морока с кодом
     
  6. Legenda7

    Legenda7 New Member

    Joined:
    28 Nov 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Помогите разобраться.. Как использовать этот скрипт? Куда его вставлять?
    id продавца - регистрационный номер?
     
  7. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    интерестная статья !
     
  8. leaderru

    leaderru Member

    Joined:
    19 May 2010
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    Я видел несколько вариантов решения, но ваш способ - лучший
     
  9. CheatXX

    CheatXX New Member

    Joined:
    8 Jun 2009
    Messages:
    154
    Likes Received:
    2
    Reputations:
    0
    Уважаемый продавец! Для осуществления продажи ваших товаров через собственный магазин вам необходимо до 20.12.2011 получить на сайте центра аттестации аттестат не ниже начального (желательно персональный) и внести соответствующие изменения в ваши платежные реквизиты. В противном случае, ваши товары, выставленные на продажу в собственном магазине после указанной даты, не будут доступны для покупки. Данное ограничение касается только тех товаров, у которых в разделе «Товары > Список» в графе «торговая площадка» указан «Мой магазин». Другими словами товары, одновременно размещенные на торговой площадке и в собственном магазине, под данное ограничение не попадают.
     
  10. CheatXX

    CheatXX New Member

    Joined:
    8 Jun 2009
    Messages:
    154
    Likes Received:
    2
    Reputations:
    0
    там нужно давать доверенность к своему кошельку? что бы они могли выводить средства с твоего кошелька?
     
  11. CheatXX

    CheatXX New Member

    Joined:
    8 Jun 2009
    Messages:
    154
    Likes Received:
    2
    Reputations:
    0
    работает только с начальным и выше аттестатом
     
  12. Orion_AL

    Orion_AL New Member

    Joined:
    20 Feb 2010
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Спасибо за инфу!
     
  13. web-expert

    web-expert New Member

    Joined:
    25 May 2013
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Есть вариант поинтересней, приём напрямую на кошелек через Выписку счета без аттестата с помощью http://forum.antichat.ru/thread403704.html