如何使用 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 支付网关?的主要内容,如果未能解决你的问题,请参考以下文章