PHPackages                             esas/cmsgate-core - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. esas/cmsgate-core

ActiveLibrary[API Development](/categories/api)

esas/cmsgate-core
=================

Common cms payment gate library

v2.2.11(1y ago)04981[1 PRs](https://github.com/esasby/cmsgate-core/pulls)17MITPHPPHP &gt;= 5.6.0

Since Jul 22Pushed 2d agoCompare

[ Source](https://github.com/esasby/cmsgate-core)[ Packagist](https://packagist.org/packages/esas/cmsgate-core)[ RSS](/packages/esas-cmsgate-core/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (10)Dependencies (1)Versions (95)Used By (17)

Описание
--------

[](#описание)

Основная библиотека для фреймворка **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-слое`
- **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

###  Health Score

46

—

FairBetter than 93% of packages

Maintenance70

Regular maintenance activity

Popularity13

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 93.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~20 days

Recently: every ~82 days

Total

89

Last Release

696d ago

Major Versions

v0.9.0 → v1.0.02019-07-29

v1.18.1 → v2.0.02023-04-27

### Community

Maintainers

![](https://www.gravatar.com/avatar/f2f63b10a68b42cfc1a0c28808bb0c3bf13cac8c8e6d8bbf27e26675780f760a?d=identicon)[esas.by](/maintainers/esas.by)

---

Top Contributors

[![nikitamekh](https://avatars.githubusercontent.com/u/33869035?v=4)](https://github.com/nikitamekh "nikitamekh (69 commits)")[![ViachaclauSlepau](https://avatars.githubusercontent.com/u/48213294?v=4)](https://github.com/ViachaclauSlepau "ViachaclauSlepau (3 commits)")[![NatalliaKurilenok](https://avatars.githubusercontent.com/u/282512514?v=4)](https://github.com/NatalliaKurilenok "NatalliaKurilenok (1 commits)")[![ViachaslauSlepau](https://avatars.githubusercontent.com/u/166427035?v=4)](https://github.com/ViachaslauSlepau "ViachaslauSlepau (1 commits)")

---

Tags

apipayment gatewayesascmsgate

### Embed Badge

![Health badge](/badges/esas-cmsgate-core/health.svg)

```
[![Health](https://phpackages.com/badges/esas-cmsgate-core/health.svg)](https://phpackages.com/packages/esas-cmsgate-core)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
