forum.bitel.ru
http://forum.bitel.ru/

Robokassa
http://forum.bitel.ru/viewtopic.php?f=19&t=3073
Страница 1 из 4

Автор:  Cromeshnic [ 26 окт 2009, 11:00 ]
Заголовок сообщения:  Robokassa

Хотим реализовать взаимодействие BGBilling с robokassa.ru
API: http://robokassa.ru/Doc/Ru/Interface.aspx
Демо для нашей задачи: http://robokassa.ru/DemoShop/Demo3.aspx

Идея такая: в личном кабинете делаем раздел "Online-оплата", в разделе размещаем форму со скрытыми полями и кнопку "Пополнить баланс":
Код:
                <form action='https://merchant.roboxchange.com/Index.aspx' method=POST target=\"new\">
                <input type=hidden name=MrchLogin value="$login">
                <input type=hidden name=OutSum value="">
                <input type=hidden name=InvId value="0">
                <input type=hidden name=Desc value="Оплата по договору $title">
                <input type=hidden name=SignatureValue value="$md5">
                <input type=hidden name=shp_contract value="$cid">
                <input type=hidden name=IncCurrLabel value="PCR">
                <input type=hidden name=Culture value="ru">
                <input type=submit value="Пополнить баланс">
                </form>

Для этого просто правим xsl-шаблон main.xsl. Но возникает проблема:
нужно как-то вычислять $md5=md5("$login::0:$password1:shp_contract=$cid")
Возможно я делаю что-то не так, но тег <xsl:script> упорно не обрабатывается. В логе пишет, что <xsl:script> не разрешен в этом месте. Я подставлял его в <xsl:stylesheet> и в <xsl:template>

Возможно ли в принципе использование <xsl:script> для этой цели? Может быть есть другие идеи по реализации?
Можно конечно сохранять md5 в специальный параметр договора и потом получать его из xml, но это кажется мне неправильным подходом - придется отслеживать их актуальность.
Ещё можно вставить iframe со ссылкой на свой скрипт, который будет генерировать эту форму, но так тоже кажется не совсем красивым.

зы. Если реализую - выложу на вики :)

Автор:  Cromeshnic [ 26 окт 2009, 13:41 ]
Заголовок сообщения:  Re: Robokassa

Можно конечно сделать через "дополнительные действия", но это неправильно с точки зрения пользовательского интерфейса - так глубоко запихивать такую важную вещь. Есть ли вообще способы кроме доп. действий внедрить свою функциональность в личный кабинет?

Автор:  Cromeshnic [ 27 окт 2009, 14:11 ]
Заголовок сообщения:  Re: Robokassa

Придумал: можно сделать прямую ссылку на выполнение доп. действия, на выходе либо сразу редирект на robokassa.ru с нужными сгенерированными параметрами, либо (если редирект нельзя сделать) - генерируем форму запроса к robokassa.ru из первого поста.

Автор:  focus [ 24 ноя 2009, 14:21 ]
Заголовок сообщения:  Re: Robokassa

В Wiki описал как можно реализовать взаимодействие с платежной системой robokassa
Раздел Интеграция с внешними системами
http://wiki.bgbilling.ru/index.php/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81_%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%B6%D0%BD%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BE%D0%B9_Robokassa

Автор:  sabriel [ 13 янв 2011, 17:18 ]
Заголовок сообщения:  Re: Robokassa

здравствуйте воспользовались примером их вики. но тут ряд проблем.


переходим на олайн паймет но там кнопка робокассы не появляется так же как и сообщения о каких либо ошибках

помогите пожалуйста решить эти проблемы проблемы.
jre 1.6.0_21

obokassalib.jar, servletrblib.jar скомпилировали и поместили в lib
commons-codec-1.4.jar уже был скомпилен и просто помещен в lib

Автор:  dimOn [ 13 янв 2011, 17:25 ]
Заголовок сообщения:  Re: Robokassa

версия то какая

Автор:  sabriel [ 13 янв 2011, 17:27 ]
Заголовок сообщения:  Re: Robokassa

dimOn писал(а):
версия то какая
с отображением поправили. надо было писать в layot.xsl

версия чего? билинга? 5.1 сборка 519

Автор:  dimOn [ 13 янв 2011, 17:29 ]
Заголовок сообщения:  Re: Robokassa

да, в 5.1 вообще нет common.xsl

Автор:  dimOn [ 13 янв 2011, 17:29 ]
Заголовок сообщения:  Re: Robokassa

итак? дальше в чём проблема? страница не появляется?

Автор:  sabriel [ 13 янв 2011, 17:31 ]
Заголовок сообщения:  Re: Robokassa

dimOn писал(а):
итак? дальше в чём проблема? страница не появляется?

значит от старой версии осталось. далее
переходим на онлайн платежи
Код:
<xsl:template name="OnlinePay">
   <xsl:variable name="err" select="/data/msg/@err"/>
   <xsl:if test="$err = 1">
      <xsl:value-of select="/data/msg/@text"/>
   </xsl:if>
   <xsl:if test="$err = 0">   
      <table border="0">
         <tr><td align="left">
               <form method="POST" action="webexecuter" target="_blank">
                  <input type="hidden" name="action" value="RequestRobokassa" />
                  <input type="hidden" name="mid" value="contract" />
                  <xsl:call-template name="submit">
                     <xsl:with-param name="title" select="'Оплатить с помощью ROBOKASSA'"/>
                  </xsl:call-template>
               </form>
            </td>
         </tr>
      </table>
 
   </xsl:if>
</xsl:template>


но сообщение об ошибка так же как и кнопка не появляется.

Автор:  dimOn [ 13 янв 2011, 17:31 ]
Заголовок сообщения:  Re: Robokassa

Та инструкция для 5.0, короче. Для более поздних неактуально почти всё что там написано. В 5.1 уже нету никаких WebAction_* , вебовски экшены лежат в action.web и называются без префикса Web*.
Сейчас укажу это в вики.

Автор:  sabriel [ 13 янв 2011, 17:33 ]
Заголовок сообщения:  Re: Robokassa

dimOn писал(а):
Та инструкция для 5.0, короче. Для более поздних неактуально почти всё что там написано. В 5.1 уже нету никаких WebAction_* , вебовски экшены лежат в action.web и называются без префикса Web*.
Сейчас укажу это в вики.

хорошо ждем. надеюсь нам поможет
эм... в вики конечно хорошо поправили. а можете помочь все таки разобраться с нашей проблемой?)

Автор:  dimOn [ 13 янв 2011, 18:08 ]
Заголовок сообщения:  Re: Robokassa

Я лишь сделал плашку с предупреждением об актуальности версий и поместил её внизу некоторых статей. Само решение я не буду править :roll:

Могу сказать лишь, что там есть в статье исходники, вам надо их скачать, исправить названия и расположения классов, чтобы они виделись при вызове экшенов из web. После этого при вызове экшенов будет что-то происходить и с вероятностью 50% всё заработает, при остальных 50% надо будет подправить некоторые вызовы утильных разных методов из нашего API, если там используются те, которые в 5.1 были изменены/упразднены. Если нет знаний Java, но есть сильное желание всё же запустить это всё - обращайтесь к автору решения или в хелпдеск.

Или если сами настроите всё для компиляции тех исходников, то я тут попробую подсказать что именно надо будет подправить :umnik: Про то, как модули писать итд тоже на вики есть инфа вроде.

Автор:  sabriel [ 13 янв 2011, 18:47 ]
Заголовок сообщения:  Re: Robokassa

dimOn писал(а):
Я лишь сделал плашку с предупреждением об актуальности версий и поместил её внизу некоторых статей. Само решение я не буду править :roll:

Могу сказать лишь, что там есть в статье исходники, вам надо их скачать, исправить названия и расположения классов, чтобы они виделись при вызове экшенов из web. После этого при вызове экшенов будет что-то происходить и с вероятностью 50% всё заработает, при остальных 50% надо будет подправить некоторые вызовы утильных разных методов из нашего API, если там используются те, которые в 5.1 были изменены/упразднены. Если нет знаний Java, но есть сильное желание всё же запустить это всё - обращайтесь к автору решения или в хелпдеск.

Или если сами настроите всё для компиляции тех исходников, то я тут попробую подсказать что именно надо будет подправить :umnik: Про то, как модули писать итд тоже на вики есть инфа вроде.


для компиляции впринципе настроено. а вот что и где править знаний не хватает.

Автор:  dimOn [ 13 янв 2011, 20:48 ]
Заголовок сообщения:  Re: Robokassa

Вот я гооврю, что раньше вебовские экшены (имя класса) назывались так:
WebAction_BlaBla
и лежали они где-то в корне вообще пакета серверного.

теперь они должны лежать там же где и обычные экшены (но не в подпакете action а в подпакете action.web) и называться так же однотипно ( ActionBlaBla )

Автор:  dimOn [ 13 янв 2011, 20:49 ]
Заголовок сообщения:  Re: Robokassa

то есть например так начинается реальный экшен:

Код:
package bitel.billing.server.contract.action.web;

import java.sql.SQLException;

import org.w3c.dom.Element;

import ru.bitel.bgbilling.common.BGException;
import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.action.base.ActionBase;
import bitel.billing.server.contract.bean.ContractMemo;
import bitel.billing.server.contract.bean.ContractMemoManager;

public class ActionMemo
    extends ActionBase
{

Автор:  focus [ 14 янв 2011, 09:01 ]
Заголовок сообщения:  Re: Robokassa

Да на wiki версия для 5.0.
Сами недавно перешли на 5.1 и допиливали action для робокассы для 5.1.
Сейчас посмотрю какие изменения претерпел код, выложу обновленные библиотеки.
В wiki напишу что нужно подправить для 5.1

Автор:  focus [ 14 янв 2011, 10:01 ]
Заголовок сообщения:  Re: Robokassa

На wiki в той статье же добавил изменения для версии 5.1
Если будут вопросы пишите...

Автор:  dimOn [ 14 янв 2011, 11:59 ]
Заголовок сообщения:  Re: Robokassa

вот из этой статьи вашей
Цитата:
В common.xsl добавляем тоже самое, что и для 5.0

повторяю и обращаю внимание, что в оригинальной 5.1 нет никакого common.xsl

Автор:  sabriel [ 14 янв 2011, 12:14 ]
Заголовок сообщения:  Re: Robokassa

все сделали в server.out пишет
Код:
14.01.2011 11:08:54 org.apache.catalina.startup.Embedded start
INFO: Starting tomcat server
14.01.2011 11:08:54 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.18
14.01.2011 11:08:54 org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet resultrobokassa as unavailable
14.01.2011 11:08:54 org.apache.catalina.core.ApplicationContext log
SEVERE: Error loading WebappClassLoader
  delegate: false
  repositories:
----------> Parent Classloader:
ru.bitel.common.bootstrap.BootstrapClassLoader@5fd1acd3
 ru.bgbilling.robokassa.servlet.roboxre
java.lang.ClassNotFoundException: ru.bgbilling.robokassa.servlet.roboxre
   at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
   at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
   at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1094)
   at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
   at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
   at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
   at bitel.billing.server.Server.<init>(Server.java:421)
   at bitel.billing.server.Server.main(Server.java:242)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at ru.bitel.common.bootstrap.Boot.boot(Boot.java:77)
   at ru.bitel.common.bootstrap.Boot.main(Boot.java:125)
14.01.2011 11:08:54 org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /bgbilling threw load() exception
java.lang.ClassNotFoundException: ru.bgbilling.robokassa.servlet.roboxre
   at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
   at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
   at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1094)
   at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
   at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
   at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
   at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
   at bitel.billing.server.Server.<init>(Server.java:421)
   at bitel.billing.server.Server.main(Server.java:242)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at ru.bitel.common.bootstrap.Boot.boot(Boot.java:77)
   at ru.bitel.common.bootstrap.Boot.main(Boot.java:125)



может исходники компилим как то не так?
jar -cf используем эту команду

сервлет регистрируем так

Код:
    <servlet>
   <servlet-name>resultrobokassa</servlet-name>
   <servlet-class>ru.bgbilling.robokassa.servlet.roboxre</servlet-class>
        <load-on-startup>6</load-on-startup>
    </servlet>

но в jar архиве так ru/dsi/billing и тд
меняли на
Код:
<servlet>
   <servlet-name>resultrobokassa</servlet-name>
   <servlet-class>ru.dsi.bgbilling.robokassa.servlet.roboxre</servlet-class>
        <load-on-startup>6</load-on-startup>
    </servlet>


но класс все равно найти не может

Автор:  Cromeshnic [ 14 янв 2011, 12:19 ]
Заголовок сообщения:  Re: Robokassa

Нужно скомпилировать эти исходники:
http://wiki.bgbilling.ru/index.php/%D0% ... ib_5.1.zip
http://wiki.bgbilling.ru/index.php/%D0% ... ib_5.1.zip
Потом запаковать их в jar и закинуть в /usr/local/BGBillingServer/lib/

Автор:  Cromeshnic [ 14 янв 2011, 12:22 ]
Заголовок сообщения:  Re: Robokassa

Компилится каким-нибудь IDE или в консоли:
man javac
man jar

Пример тут есть: http://wiki.bgbilling.ru/index.php/%D0% ... 0%BE%D1%81

Автор:  Cromeshnic [ 14 янв 2011, 12:23 ]
Заголовок сообщения:  Re: Robokassa

Упс, когда писал, ещё не было указано про то, что вы компилите.

Когда конфиг меняли, сервер рестартовали?

Автор:  sabriel [ 14 янв 2011, 12:38 ]
Заголовок сообщения:  Re: Robokassa

Cromeshnic писал(а):
Упс, когда писал, ещё не было указано про то, что вы компилите.

Когда конфиг меняли, сервер рестартовали?


не. как оказалось не компилили а только запаковывали. сейчас пробуем скомпилить

Автор:  focus [ 14 янв 2011, 13:05 ]
Заголовок сообщения:  Re: Robokassa

Ещё нужно маппинг сделать
Код:
<servlet-mapping>
   <servlet-name>resultrobokassa</servlet-name>
   <url-pattern>/resrb</url-pattern>
    </servlet-mapping>

Про это в вики написано.
Да нужно скомпилить получить файл class,
затем их упаковать в jar
jar положить в .....BGBillingServer/lib
рестарт сервера биллинга
сервлет должен отвечать по адресу
http://server:port/bgbilling/resrb
должен вернуть bad sign

Автор:  focus [ 14 янв 2011, 13:08 ]
Заголовок сообщения:  Re: Robokassa

dimOn писал(а):
вот из этой статьи вашей
Цитата:
В common.xsl добавляем тоже самое, что и для 5.0

повторяю и обращаю внимание, что в оригинальной 5.1 нет никакого common.xsl


Спасибо что акцентировали на этом внимание.
С помощью common.xsl я добавляю раздел в левую менюшку.
Если сейчас common.xsl не актуален, тогда поясните, пожалуйста, каким образом в 5.1 правильно добавлять разделы в левое меню.
И я так понимаю он не актуален, но и работает (вроде deprecated) ?

Автор:  sabriel [ 14 янв 2011, 13:11 ]
Заголовок сообщения:  Re: Robokassa

пока с компиляцией разбираемся.
может можно выложить скомпиленные и запакованные сразу? если не сложно?
только не сочтите просьбу за наглость )

Автор:  focus [ 14 янв 2011, 13:12 ]
Заголовок сообщения:  Re: Robokassa

sabriel писал(а):
пока с компиляцией разбираемся.
может можно выложить скомпиленные и запакованные сразу? если не сложно?
только не сочтите просьбу за наглость )

Ок. сейчас.

Автор:  dimOn [ 14 янв 2011, 13:15 ]
Заголовок сообщения:  Re: Robokassa

focus писал(а):
dimOn писал(а):
вот из этой статьи вашей
Цитата:
В common.xsl добавляем тоже самое, что и для 5.0

повторяю и обращаю внимание, что в оригинальной 5.1 нет никакого common.xsl


Спасибо что акцентировали на этом внимание.
С помощью common.xsl я добавляю раздел в левую менюшку.
Если сейчас common.xsl не актуален, тогда поясните, пожалуйста, каким образом в 5.1 правильно добавлять разделы в левое меню.
И я так понимаю он не актуален, но и работает (вроде deprecated) ?

Нет, его просто нету. Часть из него было перенесено в layout.xsl , часть убрана. Меню всё в layout.xsl тоже. Работать он не может, потому что в оригинале он не подключается и его вообще нету в дереве классов очень давно, в сборку оно тоже не попадает. Если у вас старые какие-то шаблоны, то могло остаться по-старому.

Автор:  focus [ 14 янв 2011, 13:21 ]
Заголовок сообщения:  Re: Robokassa

Я понял.
У нас в layout.xsl ссылка на common.xsl

Страница 1 из 4 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/