BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 03 дек 2021, 07:19

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 05 авг 2014, 17:00 
Не в сети

Зарегистрирован: 27 окт 2009, 14:10
Сообщения: 7
Карма: 0
Добрый день!
Установили модуль, оттестировали с процессинговым центром - платежи приходят абоненту. С этой стороны все нормально.

Но у нас возник вопрос: Можно ли доработать (если можно, то закажем доработку) модуль, что бы снималась комиссия в пользу нашей организации до поступления ден. средств на счет пользователя "на лету".

С суммы пользователя берет комиссию проц. центр и плюсом хотим мы еще небольшой процент в пользу нашей организации, т.е.:

Пользователь оплатил картой через процессинговый центр 100р., процессинговый центр отправляет сумму 100р. в биллинг на счет пользователя, так вот - можно ли на лету откусить 2р., чтобы пользователю попало 100р -2р (это если в приход), или 98р в приход а 2р. в расход (соответсвенно, чтобы пользователь видел в личном кабинете, что 2р. это комиссия).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 авг 2014, 17:17 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
А нельзя ему 100 рублей зачислить?. А потом расход на 2 рубля повесить. Можно сделать в скрипте на событие платежа.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 авг 2014, 11:29 
Не в сети

Зарегистрирован: 27 окт 2009, 14:10
Сообщения: 7
Карма: 0
Добрый день!
Большое спасибо за подсказку.
Пример скрипта взяли из wiki (для версии 4.5), немного переделали. Платеж разделяется. но в логах вылезают варнинги (у нас версия 6.0)

Сам скрипт:

import bitel.billing.server.contract.bean.*;
import bitel.billing.server.util.*;
import java.math.*;

payment = event.getPayment();
cid = payment.getContractID();
date = payment.getDate();

bu = new BalanceUtils( con );
pm = new PaymentManager( con );

PAYMENT_TYPE_ICB_1 = 72;
//PAYMENT_TYPE_ICB_2 = 2;
PAYMENT_TYPE_ICB_BONUS = 73;

// бонус за ИКБ платежи
if( payment.getPaymentTypeID() == PAYMENT_TYPE_ICB_1 ) {
print( "Add ICB bonus payment.." );

bonus = new Payment();
bonus.setPaymentTypeID( PAYMENT_TYPE_ICB_BONUS );
bonus.setDate( date );
bonus.setContractID( payment.getContractID() );
// bonus.setSumma( payment.getSumma().multiply( new BigDecimal( "-0.02" ) ) );
bonus.setSumma( (float)(payment.getSumma() * -0.02 / 1.02) );
bonus.setComment( "Комиссия за платеж через PayOnline" );
bonus.setUserID( 0 );

pm.updatePayment( "new", bonus );
bu.updateBalance( date, cid );
}


Варнинги:
GENERATE_TIME: 06.08.14 08:57:59
EXECUTION_STOP_TIME: 06.08.14 08:58:00
PROCESS_TIME: 29

OUT:
Add ICB bonus payment..


WARNINGS:
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public int bitel.billing.server.contract.bean.Payment.getPaymentTypeID()]
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public void bitel.billing.server.contract.bean.Payment.setSumma(float)]
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public void bitel.billing.server.contract.bean.Payment.setContractID(int)]
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public void bitel.billing.server.contract.bean.Payment.setDate(java.util.Calendar)]
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public void bitel.billing.server.contract.bean.BalanceUtils.updateBalance(java.util.Calendar,int) throws ru.bitel.bgbilling.common.BGException]
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public void bitel.billing.server.contract.bean.PaymentManager.updatePayment(java.lang.String,bitel.billing.server.contract.bean.Payment) throws ru.bitel.bgbilling.common.BGException]
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public void bitel.billing.server.contract.bean.Payment.setUserID(int)]
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public void bitel.billing.server.contract.bean.Payment.setPaymentTypeID(int)]
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public java.math.BigDecimal bitel.billing.server.contract.bean.Payment.getSumma()]
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public java.util.Calendar bitel.billing.server.contract.bean.Payment.getDate()]
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public int bitel.billing.server.contract.bean.Payment.getContractID()]

Еще вопрос: при печати чека для пользователя сумма не разделена по типу платежа - выдается полная сумма одной строкой, вместо двух строк. (это как-то можно побороть?)

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 авг 2014, 17:34 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
shrm писал(а):

WARNINGS:
Function [id:49; title:Комиссия PayOnline]: using deprecated method [public int bitel.billing.server.contract.bean.Payment.getPaymentTypeID()]


Открываем описание класса:
http://bgbilling.ru/v6.0/javadoc/bitel/ ... yment.html

Там кликаем на методе getPaymentTypeID и видим:
Цитата:
getPaymentTypeID
@Deprecated
public int getPaymentTypeID()
Deprecated.
Использовать getTypeId().


И заменяем его на getPaymentTypeId. Если не сложно полученный скрипт выложите в wiki. Варианта добавления платежа для 6.0 там вроде нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 авг 2014, 17:38 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
shrm писал(а):
Ну и последний вопрос: на станице оплаты, перед переходом в процессинговый центр мы должны пользователю сообщать, что с него будет сниматься комиссия. Если мы найдем какой файл править и напишем такое сообщение, то при загрузке обновлений строка сообщения у нас пропадет. Можно ли как-то это обойти?


http://bgbilling.ru/v6.0/doc/ch01s13.html

Цитата:
Для предотвращения перетирания файла при обновлении вы можете перед его модификацией создать копию с именем <file_name>.orig (например, style.css.orig). При установке пакета инсталлятор будет проверять перед записью каждого файла наличие файла с таким же именем в текущей установке. Если файл существует, но отличается от того, что в пакете, предпринимается попытка найти файл <file_name>.orig .

Если оригинальный файл существует и не отличается от файла из пакета, то он не будет перезаписан, система сообщит: File doesn't changed <filePath>. Если и оригинальный файл не совпадает со вновь предлагаемым, файл будет записан.

Перечень перезаписанных файлов сообщается после завершения процедуры установки, либо обновления после фразы REPLACED FILES:. Вы должны вновь внести в данные файлы требуемые корректировки и снова создать .orig-копию файла.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 авг 2014, 17:41 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
И еще в конце после обновления платежа нужно кинуть события :
Код:
  EventProcessor.getInstance().publish( new PaymentEvent( userID, payment, editMode ) );
  EventProcessor.getInstance().publish( new ContractBalanceChangedEvent( contract.getId(), balanceChange ) );       


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 авг 2014, 14:40 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6051
Карма: 244
Цитата:
Еще вопрос: при печати чека для пользователя сумма не разделена по типу платежа - выдается полная сумма одной строкой, вместо двух строк. (это как-то можно побороть?)

Подробнее поясните про какой именно чек речь.

_________________
I'm clever. I've got a computer.


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

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


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

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


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

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