dvsa/mot-cpms-forms

模块,提供可重复使用的HTML表单,可用于方案处理支付。


README

简介

提供可重复使用的HTML表单的模块,可用于方案处理支付。

安装

主要设置

使用Composer

推荐通过 Composer 进行安装。

composer require dvsa/mot-cpms-forms

安装后

  1. 在您的 application.config.php 文件中启用它。

    <?php
    return array(
        'modules' => array(
            // ...
            'CpmsForms',
        ),
        // ...
    );
  2. 将配置文件复制到您的autoload配置文件夹(可选)

    cp vendor/dvsa/mot-cpms-forms/config/cpms-forms.global.php.dist config/autoload/cpms-forms.global.php

使用方法

请使用控制器插件生成支付表单

$form = $this->getCpmsPaymentForm($payment);

插件接受一个参数,该参数必须是实现了以下接口之一的对象

  • CpmsForms\Payment\CardPaymentInterface
  • CpmsForms\Payment\StoredCardPaymentInterface
  • CpmsForms\Payment\DirectDebitPaymentInterface
  • CpmsForms\Payment\CashPaymentInterface
  • CpmsForms\Payment\ChequePaymentInterface
  • CpmsForms\Payment\ChipPinPaymentInterface
  • CpmsForms\Payment\PostalOrderPaymentInterface

如你所见,支付接口决定了方案需要提供的数据,并告诉表单工厂服务为该接口构建特定的表单。

每种支付类型都始终需要通用信息(金额、用户ID等),因此在使用支付类时,使用 CpmsForms\Payment\BasePaymentTrait 特性是一个便利的选择。

cpms-forms插件验证POST数据并重定向到cpms-forms控制器进行处理。关于重定向,正确的使用方法应该是

$form = $this->getCpmsPaymentForm($payment);
if ($form instanceof \Laminas\Http\Response) {
    return $form;
}

应将表单传递给ViewModel,并通过cpms-forms视图助手插件进行渲染

<?php echo $this->renderCpmsForm($form); ?>

配置

视图脚本

如果需要自定义视图脚本来渲染支付表单,请将其添加到您的配置文件中

<?php
return [
    'cpms_forms' => [
        'partials' => [
            'form' => 'custom-path/custom-script.phtml',
        ],
    ],
];

也可以为特定支付类型提供视图脚本

return [
    'cpms_forms' => [
        'partials' => [
            'form' => 'custom-path/custom-script.phtml',
            'stored_card' => 'custom-path/stored-card-script.phtml',
        ],
    ],
];

表单定制

可以为特定支付类型提供自定义表单类。此类必须扩展 CpmsForms\Form\PaymentForm 类才能被视为有效。请参阅示例

return [
    'cpms_forms' => [
        'payment_types' => [
            'direct_debit' => [
                'form' => 'Scheme\Form\CustomDirectDebitPaymentForm'
            ],
        ],
    ],
];

也可以定制表单元素。以下示例设置了 mandate_collection_day 元素的html类并添加了电子邮件字段

return [
    'cpms_forms' => [
        'payment_types' => [
            'direct_debit' => [
                'form_elements' => [
                    'mandate_collection_day' => [
                        'attributes' => [
                            'class' => 'form-control olcs-form-element',
                        ],
                    ],
                    [
                        'name' => 'email',
                        'attributes' => [
                            'type'  => 'email',
                            'class' => 'form-control',
                        ],
                        'options' => [
                            'label' => 'Customer E-mail',
                            'required' => true,
                        ],
                    ]
                ],
            ],
        ],
    ],
];

有关更多选项、支付类型和表单元素的详细信息,请参阅 config/module.config.php

贡献

请参阅我们的 贡献指南

待办事项

  • 检查客户端是否有权使用支付类型
  • 实现事件管理器以处理支付前后的操作
  • 集成CPMS其他支付模块