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

Снятие комиссии в пользу организации "на лету"
http://forum.bitel.ru/viewtopic.php?f=45&t=9542
Страница 1 из 1

Автор:  shrm [ 05 авг 2014, 17:00 ]
Заголовок сообщения:  Снятие комиссии в пользу организации "на лету"

Добрый день!
Установили модуль, оттестировали с процессинговым центром - платежи приходят абоненту. С этой стороны все нормально.

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

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

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

Автор:  stark [ 05 авг 2014, 17:17 ]
Заголовок сообщения:  Re: Снятие комиссии в пользу организации "на лету"

А нельзя ему 100 рублей зачислить?. А потом расход на 2 рубля повесить. Можно сделать в скрипте на событие платежа.

Автор:  shrm [ 06 авг 2014, 11:29 ]
Заголовок сообщения:  Re: Снятие комиссии в пользу организации "на лету"

Добрый день!
Большое спасибо за подсказку.
Пример скрипта взяли из 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()]

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

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

Автор:  stark [ 07 авг 2014, 17:34 ]
Заголовок сообщения:  Re: Снятие комиссии в пользу организации "на лету"

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 там вроде нет.

Автор:  stark [ 07 авг 2014, 17:38 ]
Заголовок сообщения:  Re: Снятие комиссии в пользу организации "на лету"

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-копию файла.

Автор:  stark [ 07 авг 2014, 17:41 ]
Заголовок сообщения:  Re: Снятие комиссии в пользу организации "на лету"

И еще в конце после обновления платежа нужно кинуть события :
Код:
  EventProcessor.getInstance().publish( new PaymentEvent( userID, payment, editMode ) );
  EventProcessor.getInstance().publish( new ContractBalanceChangedEvent( contract.getId(), balanceChange ) );       

Автор:  dimOn [ 09 авг 2014, 14:40 ]
Заголовок сообщения:  Re: Снятие комиссии в пользу организации "на лету"

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

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

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