# Предметная область Краткое, понятное только автору, описание макроструктуры предметной области, к которой хочется стремится в процессе развития платформы. ## Участники ``` Party | Contract / \ Services Shops / | \ Payments Payouts ... Service Service | | Terms Terms ``` В системе, есть _участники_, с которыми у нас заключён _договор_ на предоставление этим участникам различных услуг. В договоре указаны _пакеты услуг_, которые предоставляет система, например: * услуги по _процессингу платежей_, * услуги по _проведению выплат_. В рамках _пакета услуг_ по _проведению платежей_ система даёт возможность участникам (в данном случае, _мерчантам_) проводить различные процессы, например: * _простые платежи_, * _возмещения_, * _задержанные платежи_, * _рекуррентные платежи_. С _пакетом услуг_ (каждым _процессом_?) связаны _условия_ их проведения, например, с пакетом услуг по _проведению платежей_ связаны: * ограничения по _категориям_ товаров и услуг, _валютам_, _методам оплаты_, возможностям _возмещений_ (?); * _лимиты_ на количество денежных средств, оборот за определённое время; * _комиссии_ системы. _Магазины_ участника в этой структуре ограничены условиями соответствующего _договора_. В теории ничто не препятствует участнику иметь более одного _договора_, каждый со своими _условиями_ и _магазинами_. _Провайдеры_ с _терминалами_ в общей картине – естественное отражение модели _участников_ с _магазинами_ в том смысле, что в отличие от _участника_, каждый _провайдер_ согласно некоторому _договору_ предоставляет _услуги_ системе: ``` Provider | Contract / \ Services Terminals / \ Payments ... Processing Service | Terms ``` В дальнейшем, логичным решением было бы отказаться от понятия _провайдера_, приравняв его к _участнику_. ## Процессы В рамках каждого _процесса_ необходимо проведение различных взаимодействий c различными участниками по определённым протоколам, например, в рамках процесса _платежа_ нужно провести: * _техническое_ взаимодействие, * _финансовое_ взаимодействие. Для проведения технического взаимодействия в процессе _платежа_ необходимо обладать информацией о технических протоколах всех третьих сторон и их параметрах, в нашей системе это: * _мерчант_ и его _магазин_, * _провайдер_ и его _терминал_, * набор _прокси_ с их _опциями_. Для проведения финансового взаимодействия в процессе _платежа_ в свою очередь необходимо обладать: * корректным _графом финансовых потоков_, * набором _счетов_ всех участников: _мерчант_, _провайдер_, _система_.