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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By nightfly
      Ubilling 1.5.9 rev 9525 The Perfect Lock
       
      Зміни в структурі БД. alter.ini: нова опція GENERATORS_ENABLED, що вмикає модуль моніторингу генераторів. alter.ini: нова опція TB_GENERATORS_NOTIFY, що вмикає нотифікацію про запущені генератори в області сповіщень. alter.ini: нова опція PON_ONU_UNI_STATUS_COMPACT, що вмикає компактне відображення стану мідних портів на ONU. alter.ini: нова опція PONBOXES_MINIMAP, що дозволяє вмикати та вимикати міні-мапу, при редагування ПОН коробки. Новий модуль Єдинорожий телепорт: дозволяє просто та зручно переносити ваш робочий білінг на новий сервер. Модуль “Реєстрація користувачів”: виправлено проблеми сумісності з PHP 8.5. Модуль “Останні події”: викинуто дубову статку на мороз. Askozia PBX: інтеграція була давно непідтримуваною, викинуто на мороз, разом зі всіма опціями. Модуль Mapon: тепер використовує OmaeURL для взаємодії з API. Модуль “Мапа ONU”: в черговий раз покращення навігації між мапою та іншими модулями системи. Новий модуль Генератори: дозволяє моніторити стан генераторів, базово облікувати мотогодини, пальне та планувати ТО. Модуль ПОНізатор: тепер причини останньої дереєстрації ONU можуть визначатись також по серійнику ONU а не тільки за MAC. Модуль “ПОН Коробки”: покращено продуктивність відмальовки зв'язків коробок на мапах. Глобально: проведено чергову спробу зробити логування подій, що відбуваються навколо користувачів, якимось трішки більш притомним. RemoteAPI: новий виклик generators, що запускає скрипти обробки станів генераторів з автоматичним запуском. RemoteAPI: новий виклик gencontrol, для примусового запуску/зупинки генераторів за допомогою зовнішнього ПЗ. Бібліотека UbillingCache: виправлено проблеми сумісності з PHP 8.5. Бібліотека OmaeURL: виправлено проблеми сумісності з PHP 8.5. Бібліотека UbillingTelegram: вся робота з CURL перенесена до одного методу, покращено сумісність з PHP 8.5. Кабінет користувача: виправлено проблеми сумісності з PHP 8.5. UBinstaller: тепер при встановленні попередньо розгортає та конфігурує SphinxSearch. UBinstaller: Зібрано бінарні пакунки для FreeBSD 14.3 amd64 + PHP 8.5. UBinstaller: Зібрано бінарні пакунки для FreeBSD 15.0 amd64 + PHP 8.5.  
      Повний чейнджлог
      Оновлена демка
       
       

    • By maxkorn
      Доброго дня!
      На Mikrotik NAS, створив нову підмережу для клієнтів, все наче порядок, тільки помітив, що не створюються шейпери в Queues для клієнтів цієї підмережі.
      В логах Stargazer наступне:
      2025-12-29 09:05:57 - [Ubilling] - OnConnect started for user `xxasdb5rzm`:
      2025-12-29 09:05:57 - [Executer] - Success: Firewall entry was updated/created
      2025-12-29 09:05:57 - [Executer] - Error: Queue entry can't be updated, missing
      2025-12-29 09:05:57 - [Executer] - Success: Queue_tree entry was updated/created
      2025-12-29 09:05:57 - [Executer] - Success: DHCP entry was updated/created
      2025-12-29 09:05:57 - [Executer] - Success: ARP entry was updated/created
      2025-12-29 09:05:57 - [Ubilling] - QC: 6, elapsed time: 0.064 sec.
       
      При чому, на тому ж мікротіку є ще кілька підмереж, в яких все проходить нормально:
       
      2025-12-29 08:30:17 - [Ubilling] - OnConnect started for user `22zxp7u58x`:
      2025-12-29 08:30:17 - [Executer] - Success: Firewall entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: Queue entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: Queue_tree entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: DHCP entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: ARP entry was updated/created
      2025-12-29 08:30:17 - [Ubilling] - QC: 6, elapsed time: 0.602 sec.
       
      Налаштування аналогічні, в чому може бути причина?
    • By ProstoName
      Змінювали мережеву карту. Здається все поправив. Працює. Але є невелика проблема - після внесення коштів (коли абонент був відключений), інет в нього не з'являється. Тільки після заміни тарифу на інший (і потім вернувши тариф) в абонента з'являється інет. 
    • By ppv
      Собака-посилака перестала відправляти повідомлення. Підкажіть де шукати.
      Можливо таке після пропадання світла, сервер ребутнувся, але я не впевнений. Візуально все працює, крон працює, а повідомлення висять в черзі, смс така ж картина.

    • By camchatix
      Привіт!
       
      Є багато запитів, щоб інтернет не виключався у північ, а скажімо в день (сигналізації, камери під охороною і тд)
      При щоденній абонплаті - як знімати гроші не у 12:00 у північ, а наприклад у 11 годин дня ?
×
×
  • Create New...