|
|
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
Есть биллинговая система. К ней необходимо прикрутить прием платежей из различных платежных систем. Сами платежные шлюзы есть в наличии (где-то самописные, где-то предоставляются платежной системой). Но хочется сделать универсальный шлюз и всю информацию хранить в одном месте. Есть платежные агенты, которые принимают платежи от пользователей и отправляют их сервисному провайдеру. У каждого платежного агента есть свой уникальный идентификатор и свой алгоритм работы. Кто-то работает в пакетном режиме — раз в сутки присылает реестр платежей, в котором указаны лицевые счета, суммы и другая информация. Платежный шлюз должен принять этот реестр, проверить данные и провести валидные платежи. Кто-то работает в интерактивном режиме — платежная система подключается к платежному шлюзу непосредственно в момент проведения платежа, передает на шлюз информацию, шлюз ее проверяет и подтверждает или отклоняет операцию. Для контроля платежная система раз в сутки присылает реестр платежей, по которому осуществляется сверка. Не могу определиться с тем, как должны храниться эти данные. Пока прикидки такие. Справочник платежных агентов payment_agent ТипОписаниеpayment_agent_idПервичный ключcodeИдентификатор агентаnameНаименование агента Список реестров payment_registry ТипОписаниеpayment_registry_idПервичный ключpayment_agent_idFK на payment_agentclockdatetimeДата/время получения реестраstatusСтатус реестра (черновик, ошибочный, удаленный, принят, обработан)reg_datedateДата реестра (год, месяц, день)reg_numberintПорядковый номер реестра за текущую дату (если на конкретную дату пришло несколько реестров)reg_serialintПорядковый номер реестра (глобольный или в пределах года)reg_countКоличество строк в реестреreg_sumСумма реестраreg_fileИмя файла реестра, если применимо Список платежей payment_item ТипОписаниеpayment_item_idПервичный ключpayment_agent_idFK на payment_agentpayment_registry_idnullableFK на payment_registry, для интерактивных платежей может не заполняться или заполняться потомsessionИдентификатор транзакции между платежной системой и шлюзомclockdatetimeДата/время регистрации платежа у агентаactТип запроса (запрос информации, проверка параметров, проведение платежа)accountЛицевой счет плательщикаtypevarcharТип платежа (определяется платежной системой, например наличный/безналичный)amountСумма платежаoriginatorИнициатор платежа (например имя кассира, если платеж был проведен через кассу)pay_...Дополнительные атрибуты по платежуret_clockdatetimeДата/время обработки платежа на шлюзеret_codeКод ответа (ошибки)ret_textТекст ответа (ошибки)ret_balanceТекущий баланс лицевого счетаret_amountТребуемая или желательная сумма платежа (если применимо)ret_...Дополнительная информация, передаваемая при проверке или запросе информацииpay_idУникальный идентификатор платежаpay_clockdatetimeДата регистрации платежаpay_clientИдентификатор клиента в биллинговой системе, на счет которого зачисляется платежstornobooleanПлатеж сторнирован?storno_clockdatetimeДата/время сторнирования платежаstorno_reasonПричина сторнирования платежа Ничего не упустил? ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. Модератор: Тема перенесена из форума "Программирование". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2015, 13:38 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
Честно говоря не пойму, как реестр платежи связаны с реестром... Пом мне так такая связь должна быть, или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 16:34 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
Таблица платежей странная, по-хорошему там проглядываетсся 3-4 таблицы (даже если не раскрывать в таблицы поля "дополнительная информация") "запросы по платежам" - отдельная таблица "Этапы обработки платежа" - отдельная таблица. .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 17:02 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
ScarferNVЧестно говоря не пойму, как реестр платежи связаны с реестром... Если работа осуществляется в офлайн-режиме, то реестр платежей и содержит непосредственно сами платежи. Тогда реестр будет родительской таблицей для платежей. Если работа осуществляется в онлайн-режиме, то платежи приходят и проводятся вообще без реестров. На следующий день приходит реестр платежей (в котором будут фигурировать назначенные идентификаторы), который нужно сверить с фактически принятыми платежами. Кот МатроскинТаблица платежей странная, по-хорошему там проглядываетсся 3-4 таблицы (даже если не раскрывать в таблицы поля "дополнительная информация") А стоит ли усложнять? На платежном шлюзе нет состояний, это stateless-алгоритм. Шлюз принял запрос, проверил данные и либо подтвердил запрос (проведя платеж), либо отклонил запрос (указав причину). Все, больше с этими данными работа осуществляться не будет, их нужно сохранить в БД для архивных целей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 17:15 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
Alibek B., Не хотите - не усложняйте, я говорю как бы делал я. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2015, 17:28 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
Alibek B.Есть биллинговая система. К ней необходимо прикрутить прием платежей из различных платежных систем. Сами платежные шлюзы есть в наличии (где-то самописные, где-то предоставляются платежной системой). Но хочется сделать универсальный шлюз и всю информацию хранить в одном месте. ... Ничего не упустил? Вот у нас платёжный шлюз: Код: plaintext 1. 2. 3. 4. 5. Упустил ли ты что-то ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 13:37 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
MasterZivВот у нас платёжный шлюз: Код: plaintext 1. 2. 3. 4. 5. Это вы молодцы... Ну может хотя бы намекнете чего там не хватает. ;) Мне тоже было бы интересно понять. Возможно в будущем что-то такое тоже придется делать такие вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 10:52 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
384 таблицы это как-то экстремально. А можно подробности? Или для каждого поставщика/агента свой набор таблиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 12:02 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
SergueiЭто вы молодцы... Ну может хотя бы намекнете чего там не хватает. ;) Ну 384 - (скажем) 10 -- 370 таблиц не хватает. Alibek B.384 таблицы это как-то экстремально. Нет, я разве писал, что это экстремально ? Alibek B.А можно подробности? Какие ? Alibek B.Или для каждого поставщика/агента свой набор таблиц? Нет, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 20:31 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
MasterZivКакие ? Зачем такая нормализация? Или для каких целей нужно столько таблиц? Я могу придумать, скажем, полсотни справочников. Еще пару десятков сущностей, штук 80 таблиц для истории и состояний. Допустим еще под сотню таблиц на связи, если там какая-нибудь 4НФ. Но все равно получается почти вдвое меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 23:42 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
Зачем такая нормализация? какая "такая" нормализация? Нормализация у нас обычная, нормализованная. Или для каких целей нужно столько таблиц? для целей работы платежного шлюза. для хранения данных о площадках и конфигурации процесса. Я могу придумать, скажем, полсотни справочников. Еще пару десятков сущностей, штук 80 таблиц для истории и состояний. Допустим еще под сотню таблиц на связи, если там какая-нибудь 4НФ. Но все равно получается почти вдвое меньше. а, ну возможно вам виднее... но все равно не 5 таблиц как у ТС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2015, 11:33 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
SergueiMasterZivВот у нас платёжный шлюз: Код: plaintext 1. 2. 3. 4. 5. Это вы молодцы... Ну может хотя бы намекнете чего там не хватает. ;) Мне тоже было бы интересно понять. Возможно в будущем что-то такое тоже придется делать такие вещи. начать наверное можно с того, что платит кто-то кому-то за что-то. где это все в рассматриваемой схеме -не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2015, 11:37 |
|
||
|
Структура данных для платежного шлюза
|
|||
|---|---|---|---|
|
#18+
да и вообще схеме чуть менее чем бред от слова "все". ну ладно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2015, 11:40 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=22&tid=1540596]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
21ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 368ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...