Пишем модули оплаты для ROBOKASSA

Тема в разделе "Shop-script", создана пользователем sounde, 21 ноя 2008.

Статус темы:
Закрыта.
  1. sounde

    sounde

    Регистр.:
    12 сен 2008
    Сообщения:
    391
    Симпатии:
    64
    Привет всем!
    Вчера ночью не спалось, решил написать модуль оплаты для ROBOKASSA, взял за основу модуль WebMoney, сам в PHP если честно очень плохо шарю :ah:
    Но как оказалось очень дружественный язык, зная правила синтаксиса и несколько базовых функций сваял этот модуль, глюков вроде нет, кто найдет баги пишите, будем исправлять :)
    Удобство Робокассы, подключают физ. лиц без договора, но вывести тогда деньги из системы можно только на вебмани (персональный аттестат помоему обязателен, не проверял, так как у меня и так персональный).
    Плюс легко зарегиться в робокассе, после того как зарегистрируетесь, то напишите саппорту с просьбой активировать аккаунт, на следующий день активируют, и можно принимать платежи.
    Робокасса интересна тем, что кроме эл. валют принимает от покупателей оплату через СМС, Контакт и терминалы Элекснет.


    <?php
    /**
    * @connect_module_class_name CRobokassa
    *
    */
    //

    class CRobokassa extends PaymentModule {

    function _initVars(){

    $this->title = "Robokassa";
    $this->description = "Оплата через систему ROBOKASSA (www.robokassa.ru)<br>ВНИМАНИЕ: После того, как модуль будет установлен, вам необходимо завести и активировать аккаунт на ROBOKASSA";

    $this->sort_order = 0;
    $this->Settings = array(
    "CONF_PAYMENTMODULE_KONTAKT_LOGIN",
    "CONF_PAYMENTMODULE_KONTAKT_PASS",
    "CONF_PAYMENTMODULE_KONTAKT_EXCHANGERATE"
    &nbsp;);
    }

    function _initSettingFields(){

    $this->SettingsFields['CONF_PAYMENTMODULE_KONTAKT_LOGIN'] = array(
    'settings_value' => '',
    'settings_title' => 'Ваш логин в системе: ROBOKASSA',
    'settings_description' => 'Для демо-режима использовать: demo',
    'settings_html_function' => 'setting_TEXT_BOX(0,',
    'sort_order' => 1,
    &nbsp;);
    $this->SettingsFields['CONF_PAYMENTMODULE_KONTAKT_PASS'] = array(
    'settings_value' => '',
    'settings_title' => 'Пароль для формирования подписи',
    'settings_description' => '"Пароль #1" в системе ROBOKASSA. Для демо-режима: Morbid11',
    'settings_html_function' => 'setting_TEXT_BOX(0,',
    'sort_order' => 1,
    &nbsp;);
    $this->SettingsFields['CONF_PAYMENTMODULE_KONTAKT_EXCHANGERATE'] = array(
    'settings_value' => '1',
    'settings_title' => 'Курс у.е. магазина по отношению к валюте ROBOKASSA',
    'settings_description' => '',
    'settings_html_function' => 'setting_TEXT_BOX(1,',
    'sort_order' => 1,
    &nbsp;);
    }

    function after_processing_html( $orderID ) //тут ничего не менял, взял из модуля вебмани, если тут ошибки давайте исправим их
    {
    $order = ordGetOrder( $orderID );
    $order_amount = $order["order_amount"];

    $exhange_rate = (float)$this->_getSettingValue('CONF_PAYMENTMODULE_KONTAKT_EXCHANGERATE');
    if ( (float)$exhange_rate == 0 )
    $exhange_rate = 1;

    $order_amount = $order_amount/((float)$this->_getSettingValue('CONF_PAYMENTMODULE_KONTAKT_EXCHANGERATE'));


    $out_summ = "$order_amount"; //сумма к оплате
    $mrh_login = $this->_getSettingValue('CONF_PAYMENTMODULE_KONTAKT_LOGIN'); //логин в системе ROBOKASSA
    $mrh_pass1 = $this->_getSettingValue('CONF_PAYMENTMODULE_KONTAKT_PASS'); //пароль "пароль #1" в системе ROBOKASSA
    $inv_id = $orderID; //номер заказа
    $shp_item = "1"; //пользовательский параметр, можно задать любой
    $culture = "ru"; //язык интерфейса
    // формирование подписи
    // generate signature
    $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1:Shp_item=$shp_item");

    // предлагаемая валюта платежа
    // default payment e-currency
    $in_curr = "PCR";
    // описание заказа, выводиться при показе
    // order description
    $inv_desc = "Oplata zakaza";


    $res = "";
    $res .=



    "<table width='100%'>\n".
    " <tr>\n".
    " <td align='center'>\n".
    "<form action='http://merchant.roboxchange.com/Index.aspx' method=POST>".
    "<input type=hidden name=MrchLogin value=$mrh_login>".
    "<input type=hidden name=OutSum value=$out_summ>".
    "<input type=hidden name=InvId value=$inv_id>".
    "<input type=hidden name=Desc value='$inv_desc'>".
    "<input type=hidden name=SignatureValue value=$crc>".
    "<input type=hidden name=Shp_item value='$shp_item'>".
    "<input type=hidden name=IncCurrLabel value=$in_curr>".
    "<input type=hidden name=Culture value=$culture>".
    "<input type=submit value='Перейти к оплате сейчас!'>".
    "</form>\n".
    " </td>\n".
    " </tr>\n".
    "</table>";


    return $res;

    }
    }

    ?>


    Код нужно скопировать в пустой файл открытый в блокноте например, сохранить с именем Robokassa.php и полученный файл закинуть в папку modules/payment
    Потом через админку проинсталлировать.
     
    UrikRu и mariohs нравится это.
  2. striimii

    striimii Постоялец

    Регистр.:
    17 ноя 2007
    Сообщения:
    85
    Симпатии:
    19
    А к какому шопскрипту это?
    В WebAsyst Shop-Script уже есть модуль работы с RoboKassa.
     
  3. sounde

    sounde

    Регистр.:
    12 сен 2008
    Сообщения:
    391
    Симпатии:
    64
    К SS Premium
    Интересно а от WebAsyst можно в SS встроить? Где можно скачать модуль для робокассы для WebAsyst-а?
     
  4. striimii

    striimii Постоялец

    Регистр.:
    17 ноя 2007
    Сообщения:
    85
    Симпатии:
    19
    Сейчас попробую выкусить его...

    UPD: вот
     

    Вложения:

    sounde нравится это.
  5. sounde

    sounde

    Регистр.:
    12 сен 2008
    Сообщения:
    391
    Симпатии:
    64
    спасибо! сейчас посмотрю как он устроен, интересно :)

    Добавлено через 10 минут
    class.roboxchange от вебасиста в SS инсталлируется, но не редактируется (выдает ошибку), видимо нужно адаптировать..
     
  6. UrikRu

    UrikRu Писатель

    Регистр.:
    22 ноя 2008
    Сообщения:
    5
    Симпатии:
    1
    Что-то в упор не вижу
     
    sounde нравится это.
  7. striimii

    striimii Постоялец

    Регистр.:
    17 ноя 2007
    Сообщения:
    85
    Симпатии:
    19
    Настройки - Оплата - Добавить способ оплаты - Через онлайн платежную систему - ROBOXchange
     
  8. UrikRu

    UrikRu Писатель

    Регистр.:
    22 ноя 2008
    Сообщения:
    5
    Симпатии:
    1
    Разве это одно и тоже?
     
  9. striimii

    striimii Постоялец

    Регистр.:
    17 ноя 2007
    Сообщения:
    85
    Симпатии:
    19
    Да, ROBOKASSA это проект сервиса ROBOXchange.com, а модуль ROBOXchange в шопскрипте как раз позволяет работать с это робокассой и принимать денешку.
     
  10. inter71

    inter71 Писатель

    Регистр.:
    23 сен 2008
    Сообщения:
    4
    Симпатии:
    0
    Так и не удалось адаптировать SSP ?
     
Статус темы:
Закрыта.