php – 如何注册新的payum付款方式并添加操作?

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

但是,我似乎无法注册它.我不知道我应该在哪里添加操作,以便在加载付款方式时使用它们.

我有以下问题.

>我在哪里添加对PaymentFactory的引用?目前,我在捆绑构建方法中加载payum扩展,并将PaymentFactory的实例添加到扩展.这就是我需要做的吗?
>我创建了捕获和状态操作.我在哪里将这些操作添加到支付网关?我在PaymentFactory中注册它们吗?我在两个类中都添加了转储和退出,当我在浏览器中运行付款时,似乎从未点击操作并在我设置的点退出.

任何帮助,将不胜感激

提前致谢 :)

最佳答案 有几种方法可以为付款添加操作:

>最快的是使用定制工厂.

payum:
    contexts:
        you_name_it:
            custom:
                actions:
                    - your.action.service.from.container
                    - your.another.action.service.from.container

>创建付款工厂.这是高级技术,如果您需要自定义配置,它可能很有用.为此,您必须实现PaymentFactoryInterface和register it to Payum extension.您可以直接在工厂中添加操作(需要很好地理解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.标签必须定义工厂.它必须与您创建的工厂的名称相匹配.示例: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>
点赞