4

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

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

我有以下问题。

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

任何帮助,将不胜感激

提前致谢 :)

4

1 回答 1

3

有几种方法可以向付款添加操作:

  • 最快的是使用自定义工厂。

    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>
    
于 2014-06-02T14:41:02.080 回答