Перейти до

OPENPAYZ ROBOKASSA


Рекомендованные сообщения

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

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"

Відредаговано Di111
Ссылка на сообщение
Поделиться на других сайтах
  • 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

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

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 редактором глянь, при копировании лишних пробелов нет в коде?

Відредаговано Di111
Ссылка на сообщение
Поделиться на других сайтах
  • 1 year later...

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

PASS1="пароль1"

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

 

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

 

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

  • Схожий контент

    • Від grach_witch_cheese
      Вітаю, колеги!
      Маю наступну схему:
      DHCP-сервер: Accel-PPP (IPoE) DHCP-Relay: MikroTik RADIUS: Запущений безпосередньо на сервері uBilling Зараз авторизація абонентів здійснюється за MAC-адресою, але планується перехід на авторизацію через Option 82.
      У документації uBilling наведені приклади конфігурацій, коли DHCP-сервер працює локально (на самому uBilling) і містить відповідні шаблони для обробки Option 82.
      Однак немає чіткої інформації про використання Option 82 при віддаленому DHCP-сервері, зокрема, коли Accel-PPP використовується як DHCP-сервер у режимі remote та налаштований через Купаген.
      Питання:
      Чи можливо використовувати Accel-PPP як віддалений DHCP-сервер з авторизацією через Option 82? Якщо так, то де відбувається парсинг значень Remote-ID і Circuit-ID? Де в цьому випадку мають зберігатися шаблони для Option 82? Буду вдячний за роз'яснення або посилання на відповідні приклади.
    • Від nightfly
      Ubilling 1.5.2 rev 9302 Book of Endings
       
      Зміни в структурі БД. alter.ini: нова опція FASTPROFITCALC_ENABLED, що вмикає швидкий підрахунок прибутку. alter.ini: нова необов'язкова опція KARMA_IN_PROFILE що вмикає показ карми в профілі користувача. alter.ini: нова опція SWITCHES_AUTH_ENABLED, що вмикає довідник даних авторизації пристроїв. alter.ini: нова опція PON_SCRIPTS_ENABLED, що вмикає підтримку скриптів OLT в ПОНізаторі. alter.ini: нова опція PON_ONU_FDB_SELFFILTER, що вмикає фільтр MAC-ів при відображенні FDB за ONU. alter.ini: нова опція USERBYIP_ENABLED, що вмикає виклик userbyip в RemoteAPI. alter.ini: пачка нових опцій PB_FASTURL_*, що керують поведінкою модулю відсилання коротких посилань на оплату. Модуль PONizer: виправлена помилка зникнення PON інтерфейсів при опиті BDCOM GP3600 Модуль “Профіль користувача”: для опису плагінів профілю та оверлеїв на кшталт “чорної магії” тепер опційно можливо вказувати link_target. Модуль “Панель задач”: для опису елементів панелі задач, тепер опційно можна вказувати LINK_TARGET. Модуль Записи телефонних розмов: вирішено проблеми швидкодії, при перегляді списку записів дзвінків. Модуль “Записи телефонних розмов”: більше не призводить до вичерпання пам'яті процесу, при перегляді великих архівів дзвінків. Модуль “Записи телефонних розмов”: новий аудіо-плеєр для прослуховування записів з візуалізацією аудіо-хвилі. Модуль “Пошук оплат”: реалізовано можливість швиденького підрахунку прибутку по обраних чекбоксами платежах. Модуль УКВ: реалізовано можливість швиденького підрахунку прибутку по обраних чекбоксами платежах. Модулі Мапа обладнання та користувачів: трішки вичищено код. Ліпше не стало. Модуль “Мапа будинків”: поле пошуку при розташуванні будинку, тепер попередньо заповнено локацією, при переході за посиланням “розташувати на мапі”. Модуль “Панель задач”: опція TB_QUICKSEARCH_INLINE змінила свою поведінку, та може тепер приймати значення 0|1|2. Модуль “Звіт по трафіку”: виправлено проблему відображення графіків OphanimFlow для NAS на роздільних здатностях менше ніж FullHD. Кабінет користувача: в модулі “Відеоспостереження” відображення попереднього перегляду каналів користувача, стало трішки притомнішим. Сховище зображень: трішки покращено поведінку форми завантаження. RemoteAPI: новий виклик onusigcompressor, що радикально стискає розпухаючі дані історії сигналів ONU. RemoteAPI: новий виклик pbxmonrefill, що оновлює кеш записів телефонних розмов. RemoteAPI: новий виклик userbyip, що повертає дані про користувача за його IP. OpenPayz: в бекенді та фронтенді platon виправлено проблему диких заокруглень, при вказанні зовнішньої комісії.  
      Повний чейнджлог
      Оновлена демка
       

    • Від ppv
      Після оновлення до 1.5.1 не відображаються сигнали на
      OLT BDCOM P3310B (Device version10.1.0B)

      та
      P3608-2TE (Firmware Version10.1.0E). 

      3310C та P3608B ніяких проблем немає, знімає все добре. 
      З GPON3600-8 все зрозуміло будуть виправлення в Ubilling: 1.5.2.
       
      Може в когось було щось подібне? Хочу знати куди копати.
    • Від mac
      Глюк в тому, що один (так - тільки один) mac адрес onu існує в білінгу у вигляді строки. Це трохи заважає.
      olt - bdcom gepon.
      Наскільки зрозумів, це виключно проблема реалізації snmpwalk у freebsd, де snmpwalk може на свій розсуд віддати mac адресу не як hex-string, а як звичайний string.
      Можливо snmpwalk тригериться на якомусь символі, мені невідомо.
       
      # tcpdump -vv -i em0 udp port 161 and host olt and host ub | grep "3320.101.10.4.1.1.241 ... olt.snmp > ub.47940: [udp sum ok] { SNMPv2c C="*****" { GetResponse(44) R=93278354 E:3320.101.10.4.1.1.241="8LO"W*" } } ub.47940 > olt.snmp: [udp sum ok] { SNMPv2c C="*****" { GetNextRequest(34) R=93278355 E:3320.101.10.4.1.1.241 } } snmpwalk -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = STRING: "8LO\"W*" snmpwalk -Ox -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = Hex-STRING: 38 4C 4F 22 57 2A  
      Це стосується таких параметрів у snmp конфізі bdcom
       
      [signal] MACINDEX=".1.3.6.1.4.1.3320.101.10.4.1.1" [misc] ONUINDEX=".1.3.6.1.4.1.3320.101.11.1.1.3"  
      За для усунення глюку спробував трошки змінити код і завдати тип snmp параметру явно у ./api/libs/api.ponbdcom.php у function collect()
      Це працює. Мабуть станеться у нагоді:
       
      # diff api.ponbdcom.php{.new,.bak} 37c37 < $onuIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); --- > $onuIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); 91c91 < $macIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE); --- > $macIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE);  
      P.S. Створив тему, а зараз міркую: а може це глюк у ПЗ olt. Оновлю фірмваре olt та перевірю...
       

    • Від Plastilin
      Вітаю. Маю наступний комплект. Ubilling на Debian + Mikrotik CHR як маршрутизатор. Наче все запустилось, але виникло питання яке не вдається розрулити. Читав Wiki, ковиряв, читав знову Wiki, знову ковиряв - не допомогло.
      Чи можливо якось визначити конкретну IP адресу з пулу який видає Mikrotik клієнту через Radius? Мені пропонує обрати наступну вільну адресу з пулу при спробі зміни адреси?
      З цього з'являється додаткове питання, чи можливо контролювати доступ користувачам у яких IP назначений статично, тобто прописаний вручну? Наприклад при зміні статусу не активний - пхати до Firewall Mikrotik правила заборони доступу з IP адреси визначеної вручну, навіть якщо вона не отримана по DHCP.
       
      UPD: з першою частиною знайшов: IP_CUSTOM=1 в alter.ini 
×
×
  • Створити нове...