如何使用 Sylius 实现 Klarna 支付网关?

Posted

技术标签:

【中文标题】如何使用 Sylius 实现 Klarna 支付网关?【英文标题】:How to Implement Klarna payment gateway with Sylius? 【发布时间】:2018-06-06 06:25:14 【问题描述】:

我一直在尝试添加 klarna 结帐网关,但没有任何运气... 我在管理 UI 中没有看到 Klarna Checkout!

不知道我在这里缺少什么,但我理解它的方式是我所要做的就是通过 composer 安装网关支付,然后在 config.yml 文件中添加字段

我需要制作 KlarnaGatewayConfigurationType.php 文件吗?如果是,那么我应该在哪里添加它,我还应该做什么?

这些是我遵循的步骤: 安装 Klarna:composer require klarna/checkout

然后我在app\config\config.yml添加了这段代码:

payum:
    gateways:
        klarna_checkout:
            factory: klarna_checkout
            secret:  'required'
            merchant_id: 'required'
            terms_uri: ''
            checkout_uri: ''
            sandbox: true

sylius_payment:
     gateways:
            klarna_checkout: klarna_checkout

php bin/console payum:gateway:debug 给了我这个:

Order of actions, apis, extensions matters 
Found 3 gateways 

offline (Payum\Core\Gateway): 
        ........................................................................

klarna_checkout (Payum\Core\Gateway): 
        Actions: 
        Payum\Core\Bridge\Symfony\Action\GetHttpRequestAction 
        Payum\Core\Bridge\Symfony\Action\ObtainCreditCardAction 
        Sylius\Bundle\PayumBundle\Action\CapturePaymentAction 
        Sylius\Bundle\PayumBundle\Action\ExecuteSameRequestWithPaymentDetailsAction 
        Sylius\Bundle\PayumBundle\Action\ResolveNextRouteAction 
        Payum\Core\Action\CapturePaymentAction 
        Payum\Core\Action\AuthorizePaymentAction 
        Payum\Core\Action\PayoutPayoutAction 
        Payum\Core\Action\ExecuteSameRequestWithModelDetailsAction 
        Payum\Core\Bridge\Twig\Action\RenderTemplateAction 
        Payum\Core\Action\GetCurrencyAction 
        Payum\Core\Action\GetTokenAction 
        Payum\Klarna\Checkout\Action\AuthorizeRecurringAction 
        Payum\Klarna\Checkout\Action\AuthorizeAction 
        Payum\Klarna\Checkout\Action\NotifyAction 
        Payum\Klarna\Checkout\Action\StatusAction 
        Payum\Klarna\Checkout\Action\SyncAction 
        Payum\Klarna\Checkout\Action\ConvertPaymentAction 
        Payum\Klarna\Checkout\Action\Api\CreateOrderAction 
        Payum\Klarna\Checkout\Action\Api\UpdateOrderAction 
        Payum\Klarna\Checkout\Action\Api\FetchOrderAction 

        Extensions: 
        Sylius\Bundle\PayumBundle\Extension\UpdatePaymentStateExtension 
        Payum\Bundle\PayumBundle\Profiler\PayumCollector 
        Payum\Core\Extension\GenericTokenFactoryExtension 
        Payum\Core\Bridge\Psr\Log\LoggerExtension 
        Payum\Core\Bridge\Psr\Log\LogExecutedActionsExtension 
        Payum\Core\Extension\StorageExtension 
                Storage: Payum\Core\Bridge\Doctrine\Storage\DoctrineStorage 
                Model: Sylius\Component\Core\Model\Order 
        Payum\Core\Extension\StorageExtension 
                Storage: Payum\Core\Bridge\Doctrine\Storage\DoctrineStorage 
                Model: Sylius\Component\Core\Model\Payment 
        Payum\Core\Extension\EndlessCycleDetectorExtension 

        Apis: 
        Payum\Core\Bridge\Httplug\HttplugClient 
        Payum\Klarna\Checkout\Config 

Offline (Payum\Core\Gateway): 
        ........................................................................

最后一步:php bin/console cache:clear

我在这里做错了什么?

【问题讨论】:

您能否在 sylius 中实现 Klarna?你能指导我实施吗? 【参考方案1】:

是的,您还应该添加网关配置类型表单,它在app/config/services.yml 中看起来像这样:

sylius.form.type.gateway_configuration.swipe:
    class: Payum\Swipe\Type\SwipeGatewayConfigurationType
    tags:
        -  name: sylius.gateway_configuration_type, type: swipe, label: Swipe 
        -  name: form.type 

包含的类应包含在 Sylius Admin 中配置的表单。您可以在 Sylius\Bundle\PayumBundle\Form\Type 命名空间中找到它的另一个示例。

【讨论】:

【参考方案2】:

最近 Klarna API 版本已从旧 V2 升级到最新 V3。所以我为 Klarna Checkout 和 Klarna Payment 实现了相同的功能。

【讨论】:

请多解释一下。

以上是关于如何使用 Sylius 实现 Klarna 支付网关?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sylius 中自定义实体属性?

如何在另一个项目中重用 sylius 组件?

如何在 sylius 上自定义密码验证器?

使用 composer 克隆 Sylius

Sylius 中选项值中的自定义字段不可见

Sylius 缓存管理