如何注册一个新的支付方式和添加动作


How to register a new payum payment method and add actions?

我创建了一个payum支付方式。我已经设置了一个存储支付详细信息的支付表单,然后生成支付安全令牌。到目前为止,这一切似乎都没问题,payum在存储中生成令牌。

然而,我似乎无法注册它。我不知道我应该在哪里添加动作,以便在加载付款方式时使用它们。

我有以下几个问题。

  • 我在哪里添加对我的PaymentFactory的引用?此刻,我在bundle构建方法中加载payum扩展,并将PaymentFactory的实例添加到扩展中。这就是我要做的吗?
  • 我创建了一个捕获和状态操作。我在哪里将这些操作添加到支付网关?我需要在PaymentFactory中注册它们吗?我在这两个类中添加了转储和退出,当我在浏览器中运行支付时,它似乎永远不会在我设置的点上击中动作和退出。

如有任何帮助,不胜感激

提前感谢:)

有几种方法可以为支付添加操作:

  • 最快的是使用custom factory.

    payum:
        contexts:
            you_name_it:
                custom:
                    actions:
                        - your.action.service.from.container
                        - your.another.action.service.from.container
    
  • 创建支付工厂。这是一种先进的技术,如果您需要自定义配置,可能会很有用。为此,您必须实现PaymentFactoryInterface并将其注册到Payum扩展。你可以直接在工厂中添加操作(需要对symfony容器有很好的理解):

    <?php
    function create(ContainerBuilder $container, $contextName, array $config)
    {
        $paymentDefinition = new Definition;
        $paymentId = 'paymentId';
        $container->setDefinition($paymentId, $paymentDefinition);
        $paymentDefinition->addMethodCall('addAction', array(
            new Reference('your.action.service.from.container')
        ));
    }
    

    或者您可以加载带有操作的XML文件。操作服务必须有一个标记payum.action。标签必须定义一个factory。它必须与您创建的工厂的名称相匹配。例如:paypal_express_checkout_nvp.xml

    <service
        id="your.action.service.from.container"
        class="%your.action.service.from.container.class%"
        public="false"
    >
        <tag name="payum.action" factory="your_factory_name" />
    </service>