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