esas/cmsgate-core

常见的CMS支付网关库


README

这是用于cmsgate框架的主要库。该框架首先对需要将他们的解决方案(支付网关、物流服务)与各种CMS系统(基于PHP)集成的供应商非常有用。其主要用途是

  • 简化开发和支持插件,以便将产品与大量不同的CMS集成,同时隐藏大部分CMS的内部特性。

库(层)

任何最终插件都由4个层组成

  • 核心层 - 框架的核心,包含所有插件共有的类。大部分类都是抽象的,需要在其他层中进行重写
  • CMS层 - 不同的包装器、加载器、辅助器,用于确保框架内核与特定CMS的数据和功能交互。数据层以单独的库形式表示,库的名称包含相应CMS的名称
    • cmsgate-bitrix-lib
    • cmsgate-opencart-lib
    • cmsgate-prestashop-lib
    • 等等。
  • 支付系统层 - 与特定支付网关API交互的协议;包含业务流程的控制器;设置包装器等。包含仅与特定网关交互重要的类
    数据层以单独的库形式表示,库的名称包含相应的支付系统名称
    • cmsgate-hutkigrosh-lib
    • cmsgate-epos-lib
    • cmsgate-bgpb-lib
    • 等等。
  • CMS支付系统层 - 顶层,实际上是对特定CMS和特定支付系统的插件

重要的是要清晰地分离这些层并理解每个功能属于哪个层。也就是说,支付系统层不了解特定CMS的架构,而CMS层不了解特定的支付系统。

核心的主要实体

  • 包装器 - 用于在内核和其他层之间交互的包装器。所有包装器都是抽象的,需要在更高级的层中进行重写
    • ConfigWrapper - 用于特定支付系统设置的包装器。需要在支付系统层中重写,以声明与支付系统交互所需的设置(例如登录名、密码、API密钥等)。将包含不依赖于CMS类型的设置。例如
      • ConfigWrapperHutkigrosh(来自cmsgate-hutkigrosh-lib库)
      • ConfigWrapperEpos(来自cmsgate-epos-lib库)负责在CMS内部访问设置的是 ConfigStorageCms(属于CMS层
    • OrderWrapper - 用于获取订单信息(id、金额、客户姓名、产品列表等)的包装器。类似于OrderWrapper,需要在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 内部格式存储的数组
    • 以 CMS 内部格式存储的 xml 文件
    • 等等。ConfigForm 的继承者不了解特定支付系统的设置,而“工作”只与配置字段类型有关
    • ConfigFieldList
    • ConfigFieldFile
    • ConfigFieldText
    • ConfigFieldPassword
    • 等等。
  • ManagedFieldsFactory - 用于创建实例的工厂
  • CmsConnector - 用于创建 cms-层 对象的工厂。用于创建 LocaleLoader、OrderWrapper、ConfigStorageCms、ConfigForm 对象
  • PaysystemConnector - 用于创建 paysystem-层 对象的工厂。用于创建 ConfigWrapper、Translator、ManagedFieldsFactory 对象