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

Не разблокируется доступ по приходу платежа
http://forum.bitel.ru/viewtopic.php?f=44&t=8231
Страница 1 из 1

Автор:  dm777 [ 02 июл 2013, 20:22 ]
Заголовок сообщения:  Не разблокируется доступ по приходу платежа

Принимаем оплату через терминалы Сбербанка (online) через Bisys
Платеж поступает баланс обновляется, а вот доступ в модуле Inet для сервиса иногда меняется на включен, но в 90% случаев нет, только после того как будет открыт закрыт сервис вручную.
Внимание вопрос какую функцию надо использовать в нашем самописном сервлете, что-бы по приходу платежа состояние сервиса менялось.

Автор:  Amir [ 02 июл 2013, 20:27 ]
Заголовок сообщения:  Re: Не разблокируется доступ по приходу платежа

После добавления платежа и коммита в БД:
Код:
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, 20:39 ]
Заголовок сообщения:  Re: Не разблокируется доступ по приходу платежа

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() ) );


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

Автор:  Amir [ 05 июл 2013, 19:10 ]
Заголовок сообщения:  Re: Не разблокируется доступ по приходу платежа

Пробовали перезапустить Access/Accounting после изменений в коде?
Можно часть кода, где добавляется платеж?

Автор:  dm777 [ 09 июл 2013, 12:05 ]
Заголовок сообщения:  Re: Не разблокируется доступ по приходу платежа

Код:
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;   
               }

Автор:  dm777 [ 15 июл 2013, 19:35 ]
Заголовок сообщения:  Re: Не разблокируется доступ по приходу платежа

А воз и ныне там

Автор:  Amir [ 15 июл 2013, 19:40 ]
Заголовок сообщения:  Re: Не разблокируется доступ по приходу платежа

При создании PaymentManager и BalanceUtils используется этот же con?

Автор:  dm777 [ 16 июл 2013, 12:44 ]
Заголовок сообщения:  Re: Не разблокируется доступ по приходу платежа

Код:
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){
        }
    } 

Автор:  dm777 [ 16 июл 2013, 18:12 ]
Заголовок сообщения:  Re: Не разблокируется доступ по приходу платежа

Код:
   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;

   }

Автор:  Amir [ 17 июл 2013, 19:21 ]
Заголовок сообщения:  Re: Не разблокируется доступ по приходу платежа

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

Автор:  dm777 [ 18 июл 2013, 22:59 ]
Заголовок сообщения:  Re: Не разблокируется доступ по приходу платежа

Огромное спасибо ... Заработало ...

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