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

Списание денег. Нюансы.
http://forum.bitel.ru/viewtopic.php?f=61&t=11374
Страница 1 из 1

Автор:  survivor [ 24 фев 2016, 18:04 ]
Заголовок сообщения:  Списание денег. Нюансы.

Доброго дня.

Есть работающая связка: модуль ТВ + Сталкер. Теперь пришла пора снимать деньги :)

1) При активации подписки, если у абонента недостаточно денег, продукт находится в состоянии "отключен". Как только появятся деньги, продукт активируется. Все ок, все соответствует документации. (кстати, кажется нашел очепятку - http://docs.bitel.ru/pages/viewpage.act ... Id=1607124, тут вместо "при неустановленном - с 13:13 до 14:00", видимо имелось ввиду "при неустановленном - с 13:30 до 14:00").
Но, если баланс абонента изменится уже после активации продукта, например если у него стоял временный лимит, или была оказана еще какая-то услуга, то модуль никак не отреагирует, аккаунт останется включен, подписки тоже. Это не хорошо.

В планировщике можно создать только две задачи: Активация/деактивация аккаунтов по периоду и Пролонгация подписок не в реальном времени. Если я правильно понимаю, они мне не помогут. Продукты у меня единоразовые, продление в реальном времени.

2) Можно ли сделать так, чтобы при очередной попытке списания средств, если не хватает денег, выключался и сам аккаунт тоже? Не только продукты. И еще не понятна логика, если у клиента 5 подписок, биллинг снимает деньги за первую, продлевает, снимает за вторую, продлевает, тут деньги закончились и остальные не продлевает?

3) Я правильно понимаю, что если у продукта продление в реальном времени и в тарифе описана стоимость активации за месяц, то списание средств происходит ровно спустя месяц от активации продукта ("выровнено" опустим для упрощения, время суток сейчас роли не играет), например если абоненту активировали пакет HD 15 февраля, то 15 марта с него биллинг попробует списать деньги за очередной месяц? А если в продукте выставить тип периодический и продление по планировщику, то задача "пролонгация подписок" будет снимать деньги тогда когда я ее запущу? например только по первым числам месяца? Как в NPay? Или как-то по другому?

Версии:
Сервер: вер. 6.2.1019 / 19.02.2016 12:33:22
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_73

tv: вер. 6.2.204 / 08.02.2016 14:58:01

Автор:  Amir [ 24 фев 2016, 19:39 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

1. Да, по умолчанию работает в режиме, если взяли денег за сутки, то пусть сутки и смотрит. Можно блокировать аккаунт по балансу, если в конфиге модуля указано
account.lockByBalance=1
или перечислены ID типов аккаунтов, для которых будет работать такая блокировка:
account.lockByBalance.specIds=

Но для Stalker не вижу сейчас обработчика блокировки аккаунта, возможно для этого протокола нет или не было возможности блокировки аккаунта или на момент создания StalkerOrderManager об этом не подумали.


2. Т.е. если нет ни одного активного пакета/продукта - блокировать аккаунт?
Да, снимает/продлевает в порядке времени окончания текущего продленного периода, если время совпадает - то по полю Приоритет (больше -> важнее).
Например, можно указать в режиме активации 0 дней с текущего (дня), в тарифе указать галочку "выровнено", тогда тарификация и продление будет посуточное, продление всех пакетов в 00:00.
Также при посуточном продлении можно указать в продукте продление не в реальном времени, а по планировщику. Тогда продление будет происходить не в 00:00, а по задаче планировщика (при этом до того как сработает задача отключение пакетов не происходит). Такой режим бывает нужен при дебетовых абонплатах, когда нужно сначала снять деньги задачей планировщка модуля абонплат.


3. Да, если установить "выровнено", то при не оплате и последующей оплате новый период начнется с этого же времени/дня, т.е. тогда заканчиваться будет всегда 15 числа, даже если оплатил 14-ого.
Да, но желательно чтобы периоды примерно совпадали с работой задачи планировщика, т.е. чтобы в активации пакета/продукта было указано 0 месяцев с текущего, а не были периоды с 15 по 15, а само списание-продление первого числа.

Автор:  survivor [ 24 фев 2016, 20:16 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

1) Прописал account.lockByBalance=1, перезагрузил, увеличил лимит (с -20 до 0, на балансе -5)... ничего не произошло - аккаунт включен, продукты тоже.

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

Amir, я уже в конец запутался, вы просто скажите можно так сделать или нет?:
Абоненты в середине месяца покупают разные пакеты, с них снимаются деньги до конца месяца, пропорционально оставшимся дням. Первого числа месяца биллинг пытается снять деньги за все активированные пакеты и если не получается - отключает аккаунт. Как только поступают деньги (достаточные для оплаты всех активных пакетов) или часть пакетов отключается оператором - аккаунт включается обратно со всеми пакетами. Хорошо бы чтобы за период времени пока аккаунт был отключен биллинг не списывал деньги, но это не обязательно.

3) ну как я уже описал, нам нужно чтобы было выровнено по календарному месяцу. Если описать стоимость тарифа за месяц и поставить выровнено - ведь так и будет, нет?

Автор:  survivor [ 26 фев 2016, 17:35 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

help :)

Автор:  Amir [ 05 мар 2016, 22:24 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

1. Да, я писал выше - нам нужно в StalkerOrderManager добавить поддержку отключения аккаунта.

2. Сейчас пока такого режима нет. Можно только выстроить зависимости и приоритеты - чтобы если не хватает денег на какой-нибудь "Базовый пакет" - не продлялись дополнительные.

а) если баланс меньше лимита - отключаем аккаунт (account.lockByBalance=1)
б) можно сделать в StalkerOrderManager, если нет ни одного активного пакета - отключаем аккаунт

Как только хватает денег на какой-нибудь базовый пакет (другие зависят от него и у него больший приоритет) - он включается. Если хватает денег на доп-пакеты - они тоже включаются.

3. Да, но также в режиме активации нужно указать 0 месяцев с текущего.

Флаг выровненно означает, что новый период будет начинаться либо с окончания предыдущего периода либо через один период, указанный в тарифе.

Т.е. если ставим 0 дней с текущего + 1 день за 1 руб выровненно, то когда бы абонент не активировал - период начнется с 00:00:00 (0 дней с текущего), далее у него когда-то кончаются деньги - наступает перерыв, период закончился в 23:59:59 - он платит в 22:00 - период продлится с того места где закончился (выровненно), т.е. он заплатит за 2 оставшихся часа как за целый день.
Если же он не заплатит в 22:00, а заплатит позже - в 01:00, то появляется перерыв в один день, за который он не платит, в течении которого у него не было активного пакета.
Аналогично и для месяцев.

Автор:  survivor [ 07 мар 2016, 17:01 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

1) Ясно. Постараемся обойтись без этого.
2) Все это звучит замечательно, но ведь в текущей сборке для сталкера этого всего нет? Нам нужно запускаться прямо сейчас, поэтому стараюсь исходить из того что есть.
3) О, я рад что все правильно понял

Автор:  survivor [ 10 мар 2016, 20:06 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Цитата:
Аналогично и для месяцев.


Как оказалось нет... С включенным "выровнено" продукт активируется до такого же числа следующего месяца.

В документации:
Цитата:
Например, если период продления привязан к календарным суткам, то тарификация и попытка продления произойдет в 00:00 нового дня.


Чтобы списание денег происходило именно первого числа месяца - нужно в тарифе выставить "пропорционально", но тогда пропадает выровнено. и еще сюрприз - оплата считается не до 00:00:00 а до того же времени суток (но уже первого числа)

Буду пробовать продление по планировщику, в тупик ставит опция продукта - периодический и его комбинация с разными режимами продления...

У меня простая задача - чтобы один модуль (одного и того же биллинга) считал так же как и другой модуль, почему это так сложно? :facepalm:

Автор:  survivor [ 10 мар 2016, 20:37 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Методом тыка пришел к решению:
a) продукт - тип периодический, продление в реальном времени (такая комбинация возможна?)
b) режим активации - 1 месяц с текущего(ей) , округленно, деактивация до конца оплаченного периода
с) в тарифе - стоимость за 1 месяц пропорционально

Автор:  Amir [ 10 мар 2016, 22:12 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Цитата:
2) Все это звучит замечательно, но ведь в текущей сборке для сталкера этого всего нет? Нам нужно запускаться прямо сейчас, поэтому стараюсь исходить из того что есть.
Выкладывается обновление. Должен отключать аккаунт - выполнять
PUT [API_URL]/accounts/00:1A:79:00:39:5E
> status=0
Цитата:
Как оказалось нет... С включенным "выровнено" продукт активируется до такого же числа следующего месяца.
В документации:
Цитата:
Например, если период продления привязан к календарным суткам, то тарификация и попытка продления произойдет в 00:00 нового дня.
Чтобы списание денег происходило именно первого числа месяца - нужно в тарифе выставить "пропорционально", но тогда пропадает выровнено. и еще сюрприз - оплата считается не до 00:00:00 а до того же времени суток (но уже первого числа)
Период всегда идет с начала времени активации. Поэтому если хотите чтобы всегда было с первого числа - в режиме активации нужно указывать 0 месяцев с текущего, если хотите чтобы всегда было помесячно - то указываете в тарифе выровненно. Если хотите посуточно - в режиме активации указываете 0 дней с текущего.

Да, приходится совмещать параметры режима активации и тарифа. Возможно в будущем сделаем поудобнее.

Цитата:
Методом тыка пришел к решению:
a) продукт - тип периодический, продление в реальном времени (такая комбинация возможна?)
b) режим активации - 1 месяц с текущего(ей) , округленно, деактивация до конца оплаченного периода
с) в тарифе - стоимость за 1 месяц пропорционально

a) да
b) в таком случае через месяц автоматически подписка отключится - абоненту нужно будет заново активировать. 0 - это "автопродление", период окончания при этом пустой, null (а округленно - работает только когда не 0).
c) пропорционально - значит если у абонента в начале месяца не было денег - пакет закрывается. Далее он в середине месяца пополняет баланс - денег будет снято в половину от указанной цены.

Автор:  Amir [ 10 мар 2016, 22:24 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

В модуле TV - подписочная схема. Можем придумать что-нибудь, чтобы тарифицировать через модуль абонплат (кто-то уже даже тарифицирует так, но не помню точно, какие были условия).
Т.е. будет просто закрывать аккаунт по статусу.

Автор:  ok-2004 [ 11 мар 2016, 12:29 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Цитата:
кто-то уже даже тарифицирует так...

Это мы! мы!
Цитата:
...будет просто закрывать аккаунт по статусу

Если сей счастливый миг наступит - столица мира автоматом переедет в Васюки Уфу и наступит вселенский оргазм, окончательный и бесповоротный....

Автор:  survivor [ 11 мар 2016, 12:36 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Цитата:
в таком случае через месяц автоматически подписка отключится - абоненту нужно будет заново активировать. 0 - это "автопродление", период окончания при этом пустой, null (а округленно - работает только когда не 0)

о-ой... я думал раз тип продукта периодический, а не разовый, то он автопродлится. В чем тогда разница между разовым и периодическим? Логично было что разовый это без автопродления, теперь уже не понимаю.
А что если продление сделать по планировщику? тогда автопродлится (если в активации указан не ноль, а например 1 месяц )? (задача - пролонгация подписок не в реальном времени)

Цитата:
Поэтому если хотите чтобы всегда было с первого числа - в режиме активации нужно указывать 0 месяцев с текущего, если хотите чтобы всегда было помесячно - то указываете в тарифе выровненно

хе, похоже моя ошибка была в том что я не понимал разницу между "текущим моментом" и "текущим". Как вы сказали много лучше, спасибо.

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

Цитата:
пропорционально - значит если у абонента в начале месяца не было денег - пакет закрывается. Далее он в середине месяца пополняет баланс - денег будет снято в половину от указанной цены.
это не плохо - клиент не получал сервис этот период, зачем с него брать лишние деньги (для нашей конкретной ситуации)

Цитата:
Выкладывается обновление. Должен отключать аккаунт
Огромное спасибо!

Автор:  survivor [ 11 мар 2016, 13:54 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Обновился:
Код:
  Сервер: вер. 6.2.1032 / 10.03.2016 15:09:06
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_73
  tv: вер. 6.2.208 / 10.03.2016 21:01:15


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

Попробовал сделать баланс меньше лимита расходом, то же самое - аккаунт в модуле на договоре остается включен.

В конфигурации модуля стоит:
account.lockByBalance=1

После обновления обновил также BGTVAccess и BGTVAccounting и перекомпилировал все динамические классы

Автор:  Amir [ 16 мар 2016, 23:30 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Тут пока не поняли до конца, фича или бага.
Чтобы работало так как хотите нужно еще в тарифе добавить ветку Авторизовать учитывая ошибку баланса. Но без account.lockByBalance эта ветка не работает.
Т.е. возможно багом нужно считать что без этой ветки, если открыть статус договора - аккаунт не открывает :)

Автор:  DVShatskikh [ 03 дек 2018, 20:49 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Добрый день!

Есть продукт с режимом активации 0 дней с текущего ровно до конца оплаченного периода. Продление по планировщику.
Есть тариф 195 рублей за 1 месяц (подневное до конца месяца). Тариф с веткой авторизовывать учитывая ошибку баланса.

На 1 число абонент блокируется по недостаточному балансу, все услуги отключаются, подписка на ТВ в том числе. Все прекрасно.
Далее, абонент 2 числа пополняет счет, все включается, но деньги за подписку списываются полностью, все 195 рублей. А по идее должно было списаться 188.7 рублей, так как 1 числа подписка была отключена.

Я что-то не так понимаю или это, таки, глюк биллинга?

Автор:  Amir [ 05 дек 2018, 13:49 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Добрый день.

Какая версия/билд?
Можно скриншот редактора ветки стоимость в тарифе?
Какие периоды у продукта при этом в договоре (правой кнопкой по продукту - "Периоды").

Автор:  DVShatskikh [ 05 дек 2018, 14:55 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

BGBillingServer v 7.1.1058
Как посмотреть версию ТV не знаю, ибо по запросу статуса, в отличие от Inet, версия не выдается.
Но биллинг обновлял последний раз в субботу, так что, думаю, последняя версия.
Вложение:
tariff.png
tariff.png [ 60.16 КБ | Просмотров: 15029 ]

Вложение:
periods.png
periods.png [ 36.71 КБ | Просмотров: 15029 ]

Автор:  Amir [ 05 дек 2018, 20:01 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Действительно, в этом режиме так и работает, т.к. заказывали именно такую логику.
Пропорциональность в начале была предназначена только для первичного подключения абонента.
Т.е. название режима вводит в заблуждение.

Логика работы, когда при внесении суммы 2-ого числа должно снять чем за месяц, привносит другую проблему -
если у абонента оставалось на счету 30 рублей (и он не вносил больше платежи), то 28-31 числа у него по такому тарифу начнет хватать денег.

Наверное нужно добавить такой режим.
Сейчас там есть галочка "зависимый/пропорциональный", но в этом случае период начнется не с начала дня, а во время прихода платежа.

Автор:  DVShatskikh [ 05 дек 2018, 20:08 ]
Заголовок сообщения:  Re: Списание денег. Нюансы.

Думаю нужно такой режим добавить.

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