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

Posted

技术标签:

【中文标题】如何注册新的 payum 支付方式并添加操作?【英文标题】:How to register a new payum payment method and add actions? 【发布时间】:2014-07-22 10:39:11 【问题描述】:

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

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

我有以下问题。

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

任何帮助将不胜感激

提前致谢:)

【问题讨论】:

【参考方案1】:

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

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

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。标签必须有一个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>

【讨论】:

很好的答案。这真的帮助了我!我的付款方式的代码现在被触发,我想出了如何添加我需要的 API。感谢您的所有帮助。 contexts 键已更改为 payments 更重要的是,在 0.15.x 及更高版本中,它被重命名为 gateways

以上是关于如何注册新的 payum 支付方式并添加操作?的主要内容,如果未能解决你的问题,请参考以下文章

Payum Bundle 的配置如何工作?

Omnipay和Payum之间的区别

使用 Sylius 0.16 和 Payum 实施异地支付网关时如何完成订单

Payum 自定义网关

Android 多种支付方式的优雅实现

h5网站如何开通支付宝