Jump to content

OPENPAYZ ROBOKASSA


Recommended Posts

Привет, простите что не по правилам, не проверял, но должно работать ))

backend

 

<?php
$rkConf = parse_ini_file('config/robokassa.ini');

$ispUrl = $rkConf['TEMPLATE_ISP_URL'];
$ispName = $rkConf['TEMPLATE_ISP'];
$serviceDesc = $rkConf['SERVICE_DESC'];


function rk_PricesForm() {
    $result = '<form action="" method="GET">';
    if (!isset($_GET['customer_id'])) {
    $result.= '<H3>Введите Ваш платежный ID<br>и необходимую для пополнения сумму</H3><br>';
    $result.= 'ID&nbsp;<input name="customer_id" type="text" title="Ваш платежный ID Вы можете найти в личном кабинете пользователя, это 10-значный цифровой номер" size="10" maxlength="10" required pattern="[0-9]{10}" placeholder="0000000000"><br><br>';
    }else{
    $result.= '<H3>Ваш платежный ID'.$_GET['customer_id'].'<br>Введите необходимую для пополнения сумму</H3><br>';
    $result.= '<input name="customer_id" type="hidden" value="'.$_GET['customer_id'].'"> ';
    }
    $result.= '<input style="margin: 0 0 0 16px;width: 6em;" name="amount" type="number" step="50" min="150" max="10000" placeholder="150" maxlength="5" required ><br><br>';
    $result.= '<input type="submit" value="Далее">';
    $result.= '</form>';

    return ($result);
}

function rk_PaymentForm() {
    global $rkConf;
    $mrh_login = $rkConf['LOGIN'];
    $mrh_pass1 = $rkConf['PASS1']; 
    $inv_id = 0;
    $out_summ = $_GET['amount'];
    $shpa = $_GET['customer_id'];
    $inv_desc = "Оплата услуг связи ID".$shpa;
    $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:shpa=$shpa");
    $result.= '<H3><b>'.$inv_desc.'<br>На сумму '.$out_summ.'&#x20bd;</b><br>Нажимая на кнопку  «Оплатить»<br>Вы соглашаетесь с введенными данными!</H3><br>';
    $result.= '<script language=JavaScript src="https://auth.robokassa.ru/Merchant/PaymentForm/FormMS.js?MerchantLogin='.$mrh_login.'&OutSum='.$out_summ.'&InvId='.$inv_id.'&Description='.$inv_desc.'&SignatureValue='.$crc.'&shpa='.$shpa.'"></script>';

    $result.= '';

    return ($result);
}

    if (!isset($_GET['amount'])) {
        $paymentForm = rk_PricesForm();
    } else {
        $paymentForm = rk_PaymentForm();
    }

    include('template.html');


?>

robokassa.ini

 

 


LOGIN="Ваш магазин"
PASS1="пароль1"

TEMPLATE_ISP="Компания"
TEMPLATE_ISP_URL="http://"
SERVICE_DESC="Оплатить с помощью ROBOKASSA"
 

 

frontend - метод отсылки данных POST, если используете GET , меняем ниже $_POST на $_REQUEST

 

<?php

//достаем конфиг
$rkConf = parse_ini_file('config/robokassa.ini');

// подключаем API OpenPayz
include ("../../libs/api.openpayz.php");

/**
 *
 * Check for POST have needed variables
 *
 * @param   $params array of POST variables to check
 * @return  bool
 *
 */
function rk_CheckPost($params) {
    $result = true;
    if (!empty($params)) {
        foreach ($params as $eachparam) {
            if (isset($_POST[$eachparam])) {
                if (empty($_POST[$eachparam])) {
                    $result = false;
                }
            } else {
                $result = false;
            }
        }
    }
    return ($result);
}

/*
 * Check is transaction unique?
 * 
 * @param $hash - transaction hash
 * 
 * @return bool
 */

function rk_CheckTransaction($hash) {
    $hash = mysql_real_escape_string($hash);
    $query = "SELECT `id` from `op_transactions` WHERE `hash`='" . $hash . "'";
    $data = simple_query($query);
    if (!empty($data)) {
        return (false);
    } else {
        return (true);
    }
}

if (rk_CheckPost(array('OutSum', 'InvId', 'shpa'))) {
    $mrh_pass2 = $rkConf['PASS2'];
    $out_summ = $_POST['OutSum'];
    $inv_id = $_POST['InvId'];
    $shpa = $_POST['shpa'];
    $crc = strtoupper($_POST['SignatureValue']);
    $my_crc = strtoupper(md5("$out_summ:$inv_id:$mrh_pass2:shpa=$shpa"));
    if ($my_crc == $crc) {
            $paysys = "ROBOKASSA";
            $note = "TRANSACTION ID: " . $inv_id;
            if (rk_CheckTransaction($inv_id)) {
                $allcustomers = op_CustomersGetAll();
                if (isset($allcustomers[$shpa])) {
                    //регистрируем новую транзакцию
                    op_TransactionAdd($inv_id, $out_summ, $shpa, $paysys, $note);
                    //вызываем обработчики необработанных транзакций
                    op_ProcessHandlers();
                    //тихонько помираем
                    die('OK'.$inv_id);
                } else {
                    die('ERROR_NO_SUCH_USER');
                }
            } else {
                die('DOUBLE_PAYMENT');
            }
    } else {
        die('MISSING_HASH');
    }
} else {
    die('ERROR_NO_POST_DATA');
}
?>

robokassa.ini

PASS2="пароль2"

Edited by Di111
Link to post
Share on other sites
  • 9 months later...

Помогите, пытаюсь запилить Robokassu выходит ошибка, на 27 строке  :

Parse error: syntax error, unexpected 'function' (T_FUNCTION) in /usr/local/www/apache24/data/billing/openpayz/backend/robokassa/index.php on line 27

Link to post
Share on other sites

usr/local/www/apache24/data/billing/openpayz/backend/robokassa/index.php on line 27   в этой строке что содержится?

./openpayz/backend/robokassa/config/robokassa.ini логин и пароль заполнен?

LOGIN="Ваш магазин"
PASS1="пароль1"

TEMPLATE_ISP="Компания"
TEMPLATE_ISP_URL="http://"
SERVICE_DESC="Оплатить с помощью ROBOKASSA"

backend index.php маленько понес изменения

Скрытый текст

<?php
$rkConf = parse_ini_file('config/robokassa.ini');

$ispUrl = $rkConf['TEMPLATE_ISP_URL'];
$ispName = $rkConf['TEMPLATE_ISP'];
$serviceDesc = $rkConf['SERVICE_DESC'];


function rk_PricesForm() {
    $result = '<form action="" method="GET">';
    if (!isset($_GET['customer_id'])) {
    $result.= '<H3>Введите Ваш платежный ID<br>и необходимую для пополнения сумму</H3><br>';
    $result.= 'ID<input style="margin-left:20px;width: 80px;text-align: right;" name="customer_id" type="text" title="Ваш платежный ID Вы можете найти в личном кабинете пользователя, это 8-10 значный цифровой номер" size="10" maxlength="11" required pattern="[0-9]{8,10}" placeholder="00000000"><br><br>';
    }else{
    $result.= '<H3>Ваш платежный ID'.$_GET['customer_id'].'<br>Введите необходимую для пополнения сумму</H3><br>';
    $result.= '<input name="customer_id" type="hidden" value="'.$_GET['customer_id'].'">';
    }
    $result.= 'RUB<input style="margin-left:4.5px;width: 80px;text-align: right;" name="amount" type="number" step="50" min="200" max="10000" placeholder="200" maxlength="5" required ><br><br>';
    $result.= '<input type="submit" value="Далее">';
    $result.= '</form>';

    return ($result);
}

function rk_PaymentForm() {
    global $rkConf;
    $mrh_login = $rkConf['LOGIN'];
    $mrh_pass1 = $rkConf['PASS1'];
    $inv_id = 0;
    $out_summ = $_GET['amount'];
    $shpa = $_GET['customer_id'];
    $inv_desc = "Оплата услуг связи ID".$shpa;
    $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:shpa=$shpa");
    $result.= '<H3><b>'.$inv_desc.'<br>На сумму '.$out_summ.'RUB</b><br>Нажимая на кнопку  «Оплатить»<br>Вы соглашаетесь с введенными данными!</H3><br>';
    $result.= '<script language=JavaScript src="https://auth.robokassa.ru/Merchant/PaymentForm/FormMS.js?MerchantLogin='.$mrh_login.'&OutSum='.$out_summ.'&InvId='.$inv_id.'&Description='.$inv_desc.'&SignatureValue='.$crc.'&shpa='.$shpa.'"></script>';

    $result.= '';

    return ($result);
}

    if (!isset($_GET['amount'])) {
        $paymentForm = rk_PricesForm();
    } else {
        $paymentForm = rk_PaymentForm();
    }

    include('template.html');


?>

в template.html    в нужное место вставь это  для вывода  <?=$paymentForm; ?>

 

PS mc редактором глянь, при копировании лишних пробелов нет в коде?

Edited by Di111
Link to post
Share on other sites
  • 1 year later...

LOGIN="Ваш магазин"  

PASS1="пароль1"

TEMPLATE_ISP="Компания"
TEMPLATE_ISP_URL="http://"
SERVICE_DESC="Оплатить с помощью ROBOKASSA"

 

я так понимаю в login и pass1   заполняется логин и пароль от личного кабинета робокассы?

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By nightfly
      Ой, кажись уже следующий год начался, а релиза еще небыло. Вы заметили? Да? Вот, тогда получите, распишитесь - стабильный релиз Ubilling 1.1.4 rev 7876 Bringer of Conflict.
       
      Коротко о изменениях:
      Изменения в структуре БД. см. дамп. alter.ini: новая опция PT_MAXDAY управляющая максимальным днем тарификации Мощных тарифов. alter.ini: новая опция PT_CHARGEONREG управляющая флагом начисления АП при обнаружении нового пользователя на «мощном тарифе». alter.ini: новая необязательная опция ROS_NAS_PPPOE_SESSION_INFO_IN_PROFLE регулирующая отображения состояния PPPoE подключения юзера для Mikrotik NAS. alter.ini: новая необязательная опция STICKY_NOTES_NOPREVIEW отключающая превью личных заметок при отображении списком. alter.ini: новая необязательная опция PON_OLT_UPTIME_IN_PROFILE включающая отображение аптайма OLT в профиле пользователя. alter.ini: новая необязательная опция PON_REALTIME_SIGNAL_IN_PROFILE включающая отображение сигнала ONU в профиле пользователя в режиме «realtime». Может существенно замедлять загрузку профиля юзера. alter.ini: новая необязательная опция PON_REALTIME_EXTEN_INFO_IN_PROFILE включающая отображение дополнительной информации по ONU в профиле пользователя в режиме «realtime». Может существенно замедлять загрузку профиля юзера. alter.ini: новая опция DSTAT_ENABLED управляющая включением функционала «детальной статистики». Просто никогда ее не включайте. Мы предупредили. userstats.ini: новая, необязательная опция PAYMENTS_ONLYPOSITIVE включающая показ только платежей с суммой >0 в кабинете пользователя. Модуль Мощи тарифов: исправлена проблема «с постоянно наступающим первым числом». Но это не точно. Модуль «Планирование работ»: исправлено неадекватное поведение, при попытках устанавливать состояния несуществующим задачам. Модуль «Популярность тарифов»: теперь более адекватно определяет активность пользователей. Модуль Живи с этим: добавлена возможность не строгого поиска юзеров по наименованию тарифа. Модуль «Профиль пользователя»: добавлена возможность отображения состояния PPPoE подключения юзера для Mikrotik NAS. Работает через Mikrotik API. Модуль Служба ритуальных услуг: в отчете по подключениям больше не показывается график, в случае если ранее не происходило похорон. Модуль Зависть: теперь любому завистливому устройству, можно добавлять количество строк, которым будет произведен КУСЬ при сохранении в архив. Модуль TrinityTV: исправлена проблема при регистрации пользовательских устройств не имеющих MACа по коду. Модуль Склад: реализовано новое право WAREVIEW позволяющее вашим сотрудникам просматривать материалы израсходованные на их задачи. Модуль УКВ: исправлена проблема с NaN вместо пустого АРПУ в финансовом отчете на системах с PHP 7.4. Модуль Видеонаблюдение: для DVR-ов добавлено поле кастомного URL предварительного просмотра. Модуль ПОНизатор: теперь умеет отображать много разных интересных штук, включая температуры и аптаймы для OLT C-Data/Stels 11xx (firmware >= 2.4.06) и V-Solution 1600D. Модуль «Профиль пользователя»: теперь может отображать много дополнительной инфы для PON-юзеров. Отображение регулируется опциями: PON_OLT_UPTIME_IN_PROFILE, PON_REALTIME_SIGNAL_IN_PROFILE, PON_REALTIME_EXTEN_INFO_IN_PROFILE. Модуль История СМС сообщений: добавлено отображение адреса рядом с логином пользователя для улучшения визуального восприятия и читабельности. Модуль «Консоль разработчика»: добавлена возможность отображения результата SQL-запроса в виде таблицы с полями. Новый модуль «Поиск по складу»: находится в «черной магии» и помогает найти все расходные операции совершенные вокруг конкретного пользователя. Модуль «Профиль пользователя»: теперь плагины профиля, из «черной магии» могут прятаться в зависимости от прав пользователя. Модуль «Персональные заметки и напоминания»: откровения теперь также могут быть запланированы на конкретный день недели. Модуль Askozia монитор: прослушивание из браузера в силу окончания поддержки Adobe Flash Player, переехало на HTML5 Audio. Модуль «Askozia монитор»: добавлена возможность скачивания записей звонков в MP3 и OGG. Модуль «Планирование работ»: улучшен контроль доступа к задачам репрессированных пользователей. Модуль «Живи с этим»: исправлена проблема расчлененных пользователей при создании задач с поиском по городу. Кабинет пользователя: модуль «Видеонаблюдение» теперь также показывает суммарную стоимость услуги. Авторизация абонентов DHCP на MikroTik методом IP + MAC при помощи КучаГен: решительные и кардинальные изменения в скриптах для получения графиков по статистике трафика абонента с Mikrotik. RemoteAPI: вызов asterisk теперь принимает новый параметр getcontragentdata возвращающий данные связанного контрагента для определенного пользователя. UbillingTelegram: добавлена обертка для отсылки ботом клавиатур.  
      Возможно важные ссылочки:
      Вот тут полный чейнджлог. А это рекомендации к обновлению, если их кто-то еще читает. знаете... обновленную демку могли бы и сами найти.  

    • By progxaker
      Здравствуйте. Появилась потребность в подключении Asterisk к UBilling с возможностью записи разговоров.
      Данный функционал(со стороны Asterisk) выполнил через MixMonitor.
      exten => _XXX,1,MixMonitor(/var/records/${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}_${CALLERID(num)}_${CALLERID(dnid)}.wav) Сделал базу CDR, привязал к UBilling'у, но вот прослушать/скачать записи не получается.
      Хочется понять в каком формате(имя и расширение) сохранять, чтобы он мог их прочитать.
      P.S. В alter.ini аргументы ASTERISK_ENABLED=1, ASTERISK_CALLRECS_PATH=<папка>(права есть, группы назначены).

    • By a_n_h
      Всем доброго дня!
        Пните в нужном направлении - где можно отредактировать страницу:
      https://wiki.ubilling.net.ua/lib/exe/detail.php?id=sigreq2&media=sigreq2_front.png
    • By SerSkiner
      Доброго времени суток колеги!после долгого пинания Микротика в качестве НАС возникло желание попробовать Accel-ppp. В связи с этим такой вопрос может кто-то поделиться конфигами НАС для Юбиллинга(а еще если есть пример конфига)Настроить планирую роздачу адресов Асселем без QinQ.Заранее большое спасибо
    • By eth42
      Мудрейшие, подскажите пожалуйста неопытному и блуждающему во тьме путь истинный, куда мне смотреть...
      Хочу sql запросом вытаскивать данные о сигналах ону абонентов, подскажите пожалуйста где эти данные хранятся в БД ubilling, битый час хожу ищу уже не вижу надежд. 
      В случае если они не хранятся в самой БД то их можно как-то заполучить в виде таблицы логин + сингал на данный момент ? 
       
×
×
  • Create New...