BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 22 июн 2025, 04:08

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
СообщениеДобавлено: 02 июл 2013, 20:22 
Не в сети

Зарегистрирован: 15 фев 2011, 14:35
Сообщения: 172
Откуда: STAVROPOL
Карма: 5
Принимаем оплату через терминалы Сбербанка (online) через Bisys
Платеж поступает баланс обновляется, а вот доступ в модуле Inet для сервиса иногда меняется на включен, но в 90% случаев нет, только после того как будет открыт закрыт сервис вручную.
Внимание вопрос какую функцию надо использовать в нашем самописном сервлете, что-бы по приходу платежа состояние сервиса менялось.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 июл 2013, 20:27 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
После добавления платежа и коммита в БД:
Код:
EventProcessor.getInstance().publish( new PaymentEvent( 0, payment ) );
EventProcessor.getInstance().publish( new ContractBalanceChangedEvent( contractId, payment.getSumma() ));
Например:
Код:
paymentManager.updatePayment( payment );

bu.updateBalance( payment.getPaymentDate(), contract );

con.commit();

EventProcessor.getInstance().publish( new PaymentEvent( userId, payment ) );
EventProcessor.getInstance().publish( new ContractBalanceChangedEvent( contract.getId(), payment.getSumma() ) );


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 июл 2013, 20:39 
Не в сети

Зарегистрирован: 15 фев 2011, 14:35
Сообщения: 172
Откуда: STAVROPOL
Карма: 5
Amir писал(а):
После добавления платежа и коммита в БД:
Код:
EventProcessor.getInstance().publish( new PaymentEvent( 0, payment ) );
EventProcessor.getInstance().publish( new ContractBalanceChangedEvent( contractId, payment.getSumma() ));
Например:
Код:
paymentManager.updatePayment( payment );

bu.updateBalance( payment.getPaymentDate(), contract );

con.commit();

EventProcessor.getInstance().publish( new PaymentEvent( userId, payment ) );
EventProcessor.getInstance().publish( new ContractBalanceChangedEvent( contract.getId(), payment.getSumma() ) );


Спасибо, но увы все так-же


Последний раз редактировалось dm777 02 июл 2013, 21:36, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 июл 2013, 19:10 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Пробовали перезапустить Access/Accounting после изменений в коде?
Можно часть кода, где добавляется платеж?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 июл 2013, 12:05 
Не в сети

Зарегистрирован: 15 фев 2011, 14:35
Сообщения: 172
Откуда: STAVROPOL
Карма: 5
Код:
if( paySumm != null && paySumm.compareTo( BigDecimal.ZERO ) != 0 )
            {
               Payment payment = new Payment();               
               payment.setTypeId( PAYMENT_TYPE_ID );
               payment.setContractId( co.getId() );
               payment.setPaymentDate( java.util.Calendar.getInstance().getTime() );
               payment.setSumma( paySumm );
               payment.setComment( Comm );
               payment.setUserId( User.USER_SERVER );
               try{
                  paymentManager.updatePayment( payment );               
                  //bu.updateBalance( java.util.Calendar.getInstance().getTime() , co );
                  bu.updateBalance( payment.getPaymentDate(), co );

                  con.commit();

                  EventProcessor.getInstance().publish( new PaymentEvent( 0 , payment ) );
                  EventProcessor.getInstance().publish( new ContractBalanceChangedEvent( co.getId(), payment.getSumma() ) );

               }
               catch (Exception e){
                  return false;   
               }


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 июл 2013, 19:35 
Не в сети

Зарегистрирован: 15 фев 2011, 14:35
Сообщения: 172
Откуда: STAVROPOL
Карма: 5
А воз и ныне там


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 июл 2013, 19:40 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
При создании PaymentManager и BalanceUtils используется этот же con?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июл 2013, 12:44 
Не в сети

Зарегистрирован: 15 фев 2011, 14:35
Сообщения: 172
Откуда: STAVROPOL
Карма: 5
Код:
public class PaymentBisys extends HttpServlet {
    private Connection con = null;
   
    private static Properties props = new Properties();
    protected static String propFile = "/usr/local/BGBillingServer/data/data.properties";
    protected static String propbisysFile = "/usr/local/BGBillingServer/data/bisys.properties";
   
    //Переменные из конфиг файла
    String BisysPass = ""; //пароль для шифрования md5
    String AllowIps = ""; //строка содержащая допустимые IP адреса
    //Переменные содержащие код и описание ошибки
    String ErrCode = "0";
    String ErrText = "OK";   

   // сегодняшняя дата
   //Date CURDATE = new Date();
   // тип платежа заносимого
   int PAYMENT_TYPE_ID = 3;
   
    Calendar DateNow = Calendar.getInstance();
   
    /*
     * Шифруем полученную строку в md5
     */
    private String DoMd5(String TextValue, String AgentSing){
      
   return DigestUtils.md5Hex(TextValue+AgentSing+BisysPass).toUpperCase();
    }
   
    /*
     * Соединяемся с БД
     */
    protected synchronized boolean DoConnection(){
        //Регистрируем драйвер для соединения с БД

        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 driver = props.getProperty("db.driver");
            String properties_jdbc_url = props.getProperty("db.url");
            DriverManager.registerDriver((Driver)Class.forName(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){
        }
    } 


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июл 2013, 18:12 
Не в сети

Зарегистрирован: 15 фев 2011, 14:35
Сообщения: 172
Откуда: STAVROPOL
Карма: 5
Код:
   private boolean updateAccountBalance(String Acc, String Comm, BigDecimal paySumm){
      ContractManager cm = new ContractManager(con);       
      PaymentManager paymentManager = new PaymentManager( con );
      BalanceUtils bu = new BalanceUtils( con );

      Contract co =  cm.getContractByTitle(Acc);

        if(co!=null){
      
         if( paySumm != null && paySumm.compareTo( BigDecimal.ZERO ) != 0 )
            {
               Payment payment = new Payment();               
               payment.setTypeId( PAYMENT_TYPE_ID );
               payment.setContractId( co.getId() );
               payment.setPaymentDate( java.util.Calendar.getInstance().getTime() );
               payment.setSumma( paySumm );
               payment.setComment( Comm );
               payment.setUserId( User.USER_SERVER );
               try{
                  paymentManager.updatePayment( payment );               
                  //bu.updateBalance( java.util.Calendar.getInstance().getTime() , co );
                  bu.updateBalance( payment.getPaymentDate(), co );

                  con.commit();

                  EventProcessor.getInstance().publish( new PaymentEvent( 0 , payment ) );
                  EventProcessor.getInstance().publish( new ContractBalanceChangedEvent( co.getId(), payment.getSumma() ) );

               }
               catch (Exception e){
                  return false;   
               }
               return true;
   
            } else return false;         
         
      } else return false;

   }


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 июл 2013, 19:21 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Мне кажется, у вас сейчас сюда попадает, но т.к. здесь нет логирования этого (т.е. что чуть выше произошла ошибка) не видно.
Код:
catch (Exception e){
    return false;   
}
Попробуйте поменять
Код:
con.commit();
на
Код:
if(!con.getAutoCommit()){
    con.commit();
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 июл 2013, 22:59 
Не в сети

Зарегистрирован: 15 фев 2011, 14:35
Сообщения: 172
Откуда: STAVROPOL
Карма: 5
Огромное спасибо ... Заработало ...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 1


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

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