我创建了一个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>