Ваш ключ: необходима авторизация | MyProxy - бесплатный обменник валидных прокси между пользователями форума.

Мерчант (PAYEER)

Тема в разделе Сайтостроительство, создана пользователем WarmUp, 14 янв 2016.

Войдите для ответа
  1. WarmUp Тыжпрограммист

    WarmUp
    Статус:
    Вне сети
    Сообщения:
    284
    Симпатии:
    134
    Регистрация:
    14.01.16
    Всем здрасти, вешал на свой проект этот магазинчик, решил поделится своим скриптом, можете организовать на своем сайте покупку чего-либо, а так-же бонусом вывод (!!!) денег для пользователей, так-же в автоматическом режиме.

    Для чего это нужно? Приведу свой проект как пример. Есть онлайн игра, в которой игроки покупают за реальные деньги виртуальную валюту. С помощью мерчанта я это настроил в автоматическом режиме (по мимо этого, юзеры регистрируются на платежке как мои рефералы и в будущем так-же приносят мне доход). Так-же, организован рефбек 20%. К примеру, ВАСЯ привел игрока ФЕДЯ. Сам ВАСЯ не вложил в проект ни копейки, а ФЕДЯ вложил 1000 рублей. ВАСЯ получает сразу же бонусом 200 рублей на вывод (напомню, вывод происходит так-же в автоматическом режиме, я теряю не много, а игрок может тупо приводить рефералов и зарабатывать реальные деньги).

    Вообщем, хватит лирики, начнем.

    Идем на сайт платежки - http://payeer.com, регистрируемся, получаем кошелек.

    Заходим в раздел "Магазин", жмем кнопку "Добавить магазин":

    [​IMG]

    Заполняем поля, название - произвольно, секретный ключ можете ввести свой, можете оставить дефолтный. Ну и ссылку на сайт:

    [​IMG]

    Далее, подтверждаем домен. Нам предлагают скачать файл и залить его в корневой каталог сайта. Тут, надеюсь все и так понятно. Заливаем, подтверждаем.
    Едем дальше. Нам нужно создать 3 странички. На первую будет кидать пользователя в случае успешной оплаты, на вторую - в случае ошибки, и третья - обработчик. Называем файлы как угодно но указываем точный путь до файлов, выкладываю листинг, с моего проекта.

    SUCCESS.PHP:

    PHP:
    <?php
    /*
    Гет данные которые получаем в случае успешной оплаты и можем использовать:

    m_operation_id=120902924 - Айди операции
    m_operation_date=11.01.2016%2006:21:21 - Дата заказа
    m_operation_pay_date=11.01.2016%2006:21:31 - дата оплаты
    m_orderid=1 - ордер айди (номер чека в нашем магазине)
    m_amount=0.01 - сумма
    m_curr=RUB - рубли
    m_status=success - успешная ли оплата

    ------------------

    Обязательно сделать проверку, есть ли в нашей базе такой order ID, если есть - останавливаем скрипт,
    если нету - добавляем order id в базу, добавляем туда же дату \ время оплаты счета,
    сумму которую купили, успешно или нет (были ли ошибки какие-то). Далее, начисляем игроку его плюшки,
    тому кто привел игрока начисляем бонус, выводим сообщение об успешном пополнении счета.

    */

    echo "Успешно пополнили счет на <b>".$_GET['m_amount']."</b> екр!<br>";
    echo 
    "Сохраните эту информацию, до поступления екров на Ваш счет:<br><br>";
    echo 
    "ID операции: ".$_GET['m_operation_id']."<br>";
    echo 
    "Сумма екров: ".$_GET['m_amount']."<br>";
    echo 
    "Номер чека : ".$_GET['m_orderid']."<br>";
    echo 
    "Дата заказа: ".$_GET['m_operation_date']."<br>";
    echo 
    "Дата оплаты: ".$_GET['m_operation_pay_date']."<br>";
    echo 
    "<hr>";
    ?>
    <a href="http://site.ru/"><b>[Вернуться на сайт]</b></a>
    FAIL.PHP:
    (на самом деле, я ни разу не встречался с этой страницей, т.к. все ошибки обрабатывает сам магазин и в случае не оплаты закроет сессию пользователю, но раз просят, сделаем)...

    PHP:
    <?
    echo 
    "Какая-то ошибка!";
    ?>
    STATUS.PHP:

    PHP:
    <?php
    if ($_SERVER['REMOTE_ADDR'] != '37.59.221.230') return; // АЙПИ оставляем, это айпи пейера.

    if (isset($_POST['m_operation_id']) && isset($_POST['m_sign']))
    {
        
    $m_key ' ******** '// наш секретный ключ
        
    $arHash = array($_POST['m_operation_id'],
                
    $_POST['m_operation_ps'],
                
    $_POST['m_operation_date'],
                
    $_POST['m_operation_pay_date'],
                
    $_POST['m_shop'],
                
    $_POST['m_orderid'],
                
    $_POST['m_amount'],
                
    $_POST['m_curr'],
                
    $_POST['m_desc'],
                
    $_POST['m_status'],
                
    $m_key);
        
    $sign_hash strtoupper(hash('sha256'implode(':'$arHash)));
        if (
    $_POST['m_sign'] == $sign_hash && $_POST['m_status'] == 'success')
        {
            echo 
    $_POST['m_orderid'].'|success';
            exit;
        }
        echo 
    $_POST['m_orderid'].'|error';
    }
    ?>
    И так, 3 файла есть, но это не все. Нам надо создать страничку, где пользователь выбирает, сколько и чего он покупает, сколько это будет стоить и сколько в итоге получит.

    PAY_IN.PHP:

    PHP:
    <form method="POST" action="check.php">
    1 екр 0.5 рублей<br// Да-да, цену на свой товар мы будем считать, делить...
    Укажите сумму (в екрах): <input type="text" name="m_amount" value="0">
    <
    input type="submit" name="m_process" value=" Купить екр " />
    </
    form>
    Как мы видим, данные из формы отправляются на страничку check.php, в которой забиты данные, куда будут направляться денюжки, считать сумму ну и выведет некоторую информацию пользователю.

    CHECK.PHP:

    PHP:
    <?php
    $bd_order_id 
    50// тут настраиваем импорт из базы id последнего чека, для примера запишем номер чека 50...
    $login_id "pers_id_536798"// Наша переменная, которая содержит информацию о логине покупателя
    $ekr $_POST['m_amount'] / 2// 1 екр = 0.5 рублей // То, что ввели до этого в форму делим на два = получаем цену нашего товара...
    $m_shop ' ******** '// ID вашего магазина
    $m_orderid $bd_order_id 1// берем наш номер чека и добавляем +1, в файл success.php обязательно добавьте обновление ячейки с номером последнего чека, обновляем этой переменной...
    $m_amount number_format($ekr2'.'''); // PAYEER принимает формат только в виде 1.00 \ 1.50 \ 10.00 , так что придаем такой вид сумме в рублях (или долларах)..
    $m_curr 'RUB'// Собственно, какую валюту принимаем.. USD - доллары, EUR - еврики..
    $m_desc base64_encode('Paid '.$_POST['m_amount'].' ekr for '.$login_id); // Описание к чеку, так и не разобрался с кириллицей...
    $m_key ' ******** '// наш секретный ключ

    $arHash = array(
        
    $m_shop,
        
    $m_orderid,
        
    $m_amount,
        
    $m_curr,
        
    $m_desc,
        
    $m_key
    );
    $sign strtoupper(hash('sha256'implode(':'$arHash)));
    ?>
    <form method="GET" action="https://payeer.com/merchant/">
    <input type="hidden" name="m_shop" value="<?=$m_shop?>">
    <input type="hidden" name="m_orderid" value="<?=$m_orderid?>">
    <input type="hidden" name="m_amount" value="<?=$m_amount?>">
    <input type="hidden" name="m_curr" value="<?=$m_curr?>">
    <input type="hidden" name="m_desc" value="<?=$m_desc?>">
    <input type="hidden" name="m_sign" value="<?=$sign?>">
    <?php echo "Покупка <b>".$_POST['m_amount']."</b> екров на сумму <b>".$m_amount."</b> рублей.<br>"?>
    <input type="submit" name="m_process" value=" Оплатить " />
    </form>
    И так, скрипт обработал всю информацию, подготовил новую форму которую уже отправляет на сервер PAYEER. Пользователь жмет оплатить, и покидает (временно) наш сайт... там оплачивает покупку, и попадает на SUCCESS.PHP

    Чуть не забыл, идем в наш магазин, раздел "внешний вид" и подключаем \ отключаем платежные системы, которые нам нужны (это если у покупателя нету в новосозданном кошельке payeer рублей, он может оплатить с другой платежки). У себя я оставил только эти: PAYEER, QIWI, Банковские карты, Мобильный платеж. Для любителей экзотики есть даже биткоины =)

    Теперь, нам надо отправить магазин на модерацию (иначе он будет работать только для вас, в тестовом режиме). Модерация проходит за день-два. На этом все, проверяйте работу скрипта. Пишите тут, будем разбираться если что не получится.

    Код голый, без оформления, так что вполне легко адаптируется под любой сайт, форму можно добавить на любую вашу страничку. Конечно, не маловажный фактор - работа с вашей базой данных, придется вести учет чеков, поэтому создавайте себе таблицу и работайте с ней. Если не умеете, это вам не надо. Если считаете что надо, пишите в ЛС, помогу за пару рублей. А еще лучше - погуглите, ничего сложного там нет, уроков работы с MySQL - миллионы в интернете.

    Всем спасибо за внимание, надеюсь кому-то это будет полезно. Статья моя, писал специально для LOLZTEAM!
    Копирайты и все такое %)

    На днях напишу, как сделать вывод денег из нашего магазина пользователям в автоматическом режиме. Такое мало где встречается, но поверьте, шанс заработать и тут-же вывести себе на кошелек деньги - ОЧЕНЬ привлекает посетителей)) Главное придумать хорошую схему.
     
    14 янв 2016 #1
    ERROR404 нравится это.
  2. Alex555 Новорег

    Alex555
    Статус:
    Вне сети
    Сообщения:
    1
    Симпатии:
    0
    Регистрация:
    14.03.16
    Привет. Вопрос есть по поводу магазина. Все поставил, все настроил, все работает. Единственное не пойму где собственно пользователю товар отдавать или его баланс на сайте пополнять? Деньги прошли, с его счета снялись - успех, в итоге даст страницу SUCCESS. Логично было бы начислять средства или отдавать товар в файле STATUS:
    <?php
    if ($_SERVER['REMOTE_ADDR'] != '37.59.221.230') return; // АЙПИ оставляем, это айпи пейера.

    if (isset($_POST['m_operation_id']) && isset($_POST['m_sign']))
    {
    $m_key = ' ******** '; // наш секретный ключ
    $arHash = array($_POST['m_operation_id'],
    $_POST['m_operation_ps'],
    $_POST['m_operation_date'],
    $_POST['m_operation_pay_date'],
    $_POST['m_shop'],
    $_POST['m_orderid'],
    $_POST['m_amount'],
    $_POST['m_curr'],
    $_POST['m_desc'],
    $_POST['m_status'],
    $m_key);
    $sign_hash = strtoupper(hash('sha256', implode(':', $arHash)));
    if ($_POST['m_sign'] == $sign_hash && $_POST['m_status'] == 'success')
    {
    echo $_POST['m_orderid'].'|success';

    ВОТ ТУТ НАЧИСЛЯЕМ БАЛАНС ИЛИ ОТДАЕМ ТОВАР!!!

    exit;
    }
    echo $_POST['m_orderid'].'|error';
    }
    ?>


    Но вот проблемка у меня. Пока тестовый режим прохожу.
    к месту в коде, который я пометил как "ВОТ ТУТ НАЧИСЛЯЕМ БАЛАНС ИЛИ ОТДАЕМ ТОВАР!!!" видимо обращение с PAYEER идет несколько раз. Потому что там у меня стоит код, который пишет лог в БД о покупках с их порядковыми номерами, датами и видами.
    Один раз тестовую оплату провел - одна запись, сидишь куришь - еще одна запись такая же появилась, потом еще, чай допил а там еще 5 записей. Я уже ничего не тестирую а записи летят!
    И кстати летят они без логина человека, который сделал покупку. Не определяется сессией логин почему то. Может из-за того, что это с IP PAYEER обращение идет к файлу STATUS?

    Надеюсь понятно объяснил проблему.
     
    14 мар 2016 #2
Top