esas/cmsgate-core
Common cms payment gate library
Maintainers
v2.2.11
2024-06-18 11:37 UTC
Requires
- php: >= 5.6.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- ext-simplexml: *
- ext-xml: *
- apache/log4php: 2.3.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
MIT eeac38a87e49c6417ed4ca897c300bd1e1dbe1be
- Esas <info.woop@esas.com>
This package is not auto-updated.
Last update: 2026-06-16 21:31:52 UTC
README
Основная библиотека для фреймворка cmsgate. Данный фреймворк будет в первую очередь полезен vendor-ам, которые занимаются интеграцией своих решений (платежных шлюзов, служб доставки) с различными CMS системами (php-based). Основное его назначение
- упростить разработку и поддержку плагинов для интеграции своих продуктов с большим количеством разнообразных CMS, скрывая при этом большую часть внутренних особенностей самих CMS.
Библиотеки (слои)
Любой конечный плагин состоит из 4-х слоев
- core-слой - ядро фреймворка с набором общих для всех плагинов классов. Большая часть классов абстрактны и должны быть переопределены на других слоях
- cms-слой - различные врапперы, лоадеры, helper-ы, обеспечивающие взаимодействие ядра с данными и функциями конкретных CMS.
Данный слой представлен в виде отдельных библиотек, содержащих в имени название соответствующей CMS
- cmsgate-bitrix-lib
- cmsgate-opencart-lib
- cmsgate-prestashop-lib
- и т.д.
- paysystem-слой - протоколы для взаимодействия с API конкретных платежных шлюзов; контроллеры содержащие бизнес-процессы;
враппер для настроек и т.д. Содержит классы, которые важны именно для взаимодействия с конкретным шлюзом.
Данный слой представлен в виде отдельных библиотек, содержащих в имени названия соответствующей платежной системы:
- cmsgate-hutkigrosh-lib
- cmsgate-epos-lib
- cmsgate-bgpb-lib
- и т.д.
- cms-paysystem-слой - самый верхний слой, по сути это уже плагин для конкретной cms и конкретной платежной системы
Важно четко разделять эти слои и понимать, к какому слою относится тот или иной функционал. Т.е. paysystem-слой ничего не знает об архитектуре конкретных CMS, а cms-слой не знает про конкретные платежные системы
Основные сущности ядра
- Wrapper - обертки, для взаимодействия между ядром и другими слоями. Все врапперы абстрактны и должны быть переопределены
на более высоких слоях
- ConfigWrapper - враппер для настроек конкретной платежной системы. Должен быть переопределен на
paysystem-слое, для декларации настроек необходимых для взаимодействия с платежной системой (например логины, пароль, api-key и т.д.). Будет содержать настройки, которые не зависят от типа CMS. Например:- ConfigWrapperHutkigrosh (из библиотеки cmsgate-hutkigrosh-lib)
- ConfigWrapperEpos (из библиотеки cmsgate-epos-lib)
За механизм доступа к настройкам в рамках CMS отвечает ConfigStorageСms (относится к
cms-слою)
- OrderWrapper - враппер для получения информации о заказе (id, сумма, ФИО клиента, лист продуктов и т.д.). Должен быть
переопределен на
cms-слоедля инкапсуляции внутреннего механизма хранения этой информации в каждой конкретной CMS. То, где хранится номер заказа не зависит от платежной системы, а только от устройства самой CMS. Например:- OrderWrapperOpencart (из библиотеки cmsgate-opencart-lib)
- OrderWrapperBitrix (из библиотеки cmsgate-bitrix-lib)
- OrderWrapperVirtuemart (из библиотеки cmsgate-virtuemart-lib)
- и т.д.
- OrderProductWrapper - враппер для получений информации о товаре, входящем в заказ. По аналогии с OrderWrapper должен быть переопределен на
cms-слое
- ConfigWrapper - враппер для настроек конкретной платежной системы. Должен быть переопределен на
- ConfigStorageCms - класс для получения и сохранения настроек внутри CMS. Должен быть переопределен на
cms-слое. ConfigWrapper-ы получаются доступ к настройкам через него (хотя, при необходимости, могут и иначе, если переопределить метод ConfigWrapper:getConfig). Например:- ConfigStorageOpencart (из библиотеки cmsgate-opencart-lib)
- ConfigStorageBitrix (из библиотеки cmsgate-bitrix-lib)
- ConfigStorageVirtuemart (из библиотеки cmsgate-virtuemart-lib)
- LocaleLoader - враппер для загрузки текущей локали. Должен быть переопределен на
cms-слое. Например:- LocaleLoaderOpencart (из библиотеки cmsgate-opencart-lib)
- LocaleLoaderBitrix (из библиотеки cmsgate-bitrix-lib)
- LocaleLoaderVirtuemart (из библиотеки cmsgate-virtuemart-lib)
- ConfigForm - класс для генерации "форм" с настройками. Должен быть переопределен на
cms-слое. По сути преобразует набор настроек в формат, с которым может работать CMS для отображения их в административной зоне. Т.к. разные CMS могут иметь совсем различные форматы для задания настроек, наследники этого класса на входе получают настройки уManagedFieldsFactoryво внутреннем формате cmsgate (ConfigField*), а на выходе формируют:- уже конечный html код
- массив во внутреннем формате cms
- xml-файл во внутреннем формате cms
- и т.д. Наследники ConfigForm не знают о настройках конкретных платежных систем, а "работают" только с типами конфигурационных полей:
- ConfigFieldList
- ConfigFieldFile
- ConfigFieldText
- ConfigFieldPassword
- и т.д.
- ManagedFieldsFactory - factory для гру
- CmsConnector - factory для создания объектов
cms-слоя. Используется для создания объектов LocaleLoader, OrderWrapper, ConfigStorageCms, ConfigForm - PaysystemConnector - factory для создания объектов
paysystem-слоя. Используется для создания объектов ConfigWrapper, Translator, ManagedFieldsFactory
