BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 08 авг 2025, 02:33

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 105 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 26 май 2011, 20:33 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Dixson писал(а):
Cromeshnic писал(а):
Тут есть:
могули я использовать готовые скомпилированные фпайлы которые лежат на Wiki, а так же прописав то что нужно было в файлах layout.xsl в template standart_menu, data/default.web.xml - изменив лишь файл robokassa.properties под свои данные и положив его в /data

получить рабочий сервис Робокассы?


По-моему, да. Там готовые для использования либы лежат. И для 5.1 версии.
Если не ошибаюсь, то Akhmat их использует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 08 ноя 2011, 01:01 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
Здравствуйте :D

вот такие вот пироги у меня:


скачал исходники с Wiki: Файл:Servletrblib 5.1.zip Файл:Robokassalib 5.1.zip
распаковал их в /usr/local/BGBillingServer

пробую скомпилировать:
BGBillingServer]# /opt/java/jdk1.6.0_24/bin/javac -cp ./:lib/* ./servletrblib/ru/dsi/bgbilling/robokassa/servlet/roboxre.java

но под конец выходит вот это:
for encoding UTF8
//������ ��� �������� mail
^
./servletrblib/ru/dsi/bgbilling/robokassa/servlet/roboxre.java:20: package ru.dsi.bgbilling.robokassa.util does not exist
import ru.dsi.bgbilling.robokassa.util.md5;
^
./servletrblib/ru/dsi/bgbilling/robokassa/servlet/roboxre.java:43: package ru.dsi.bgbilling.robokassa.util does not exist
import ru.dsi.bgbilling.robokassa.util.Mailme;
^
./servletrblib/ru/dsi/bgbilling/robokassa/servlet/roboxre.java:65: cannot find symbol
symbol : class Mailme
location: class ru.dsi.bgbilling.robokassa.servlet.roboxre
private Mailme mail2me = new Mailme();
^
./servletrblib/ru/dsi/bgbilling/robokassa/servlet/roboxre.java:65: cannot find symbol
symbol : class Mailme
location: class ru.dsi.bgbilling.robokassa.servlet.roboxre
private Mailme mail2me = new Mailme();
^
./servletrblib/ru/dsi/bgbilling/robokassa/servlet/roboxre.java:318: cannot find symbol
symbol : variable md5
location: class ru.dsi.bgbilling.robokassa.servlet.roboxre
String lMD5 = md5.md5d(sum_in, chid, cid);
^
Note: ./servletrblib/ru/dsi/bgbilling/robokassa/servlet/roboxre.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
5 errors
100 warnings


и что мне с этим делать? я ведь не программист :(

такая же систуация при компиляцией файла /robokassalib/ru/dsi/bgbilling/robokassa/util/md5.java
компилирую:
BGBillingServer]# /opt/java/jdk1.6.0_24/bin/javac -cp ./:lib/* ./robokassalib/ru/dsi/bgbilling/robokassa/util/md5.java

вот что выдаёт:
./robokassalib/ru/dsi/bgbilling/robokassa/util/md5.java:9: package org.apache.commons.codec.digest does not exist
import org.apache.commons.codec.digest.DigestUtils;
^
./robokassalib/ru/dsi/bgbilling/robokassa/util/md5.java:53: cannot find symbol
symbol : variable DigestUtils
location: class ru.dsi.bgbilling.robokassa.util.md5
md5hex = DigestUtils.md5Hex(sum_o+":"+cid+":"+user_pass+":shp_contract="+shp_item).toUpperCase();
^
./robokassalib/ru/dsi/bgbilling/robokassa/util/md5.java:73: cannot find symbol
symbol : variable DigestUtils
location: class ru.dsi.bgbilling.robokassa.util.md5
md5hex = DigestUtils.md5Hex(user_name1+":"+sum_o+":"+cid+":"+user_pass+":shp_contract="+shp_item).toUpperCase();
^
./robokassalib/ru/dsi/bgbilling/robokassa/util/md5.java:94: cannot find symbol
symbol : variable DigestUtils
location: class ru.dsi.bgbilling.robokassa.util.md5
md5hex = DigestUtils.md5Hex(user_name1+":"+invid+":"+user_pass).toUpperCase();
^
4 errors
[root@localhost BGBillingServer]#


и вот с этим файлом: /robokassalib/bitel/billing/server/contract/action/web/ActionOnlinePay.java

компилирую:
BGBillingServer]# /opt/java/jdk1.6.0_24/bin/javac -cp ./:lib/* ./robokassalib/bitel/billing/server/contract/action/web/ActionOnlinePay.java

вот что выдаёт:
./robokassalib/bitel/billing/server/contract/action/web/ActionOnlinePay.java:12: package ru.dsi.bgbilling.robokassa.util does not exist
import ru.dsi.bgbilling.robokassa.util.ChekContractPeriod;
^
./robokassalib/bitel/billing/server/contract/action/web/ActionOnlinePay.java:27: cannot find symbol
symbol : variable ChekContractPeriod
location: class bitel.billing.server.contract.action.web.ActionOnlinePay
if(ChekContractPeriod.checkPeriod2(c.getDateTo()) == 1){
^
Note: ./robokassalib/bitel/billing/server/contract/action/web/ActionOnlinePay.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
2 errors


и вот с этим файлом: /robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java

компилирую:
BGBillingServer]# /opt/java/jdk1.6.0_24/bin/javac -cp ./:lib/* ./robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java

вот что выдаёт:
./robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java:21: package ru.dsi.bgbilling.robokassa.util does not exist
import ru.dsi.bgbilling.robokassa.util.md5;
^
./robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java:22: package ru.dsi.bgbilling.robokassa.util does not exist
import ru.dsi.bgbilling.robokassa.util.Mailme;
^
./robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java:23: package ru.dsi.bgbilling.robokassa.util does not exist
import ru.dsi.bgbilling.robokassa.util.Util;
^
./robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java:48: cannot find symbol
symbol : class Mailme
location: class bitel.billing.server.contract.action.web.ActionRequestRobokassa
Mailme m = new Mailme();
^
./robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java:48: cannot find symbol
symbol : class Mailme
location: class bitel.billing.server.contract.action.web.ActionRequestRobokassa
Mailme m = new Mailme();
^
./robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java:62: cannot find symbol
symbol : variable md5
location: class bitel.billing.server.contract.action.web.ActionRequestRobokassa
String s_login = md5.getMrthLogin();
^
./robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java:63: cannot find symbol
symbol : variable md5
location: class bitel.billing.server.contract.action.web.ActionRequestRobokassa
String s_md5 = md5.md5c("", Integer.toString(invid), Integer.toString(this.cid));
^
./robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java:65: cannot find symbol
symbol : variable Util
location: class bitel.billing.server.contract.action.web.ActionRequestRobokassa
String e_title = Util.encode("Пополнение баланса договора "+title);
^
Note: ./robokassalib/bitel/billing/server/contract/action/web/ActionRequestRobokassa.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
8 errors


Объясните пожалуйста -- что я делаю не так - и как это исправить


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 08 ноя 2011, 06:12 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
А почему уже готовые не использовать ?
А по сути ошибок - не находит необходимых классов и библиотек.
На wiki есть вот такой текст
Цитата:
Все новые сторонние и самостоятельно сделанные Java классы будем помещать в каталог BGBillingServer/lib/ В нашем случае это robokassalib.jar (web-action's), servletrblib.jar (сервлет), commons-codec-1.4.jar

библиотека commons-codec-1.4.jar нужна.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 08 ноя 2011, 09:17 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Цитата:
for encoding UTF8
//������ ��� �������� mail
^

В этом случае скорее всего из-за кодировки.
Сохраните файл roboxre.java в utf-8


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 09 ноя 2011, 12:08 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
focus писал(а):
А почему уже готовые не использовать ?


Попробовал готовые - но там у меня врем не выставленно - g.add(GregorianCalendar.HOUR, -5); //-5 - разница с Москвой в часах.
нужно указать уральтский регион +2 от Москвы

и еще Вы как то писали
focus писал(а):
Насчет url.
Да, верно url зашит в коде.... Когда писал, то тестового сервера робокассы не было,
а для тестов был у них тестовый логин.
Поэтому что могу предложить:
Настроить работу не на тестовый url, он будет Вам говорить ошибку. Но в логах сервера билилнга будет полный url, на который отправлялся запрос. Вы можете его скопировать из лога и исправить на тестовый.
Либо взять исходник, там заменить и скомпилировать.

попробовал
вот что выдаёт на тестовом сервере:

Неверное значение "PCR" для параметра "IncCurrLabel"

как я понял это тым валюты платежа
пробовал убрать этот параметр, из ссылки сам выризал, и тогда следующую надпись выдает:

Введите параметр OutSum :

ввожу на странице тестового сервера в форму - возле на этой надписи - значение 0 - и перехожу на основную странице тестового сервера

так вот я подумал что кое что наверное нужно будет поправить в коде (хотябы время выставить и прописать эти параметры - на которые ругается тестовый сервер) и скомпилировать по новой

но что то не получается :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 09 ноя 2011, 12:15 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
focus писал(а):
А почему уже готовые не использовать ?
А по сути ошибок - не находит необходимых классов и библиотек.
На wiki есть вот такой текст
Цитата:
Все новые сторонние и самостоятельно сделанные Java классы будем помещать в каталог BGBillingServer/lib/ В нашем случае это robokassalib.jar (web-action's), servletrblib.jar (сервлет), commons-codec-1.4.jar

библиотека commons-codec-1.4.jar нужна.


понятно - значит я забыл скачать и закинуть в папку BGBillingServer/lib/ - библиотеку commons-codec-1.4.jar
:(
спасибо учту :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 09 ноя 2011, 12:48 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
в самом личном кабинете ROBOKASSA в разделе администрирования указал вот эти параметры:

Result URL: поставил - http://servername.ru/resrb
[используется для оповещения о платеже, если метод отсылки - email, то email-адрес]

Success URL: поставил - http://servername.ru/resrb
[используется в случае успешного проведения платежа]

Fail URL: поставил - http://servername.ru/resrb
[используется в случае отказа проведения платежа]

Метод отсылки данных по URL: везде поставил POST

теперь сам вопрос: при такой настройки будет ли безошибочно радотать ROBOKASSA
или какие то другие URL нужно еще указывать?

такой вопрос возник потому как на тестовом сервере ROBOKASSA на основной странице
есть 3 кнопки перехода для проверки
Уведомление о платеже - жму и на этой же странице - выдается - Произошла внутренняя ошибка в процесе отправки уведомления

дале следующяя кнопка:
Успешное проведение платежа и отказ от платежа
для перехода на Success Url: http://servername.ru/resrb
жму её: но страница не открывается ((

так же и с преходом по кгопке ниже на Fail Url:

возможно в конфиге nginx нужно добавить какие то изменения, чтобы этот URL был доступен из вне?
я использую конфигурацию для nginx по примеру №1 с Wiki - http://wiki.bgbilling.ru/index.php/Проксирование_обращений_к_BGBillingServer_посредством_nginx


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 09 ноя 2011, 12:50 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
focus писал(а):
Цитата:
for encoding UTF8
//������ ��� �������� mail
^

В этом случае скорее всего из-за кодировки.
Сохраните файл roboxre.java в utf-8


надо попробовать сохнанить этот файл в кодировке UTF-8?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 09 ноя 2011, 12:59 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Dixson писал(а):
focus писал(а):
Цитата:
for encoding UTF8
//������ ��� �������� mail
^

В этом случае скорее всего из-за кодировки.
Сохраните файл roboxre.java в utf-8


надо попробовать сохнанить этот файл в кодировке UTF-8?


Да.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 09 ноя 2011, 13:00 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Dixson писал(а):
в самом личном кабинете ROBOKASSA в разделе администрирования указал вот эти параметры:

Result URL: поставил - http://servername.ru/resrb
[используется для оповещения о платеже, если метод отсылки - email, то email-адрес]


http://servername.ru/resrb - должен быть доступен из вне.
если просто на него зайти без указания параметров - должен выдать bad sign
если выдает - все ок, если не выдает или ругается иначе - значит этот ресурс из вне не доступен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 12 ноя 2011, 16:29 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
Прописал в конфиг nginx еще несколько строк для разрещшения этого URL: http://servername.ru/resrb

# Для ответа ROBOKASSA
location /bgbilling/resrb {
deny all;
}


пробую перейти по данному URL: http://servername.ru/resrb - выдаёт ошибку 403 (доступ запрещен)

отключаю nginx и пробую прямую ссылку URL: http://servername.ru:8080/bgbilling/resrb
выдаёт - Адрес не найден

значит какой то не правильный URL я пробую открыть

а тогда какой адрес набирать мне?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 14 ноя 2011, 11:01 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Dixson писал(а):
Прописал в конфиг nginx еще несколько строк для разрещшения этого URL: http://servername.ru/resrb

# Для ответа ROBOKASSA
location /bgbilling/resrb {
deny all;
}


пробую перейти по данному URL: http://servername.ru/resrb - [b]выдаёт ошибку 403 (доступ запрещен)
...........
а тогда какой адрес набирать мне?

а если http://servername.ru/bgbilling/resrb


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 14 ноя 2011, 16:07 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
а если http://servername.ru/bgbilling/resrb

пробую такой адрес но все равно пишет - страница не найдена


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 15 ноя 2011, 06:04 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Dixson писал(а):
Прописал в конфиг nginx еще несколько строк для разрещшения этого URL: http://servername.ru/resrb

# Для ответа ROBOKASSA
location /bgbilling/resrb {
deny all;
}


Я не силен в конфигах ngnix, но по логике вы тут написали, что запретить все к этому ресурсу. Не ?
А нам наоборот нужно разрешить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 20 ноя 2011, 21:21 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
focus писал(а):
Dixson писал(а):
Прописал в конфиг nginx еще несколько строк для разрещшения этого URL: http://servername.ru/resrb

# Для ответа ROBOKASSA
location /bgbilling/resrb {
deny all;
}


Я не силен в конфигах ngnix, но по логике вы тут написали, что запретить все к этому ресурсу. Не ?
А нам наоборот нужно разрешить.


Да так оно и есть - запрещает
а вот как разрешить тогда? (я к стати то же не силен)
может у Вас есть по этому поводу какие то мысли?
может кто нибудь подскажет на форуме как разрешить?

За ранее спасибо за помощь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 21 ноя 2011, 06:10 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Dixson писал(а):
а вот как разрешить тогда? (я к стати то же не силен)
может у Вас есть по этому поводу какие то мысли?


Может allow поможет
#Для ответа ROBOKASSA
location /bgbilling/resrb
{
allow IP сервера_1 робокассы;
allow IP сервера_2 робокассы;
allow IP сервера_3 робокассы;
deny all;
}

Может тут более понятнее будет
http://www.alrond.com/ru/2007/apr/12/og ... ami-nginx/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 21 ноя 2011, 11:58 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
# запросы к / перенаправлять на webexecuter
rewrite ^/$ /bgbilling/webexecuter last;


как я понял в конфигурации nginx - все завросы перенаправляются http://servername.ru/bgbilling/webexecuter
когда ROBOKASSA пытается отправить запрос на http://servername.ru/resrb (так должно быть в идеале) nginx перенаправляет запрос и получается URL вида http://servername.ru/bgbilling/webexecuter/resrb - а такого страницы нет Ошибка 404

Как тут изменить чтобы работал URL http://servername.ru/resrb?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 21 ноя 2011, 12:05 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Вот как.
А там можно с конкретных IP перенаправлять на другой url ?
Дока вот по ngnix
http://nginx.org/ru/docs/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 21 ноя 2011, 12:21 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
Огромнешее спасибо - за уделенное внимание моеё проблеме :)
Буду пробовать :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 21 ноя 2011, 13:37 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
Странно, но этот URL совсем не видит, даже при выключенном nginx - http://servername.ru:8080/bgbilling/resrb
должно же выдать на странице - bad sign
так ведь?

что делать ума не приложу :facepalm:


Последний раз редактировалось Dixson 21 ноя 2011, 20:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 21 ноя 2011, 19:58 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
Вот что заметил в своих экспериментах

1. Добавил в конфиг nginx вот такие строки по ваше рекомендации:

#Для ответа ROBOKASSA
location /bgbilling/resrb
{
allow IP сервера_1 робокассы;
allow IP сервера_2 робокассы;
deny all;
}


URL http://servername.ru:8080/bgbilling/resrb - был не доступен (ошибка 403)
посмотрел файл server.out и там увидел это:
21.11.2011 16:59:47 org.apache.catalina.core.StandardWrapperValve invoke
INFO: Servlet resultrobokassa is currently unavailable


2. Раз такое - решил по эксперементировать и в файле /usr/local/BGBillingServer/data/default.web.xml обратил внимание на эту вот строчку <servlet-class>ru.bgbilling.robokassa.servlet.roboxre</servlet-class>

когда я компилировал исходник servletrblib.jar , то там путь до roboxre.class был иной, а именно: ru.dsi.bgbilling.robokassa.servlet.roboxre

вот я и решил указать такой путь в этой строке: <servlet-class>ru.dsi.bgbilling.robokassa.servlet.roboxre</servlet-class>

и вот, что теперь получается: URL http://servername.ru:8080/bgbilling/resrb - теперь доступен, но выдаёт вместо bad sign вот такую вот ошибку Error DB Connection - не может соединится к база данных

может быть осталась какая то ошибка в исходнике servletrblib, когда переделывали исходник с версии биллинга 5.0 под версию биллинга 5.1- раз так получается? или я что то не так делаю?

я в файле roboxre.java сам не смог разобраться что и как поправить :( может мне кто подскажет что и где изменить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 02 дек 2011, 16:49 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
Подскажите пожалуйста - что тут и где надо изправить в этом коде, чтобы он заработал (а то выдается сообщение Error DB Connection):
исполбзую BGBilling 5.1 сборка 736

Код:
/*
 * Makarov Alex
 * alexd.makarov@gmail.com
 * DSI
 */

package ru.dsi.bgbilling.robokassa.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
//класс для генерации MD5 по требованию робокассы
import ru.dsi.bgbilling.robokassa.util.md5;
//Пакет биллинговой системы
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.BalanceUtils;
//
import bitel.billing.server.contract.bean.Payment;
import bitel.billing.server.contract.bean.PaymentManager;
import bitel.billing.server.script.bean.event.EventProcessor;
import bitel.billing.server.script.bean.event.PaymentEvent;
import bitel.billing.common.BGException;

import java.math.BigDecimal;
//Класс для коннекта к БД и обработки ошибок
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Driver;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
//Пакеты для отправки mail
import javax.mail.NoSuchProviderException;
import javax.mail.MessagingException;
import ru.dsi.bgbilling.robokassa.util.Mailme;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
 *
 * @author makarovad
 */

public class roboxre extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    private static Properties props = new Properties();
    //private static String propFile = "c://BGBillingServer//data/data.properties"; //Для тестирования
    //private static String robopropFile = "d://robokassa.properties"; //Для тестирования
    //private static String jdbc_url = "jdbc:mysql://localhost/bgbilling"; //Для тестирования
    private Connection con = null;
    private Mailme mail2me = new Mailme();
    protected static String robopropFile = "/usr/local/BGBillingServer/data/robokassa.properties"; //Для использования на сервере BGBilling
    //protected static String robopropFile = "c://BGBillingServer//data//robokassa.properties"; //Для использования на сервере BGBilling
    protected static String propFile = "/usr/local/BGBillingServer/data/data.properties"; //Для использования на сервере BGBilling
    //protected static String propFile = "c://BGBillingServer//data//data.properties"; //Для использования на сервере BGBilling

    private static String jdbc_url = "jdbc:mysql://127.0.0.1/bgbilling"; //Для использования на сервере BGBilling
    /*Если есть такой идентификатор договора в БД биллинговой системы, тогда
     * возвращаем true иначе false
    */
    protected synchronized boolean DoConnection(String url){
        //Регистрируем драйвер для соединения с БД

        try{
            File propsFile = new File(propFile);
            FileInputStream fis = new FileInputStream(propsFile);
            props.load(fis);
            fis.close();
            String db_user = props.getProperty("db.user");
            String password = props.getProperty("db.pswd");
            String properties_jdbc_url = props.getProperty("db.url");
            DriverManager.registerDriver((Driver)Class.forName("com.mysql.jdbc.Driver").newInstance());
            con = DriverManager.getConnection(properties_jdbc_url,db_user,password);
            return true;
        }catch(Exception e){
            return false;
        }
    }
    protected synchronized void closeConnection(){
        try{
            con.close();
        }catch(SQLException e){
        }
    }

    protected int getIdTypePayment(){
        //Возвращается вид платежа, который записан в файле robokassa.properties
        int id_payment = 0;
        try{
            File propsFile = new File(robopropFile);
            FileInputStream fis = new FileInputStream(propsFile);
            props.load(fis);
            fis.close();
            id_payment = Integer.parseInt(props.getProperty("id_payment_robo"));
        }catch(Exception e){
            e.printStackTrace();
            id_payment = -1;
            try{
                mail2me.sendMail("Error in getIdTypePayment value of property id_payment_robo="+props.getProperty("id_payment_robo")+"\n"+e.getMessage(),
                            "IDTYPEPAYMENT");
            }catch(NoSuchProviderException e1){

            }catch(MessagingException e2){

            }
        }
        return id_payment;
    }

    protected synchronized boolean isOkCID(String cid){
        ContractManager cm = new ContractManager(con);
        Contract cont =  cm.getContractByID(Integer.parseInt(cid));
        if(cont!=null){
            return true;
        }else{
            return false;
        }
    }

    /**
     * Если есть строка в таблице payment_robokassa с inv_id равным параметру, то возвращаем true иначе false
     * @param invid - идентификатор платежа
     * @return true или false
     */
    protected synchronized boolean getRecordPayment(int invid){
        boolean res = false;
        try{
            //условие pid is null необходимо для искблчения ошибки - повторного добавления платежа!
            String _sql = "select 1 from payment_robokassa where inv_id=? and pid is null";
            PreparedStatement ps = con.prepareStatement(_sql);
            ps.setInt(1, invid);
            ResultSet rs = ps.executeQuery();
            if(rs.next()) res = true;
        }catch(SQLException e){
            e.printStackTrace();
            try{
                mail2me.sendMail("SQLError return record in payment_robokassa InvID="+invid+" \n"+e.getMessage(),"ROBOKASSA_REGISTERPAYMENT");
            }catch(NoSuchProviderException e1){
                e1.printStackTrace();
            }catch(MessagingException e2){
                e2.printStackTrace();
            }
            res = false;
        }
        return res;
    }

    /**
     *
     *Регистрируем в таблице payment_robokassa строку о попытке добавить платеж.
     *В этой таблице в качестве идентификатора используется значение из запроса InvID
     *Т.О. два раза один и тот же платеж не может быть зарегистрирован в системе.
     *Если пришёл повторно на регистрацию плетжа имеющийся InvID делаем исключительную ситуация и
     *отправляем на почту информацию об этом.
     * deprecated
     */
    @Deprecated
    protected synchronized boolean registerNewPayment(String chid,String cid,String _sum){
        boolean res = false;
        int iCHID; int iCID;
        BigDecimal dSUM;
        java.util.Date ld = new java.util.Date();
        java.sql.Date sd = new java.sql.Date(ld.getTime());
        try{
            iCHID = Integer.parseInt(chid);
            iCID = Integer.parseInt(cid);
            dSUM = BigDecimal.valueOf(Double.parseDouble(_sum));
        }catch(NumberFormatException e){
            e.printStackTrace();
            return false;
        }
        try{
            String _sql = "insert into payment_robokassa(inv_id,cid,dt,sum) values(?,?,?,?)";
            PreparedStatement ps = con.prepareStatement(_sql);
            ps.setInt(1, iCHID);
            ps.setInt(2, iCID);
            ps.setDate(3, sd);
            ps.setBigDecimal(4,dSUM);
            ps.executeUpdate();
            res = true;
        }catch(SQLException e){
            e.printStackTrace();
            try{
                mail2me.sendMail("Error while register record in payment_robokassa CID="+cid+" InvID="+chid+" \n"+e.getMessage(),"ROBOKASSA_REGISTERPAYMENT");
            }catch(NoSuchProviderException e1){
                e1.printStackTrace();
            }catch(MessagingException e2){
                e2.printStackTrace();
            }
            return false;
        }
        return res;
    }

    /**
     * Обновляем строку в payment_robokassa. Проставляем дату прихода платежа,
     * код платежа в платежной таблице баллинга, суму
     * @param invid - идентификатор платежа
     * @param pid - код записи в таблице платежей биллинга
     * @param sump - сума платежа
     * @return true - все  выполнено успешно. false - в процессе выполнения произошла ошибка
     */
    protected synchronized boolean updateRecordPayment(int invid,int pid, BigDecimal sump){
        //обновляем в таблице payment_robokassa строку и вставляем значение pid=идентификатору платежа
        boolean res = false;
        try{
            String _sql = "update payment_robokassa set pid=?,dtfp=?,sum=?,dtfp_msk=? where inv_id=?";
            java.util.Date ld = new java.util.Date();
            java.sql.Date sd = new java.sql.Date(ld.getTime());
            PreparedStatement ps = con.prepareStatement(_sql);
            ps.setInt(1, pid);
            ps.setDate(2, sd);
            ps.setBigDecimal(3, sump);
            //Проставляем московское время в дополнительном поле
            Calendar g = new GregorianCalendar();
            g.add(GregorianCalendar.HOUR, -5);
            java.sql.Timestamp d = new java.sql.Timestamp(g.getTimeInMillis());
            ps.setTimestamp(4, d);
            ps.setInt(5, invid);
            System.out.println(invid+" pid= "+pid+" sum= "+sump);
            if(ps.executeUpdate() > 0){
                System.out.println("UPDATED");
                res = true;
            }
        }catch(SQLException e){
            e.printStackTrace();
            try{
                mail2me.sendMail("Error while update record in payment_robokassa PayID="+pid+" \n"+e.getMessage(),"ROBOKASSA_REGISTERPAYMENT");
            }catch(NoSuchProviderException e1){
                e1.printStackTrace();
            }catch(MessagingException e2){
                e2.printStackTrace();
            }
            return false;
        }
        return res;
    }

    @Deprecated
    protected synchronized boolean updateNewPayment(String chid,int pid){
        //обновляем в таблице payment_robokassa строку и вставляем значение pid=идентификатору платежа
        boolean res = false;
        int iCHID;
        try{
            iCHID = Integer.parseInt(chid);
        }catch(NumberFormatException e){
            return false;
        }
        try{
            String _sql = "update payment_robokassa set pid=? where inv_id=?";
            PreparedStatement ps = con.prepareStatement(_sql);
            ps.setInt(1, pid);
            ps.setInt(2, iCHID);
            if(ps.executeUpdate() > 0){
                res = true;
            }
        }catch(SQLException e){
            e.printStackTrace();
            try{
                mail2me.sendMail("Error while update record in payment_robokassa PayID="+pid+" \n"+e.getMessage(),"ROBOKASSA_REGISTERPAYMENT");
            }catch(NoSuchProviderException e1){
                e1.printStackTrace();
            }catch(MessagingException e2){
                e2.printStackTrace();
            }
            return false;
        }
        return res;
    }

    protected synchronized void processRequest(HttpServletRequest request, HttpServletResponse response)
                                                       throws ServletException, IOException {
        /*Читаем значения параметров из запроса*/
        String chid = ""; //идентификатор счета
        String sum_in = ""; //сумма платежа
        String sMD5 = ""; // Значение MD5
        String cid = ""; //Идентификатор догоовра
        String clientIP = request.getRemoteAddr();
        String clienthostname = request.getRemoteHost();

        if(request.getParameter("SignatureValue")!=null && request.getParameter("SignatureValue").length()>0){
            //Читаем параметр MD5
            sMD5 = request.getParameter("SignatureValue");
        }
        if(request.getParameter("InvId")!=null && request.getParameter("InvId").length()>0){
            //Читаем параметр MD5
            chid = request.getParameter("InvId");
        }
        if(request.getParameter("OutSum")!=null && request.getParameter("OutSum").length()>0){
            //Читаем параметр MD5
            sum_in = request.getParameter("OutSum");
        }
        if(request.getParameter("shp_contract")!=null && request.getParameter("shp_contract").length()>0){
            //Читаем параметр MD5
            cid = request.getParameter("shp_contract");
        }
        /*Для проверки запроса используем сравнение значения MD5 из пришедшего запроса
         со значением MD5, который получиться у нас с такими же параметрами
         */

        //соединяемся с БД
        if(DoConnection(jdbc_url)){
            //Делаем наш MD5
            String lMD5 = md5.md5d(sum_in, chid, cid);
            //Проверяем MD5 сгенерированный с тем что пришёл от робокассы
            if(sMD5.equalsIgnoreCase(lMD5)){
                // Проверяем есть ли такой договор в системе биллинга
                //isOkCID(cid);
                ///if(contr.) нужно какие-то проверки ??????7

                //Добавляем палтеж
                try{
                    //Проверка, есть ли строка с платежом в таблице
                    if(getRecordPayment(Integer.parseInt(chid))){
                    //Если добавился платеж в нашу таблицу то добавляем далее в таблицу биллинга
                    //if(registerNewPayment(chid, cid, sum_in)){
                        PaymentManager pm = new PaymentManager(con);
                        int idtp = getIdTypePayment();
                        if(idtp == -1){
                            response.setContentType("text/html");
                            PrintWriter out = response.getWriter();
                            out.print("bad sign\n");
                            out.close();
                        }else{
                            Payment pay = new Payment();
                            pay.setContractID(Integer.parseInt(cid));
                            pay.setPaymentTypeID(idtp);
                            Date d = new Date();
                            pay.setDate(d);
                            pay.setComment("Платеж с помощью ROBOKASSA. Идентификатор счета в ROBOKASSA="+chid);
                            pay.setSumma(BigDecimal.valueOf(Double.parseDouble(sum_in)));
                            pm.updatePayment(pay);

                            //Далее обновляем в нашей таблице информацию о платеже
                            if(!updateRecordPayment(Integer.parseInt(chid), pay.getID(), BigDecimal.valueOf(Double.parseDouble(sum_in)))){
                                //Иначе ответ bad sign
                                System.err.println("ROBOKASSA Error while finish update payment_robokassa payment CID="+cid+" SUMM="+sum_in+" Remote IP="+clientIP+" Remote host="+clienthostname);
                                response.setContentType("text/html");
                                PrintWriter out = response.getWriter();
                                out.print("bad sign\n");
                                out.close();

                                try{
                                    mail2me.sendMail("ROBOKASSA Error while finish update payment_robokassa payment CID="+cid+" SUMM="+sum_in+" Remote IP="+clientIP+" Remote host="+clienthostname,
                                    "ERRORPAYMENT_ROBOKASSA");
                                }catch(NoSuchProviderException e1){
                                    e1.printStackTrace();
                                }catch(MessagingException e2){
                                    e2.printStackTrace();
                                }
                            }else{
                                //updateNewPayment(chid,pay.getID());
                                //Далее нужено пересчитать Баланс. А то сам не пресчитывается.
                                BalanceUtils bu = new BalanceUtils(con);
                                bu.updateBalance(d, pay.getContractID());
                                //Вызываем событие прихода платежа
                                EventProcessor.getProcessor().processEvent(new PaymentEvent(-1, pay));
                                //Отвечаем робокассе
                                response.setContentType("text/html");
                                PrintWriter out = response.getWriter();
                                out.print("OK"+chid+"\n");
                                out.close();
                            }
                        }
                    }else{
                    //Иначе ответ bad sign
                        System.out.println("ROBOKASSA Error in MD5 CID="+cid+" SUMM="+sum_in+" Remote IP="+clientIP+" Remote host="+clienthostname);
                        response.setContentType("text/html");
                        PrintWriter out = response.getWriter();
                        out.print("bad sign\n");
                        out.close();
                        try{
                            mail2me.sendMail("ROBOKASSA Error while finish update payment_robokassa payment CID="+cid+" SUMM="+sum_in+" Remote IP="+clientIP+" Remote host="+clienthostname,
                                             "ERRORPAYMENT_ROBOKASSA");
                        }catch(NoSuchProviderException e1){
                            e1.printStackTrace();
                        }catch(MessagingException e2){
                            e2.printStackTrace();
                        }
                    }
                }catch(Exception e){
                    e.printStackTrace();
                    System.out.println("ROBOKASSA Error while register payment CID="+cid+" SUMM="+sum_in+" Remote IP="+clientIP+" Remote host="+clienthostname);
                    response.setContentType("text/html");
                    PrintWriter out = response.getWriter();
                    out.print("Error while register payment\n");
                    out.close();
                    closeConnection();
                    try{
                        mail2me.sendMail("ROBOKASSA Error while register payment CID="+cid+" SUMM="+sum_in+" Remote IP="+clientIP+" Remote host="+clienthostname,
                            "ERRORPAYMENT_ROBOKASSA");
                    }catch(NoSuchProviderException e1){
                        e1.printStackTrace();
                    }catch(MessagingException e2){
                        e2.printStackTrace();
                    }
                }
            }else{
                response.setContentType("text/html");
                PrintWriter out = response.getWriter();
                out.print("bad sign\n");
                out.close();
                System.out.println("Error in MD5 signature bad_sign="+lMD5+" cid="+cid+" SUMM="+sum_in+" Remote IP="+clientIP+" Remote host="+clienthostname);
                try{
                    mail2me.sendMail("Error in MD5 signature bad_sign="+lMD5+"\n"+"CID="+cid+" SUMM="+sum_in+" Remote IP="+clientIP+" Remote host="+clienthostname,
                            "BADSIGN_ROBOKASSA");
                }catch(NoSuchProviderException e1){
                    e1.printStackTrace();
                }catch(MessagingException e2){
                    e2.printStackTrace();
                }
            }
            closeConnection();
        }else{
            System.out.println("ROBOKASSA Error DB Connection CID="+cid+" SUMM="+sum_in);
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.print("Error DB Connection\n");
            out.close();
            try{
                mail2me.sendMail("ROBOKASSA Error DB Connection CID="+cid+" SUMM="+sum_in+" Remote IP="+clientIP+" Remote host="+clienthostname,
                                    "ERRORDBCONNECTION_ROBOKASSA");
            }catch(NoSuchProviderException e1){
                e1.printStackTrace();
            }catch(MessagingException e2){
                e2.printStackTrace();
            }
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 21 фев 2012, 09:21 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Код:
/usr/local/BGBillingServer/data/robokassa.properties
/usr/local/BGBillingServer/data/data.properties

Вот в этих файликах хранятся настройки для работы.
Файлики такие есть ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 22 фев 2012, 18:02 
Не в сети

Зарегистрирован: 14 апр 2011, 19:55
Сообщения: 74
Карма: 0
focus писал(а):
Код:
/usr/local/BGBillingServer/data/robokassa.properties
/usr/local/BGBillingServer/data/data.properties

Вот в этих файликах хранятся настройки для работы.
Файлики такие есть ?


Вопрос все еще актуален. Файлы есть, обмен с тестовым сервером робокассы идет, но при "пробном" платеже выдает ошибку Error DB Connection.

Версия БГ 5.1 сборка 642


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 24 фев 2012, 06:12 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
1. Покажите полный стек ошибки.
2. Покажите, если это возможно, содержимое data.properties (нужно посмотреть наличие самих параметров, которые далее используются в сервелете).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 24 фев 2012, 16:05 
Не в сети

Зарегистрирован: 14 апр 2011, 19:55
Сообщения: 74
Карма: 0
Начнем с п.2.
Файл data.properties:

connector.http=*:8080
port.admin=2005

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1/bgbilling?useUnicode=true&characterEncoding=Cp1251&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&elideSetAutoCommits=true&cachePrepStmts=true&useCursorFetch=true&queryTimeoutKillsConnection=true
db.user=bill
db.pswd=bgbilling
db.maxIdle=20
db.maxActive=300

mq.url=failover:(nio://127.0.0.1:61616)
mq.user=bill
mq.pswd=bgbilling

context.path=/bgbilling

Все по-умолчанию (специально для тестов и обкатки поставил на "чистую" машинку БГ с тестовой лицензией). Если файл data.properties отсутствует в каталоге data - сервер не стартует, если изменить логин/пароль в этом файле на заведомо неправильные - сервер также не стартует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 24 фев 2012, 16:07 
Не в сети

Зарегистрирован: 14 апр 2011, 19:55
Сообщения: 74
Карма: 0
п.1.
Server.log:

02-24/13:01:09 INFO [main] DefaultServerSetup - Binding javax.jms.ConnectionFactory[org.apache.activemq.ActiveMQConnectionFactory@85e019] to java:comp/env/mq/connectionFactory
02-24/13:01:09 INFO [main] DefaultServerSetup - Init DB connection pools
02-24/13:01:09 INFO [main] DefaultServerSetup - Binding JDBC pool "master" to java:comp/env/jdbc/master
02-24/13:01:19 INFO [main] DefaultServerSetup - Init trash pools..
02-24/13:01:21 INFO [main] Server - Starting BGBillingServer..
02-24/13:01:22 INFO [main] Server - HTTP Connector: *:8080
02-24/13:01:22 INFO [main] Server - Starting HTTP connector...
02-24/13:01:22 INFO [main] Server - HTTPS Connector: null
02-24/13:01:22 INFO [main] Server - Browsing installed modules and plugins...
02-24/13:01:22 INFO [main] Server - Add servlet for modules and plugins...
02-24/13:01:22 INFO [main] Server - Creating installed modules map...
02-24/13:01:55 INFO [main] server - Starting listen admin port 2005
02-24/13:01:59 INFO [main] AbstractTilesApplicationContextFactory - Initializing Tiles2 application context. . .
02-24/13:01:59 INFO [main] AbstractTilesApplicationContextFactory - Finished initializing Tiles2 application context.
02-24/13:01:59 INFO [main] TilesContainerFactory - Initializing Tiles2 container. . .
02-24/13:02:00 INFO [main] TilesContainerFactory - Tiles2 container initialized
02-24/13:02:00 INFO [main] TilesAccess - Publishing TilesContext for context: org.apache.tiles.servlet.context.ServletTilesApplicationContext
02-24/13:23:37 INFO [http-8080-1] LoggingPrintStream - http://test.robokassa.ru/Index.aspx?Mrc ... 7EB133B09F
02-24/13:23:50 INFO [http-8080-6] LoggingPrintStream - ROBOKASSA Error DB Connection CID=1 SUMM=100
02-24/13:23:51 ERROR [http-8080-6] LoggingPrintStream - javax.mail.SendFailedException: Invalid Addresses;
nested exception is:

server.out

Java Runtime: Oracle Corporation Java HotSpot(TM) Client VM [1.7.0_01] /usr/lib/jvm/jdk1.7.0_01/jre
Java endorsed dirs: /usr/lib/jvm/jdk1.7.0_01/jre/lib/endorsed
OS: Linux 3.0.0-16-generic [i386], file.encoding: UTF-8, user.name: root
Heap sizes: current=15552k free=13606k max=253440k
фев 24, 2012 1:01:55 PM org.apache.catalina.startup.Embedded start
INFO: Starting tomcat server
фев 24, 2012 1:01:56 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.18
фев 24, 2012 1:02:01 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
фев 24, 2012 1:02:01 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080


Ответ робокассы:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 24 фев 2012, 17:00 
Не в сети

Зарегистрирован: 14 апр 2011, 19:55
Сообщения: 74
Карма: 0
PS. В server.out после последней фразы идут ошибки отправки почты - все адреса правильные, ящик рабочий. Сейчас-не принципиально.
Если щелкать по другим доступным кнопкам - выдается та же самая ошибка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 27 фев 2012, 01:42 
Не в сети

Зарегистрирован: 10 фев 2011, 13:29
Сообщения: 20
Откуда: г. Копейск
Карма: 0
focus писал(а):
Код:
/usr/local/BGBillingServer/data/robokassa.properties
/usr/local/BGBillingServer/data/data.properties

Вот в этих файликах хранятся настройки для работы.
Файлики такие есть ?


да такие файлики имеются в папке /usr/local/BGBillingServer/data/

здесь настройки для Robokassa - /usr/local/BGBillingServer/data/robokassa.properties
здесь настройки биллинга -/usr/local/BGBillingServer/data/data.properties


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Robokassa
СообщениеДобавлено: 27 фев 2012, 06:20 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Давайте посмотрим детально ошибку, которая происходит
Код функции DoConnection замените вот на этот код
Код:
protected synchronized boolean DoConnection(String url){
   boolean res = false;
        try{
            File propsFile = new File(propFile);
            FileInputStream fis = new FileInputStream(propsFile);
            props.load(fis);
            fis.close();
            String db_user = props.getProperty("db.user");
            String password = props.getProperty("db.pswd");
            String properties_jdbc_url = props.getProperty("db.url");
            DriverManager.registerDriver((Driver)Class.forName("com.mysql.jdbc.Driver").newInstance());
            con = DriverManager.getConnection(properties_jdbc_url,db_user,password);
            res = true;
        }catch(Exception e){
            e.printStackTrace();
            res = false;
        }
        return res;
    }

После скомпилируйте, закиньте новый вариант и БГ рестртаните.
Попробуйте провести платеж и должна быть детальная ошибка (стек).
Выложите пожалуйста.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 105 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.075s | 75 Queries | GZIP : On ]