esas/cmsgate-core

Common cms payment gate library


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-слое
  • 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