|
|
|
Как бы вы решили задачу с уведомлением по SMS о событиях?
|
|||
|---|---|---|---|
|
#18+
Есть биллинговая система (БС), в которой заведены клиенты. БС работает на Linux, есть исходные коды. Оплата за услуги списывается с лицевого счета клиента, клиент может пополнять лицевой счет разными способами. Можно оплатить наличными в кассу (в БС есть интерфейс кассира). Можно оплатить банковским переводом (эти платежи также вносятся кассиром вручную). Можно оплатить через платежные терминалы (оплата проводится в биллинге автоматически, через платежные шлюзы). Также есть функция "отложенный платеж", которую клиент может задействовать самостоятельно, через личный кабинет или SMS. Необходимо сделать так, чтобы после пополнения счета клиенту отправлялось соответствующее SMS (зачислено N, баланс M, оплата через X). Рассылка SMS осуществляется через SMS-шлюз, который представляет собой отдельный сервис, никак не связанный с БС (однако SMS-шлюз имеет API). Это можно сделать разными способами, помогите выбрать наиболее подходящий. 1. Теоретически можно было бы внести изменения в программный код БС, чтобы после проведения оплаты отправлялось SMS. Но этот вариант я бы использовал в самую последнюю очередь. Во-первых, эти изменения нужно будет делать в нескольких местах, т.к. оплата разными способами в БС реализована в разных местах. Во-вторых, БС большая и сложная и при модификации кода можно допустить ошибки, тем более что я знаю язык программирования, на котором написана БС, не очень хорошо. Ну и в-третьих, я бы вообще не хотел изменять программный код, т.к. это может привести к отказу от тех.поддержки и одного этого пункта достаточно, чтобы данным вариантом не пользоваться. 2. Можно внести изменения в код платежных шлюзов, реализующих оплату через платежные терминалы или использование отложенного платежа. Но во-первых, таких шлюзов может быть много, они могут быть написаны на разных языках и они могут не иметь исходных кодов. А во-вторых, для зачисления средств через кассу шлюзы не используются (это реализует БС), а это пока наиболее массовый способ оплаты. 3. Можно с определенным интервалом запускать скрипт, который будет получать список платежей (сделанных с предыдущего запуска скрипта) и формировать SMS-рассылку. Я склоняюсь именно к этому варианту, т.к. моментальность подтверждения платежа по SMS не обязательна (хотя и хотелось бы), достаточно чтобы SMS доставилось в течении часа. Просьба прокомментировать эти варианты или предложить что-то более удобное. ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2012, 09:01 |
|
||
|
Как бы вы решили задачу с уведомлением по SMS о событиях?
|
|||
|---|---|---|---|
|
#18+
Третий вариант мне кажется наиболее правильным. Информирование - в общем совершенно самостоятельный сервис, и "скрещивать" его с другими сервисами как минимум неразумно. Что делать, если исходный код приложения поменяется? отключать сервис до того как программисты внесут дополнения в новую версию? и трястись, что нигде не допустили ляпы? а если вдруг потребуется подключить закрытый по коду платёжный шлюз? Делайте его вообще отделённым от биллинговой (и любой другой) системы, универсальным и независимо-конфигурируемым (периодический запуск, получение данных ихз таблиц предопределённой структуры, отправка СМС по этим данным в соответсвии с шаблоном). Для чего достаточно отвязать его от получения именно платежей за период, и заставить брать данные из специальной, отдельной, таблицы. Куда класть данные для информирования триггерами при выполнении тех типов операций, которые требуют (или могут требовать - смотря где отфильтровывать по личным настройкам клиентов) информирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2012, 09:47 |
|
||
|
Как бы вы решили задачу с уведомлением по SMS о событиях?
|
|||
|---|---|---|---|
|
#18+
У нас написана отдельная программка - она запускается или как служба работает и имеет com интерфейс. А эта программка уже умеет отсылать sms через модемы и письма через почтовые программы. Остальные программки комплекса, которые требуют оповещения клиентов на определенные события, просто вызывают ее через com и все. Очень удобно - вызывай откуда хочешь - хоть из любого скрипта, хоть из чего еще - лишь бы стандарт автоматизации поддерживался. Вы можете либо сами ее написать, либо купить - соответствующие решения продаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2012, 18:09 |
|
||
|
Как бы вы решили задачу с уведомлением по SMS о событиях?
|
|||
|---|---|---|---|
|
#18+
и вообще, делайте как можно проще: вот в той функции, где проходит платеж тупо вставить функцию, которая отправляет смс через ваше api смс информирования конечно, можно по расписанию запускать скрипт, который будет шерстить таблички в базе и отправлять все кучей можно понаписать триггеров, которые будут все скидывать в определенную табличку и прочее у нас в одном месте применен подобный механизм - так вот, с удивительной периодичностью приходится править там возникающие ошибки.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2012, 18:21 |
|
||
|
Как бы вы решили задачу с уведомлением по SMS о событиях?
|
|||
|---|---|---|---|
|
#18+
А что подразумевается под функцией, в которой проходит платеж? Вот есть код веб-страницы, выполняемой при проведении платежа. В ней создается объект account и вызывается метод enroll. В коде account->enroll есть много всего, в том числе создание объекта payment и вызов его метода action('do'). В коде payment->action также есть много всего, в том числе подключение к БД и вызов соответствующей хранимой процедуры. Куда вставлять функцию отправки SMS? В код веб-страницы, в прототип объекта account, в прототип объекта payment? Кроме того, не бывает отправки SMS одной строкой. Нужно как минимум подключить модуль, создать объект и вызвать метод объекта (ну или вызвать метод модуля). БС представляет собой довольно большую систему с кучей зависимостей, какая-нибудь случайная синтаксическая ошибка (например забыл закрыть строку точкой с запятой) может проявляться в редких случаях, когда этого не будешь ждать. Вообщем я бы не хотел без крайней нужды трогать исходный код БС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2012, 14:17 |
|
||
|
Как бы вы решили задачу с уведомлением по SMS о событиях?
|
|||
|---|---|---|---|
|
#18+
Вам скорее всего придется совместить п.1 и п.3 т.к. объемы данных огромные, и подход скорее всего должен быть "1 раз записал 1 раз прочитал", выборка не особо покатит (разве только если там все как-то хорошо партиционировано). При обработке платежа надо создать запись об этом платеже в отдельном реестре, потом в модуле отправки прочитать её и отправить смс. Это если речь идет о централизованной рассылке для всех. Если нужно только для сайта то естественно встроите где-то в бизнес логику сайта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 13:14 |
|
||
|
Как бы вы решили задачу с уведомлением по SMS о событиях?
|
|||
|---|---|---|---|
|
#18+
Лагманвыборка не особо покатит (разве только если там все как-то хорошо партиционировано). В таблице платежей для PK используется SEQ. Недостаточно будет при каждой выборке использовать WHERE PAYMENT_ID > LastPaymentID, где LastPaymentID — максимальный PK с предыдущей выборки? Или я что-то не учитываю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 14:30 |
|
||
|
Как бы вы решили задачу с уведомлением по SMS о событиях?
|
|||
|---|---|---|---|
|
#18+
kiss ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 15:50 |
|
||
|
Как бы вы решили задачу с уведомлением по SMS о событиях?
|
|||
|---|---|---|---|
|
#18+
Alibek B., Может и ок, я как-то видел платёжную бд в действии, там было несколько копий платёжной таблицы (за последний месяц, за текущий день и т.д.). Если у вас нет проблем с производительностью, то конечно лучше сделать скрипт как Вы пишете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2012, 18:18 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37920856&tid=1342167]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 406ms |

| 0 / 0 |
