elleracompany/commerce-klarna-checkout

此包已被废弃,不再维护。未建议替代包。

Craft Commerce 2 的 Klarna Checkout 集成

3.1.2 2021-11-30 07:37 UTC

README

Version 3.0

Klarna Checkout for Craft Commerce

此插件为Klarna集成Craft Commerce

版本 3.0 发布 🎉

  • 现在支持欧洲 🇪🇺 北美 🇺🇸 和大洋洲 🇦🇺 !
  • 选择渲染 Klarna 或使用重定向支付
  • 添加外部支付方式和结账

##注意

从 v1.x 升级到 v3.x 时,请参阅UPDATE_v3.md.

要求

此插件需要 Craft Commerce 3.0.0 或更高版本。

安装

您可以从插件商店安装此插件。

从插件商店

转到项目的控制面板中的插件商店,搜索“Klarna Checkout”。然后在模态窗口中点击“安装”按钮。

支持

请联系我们support@ellera.no或在GitHub中创建新问题。

您还可以通过在 Discord 上给 @Jorgen 发消息来联系我们。

插件将错误和事务记录到 @storage/logs/klarna-checkout.log@storage/logs/klarna-hpp.log。在联系时,请提供相关的日志。

设置

  1. 确保您已将商店位置设置在 Commerce -> Store Settings -> Store Location
  2. 和基本 URL 在 Settings -> Sites -> sitename -> Base URL
  3. 安装插件。
  4. 转到 Commerce -> System Settings -> Gateways 并点击 + New Gateway
  5. 从下拉列表中选择 Klarna Checkout 或 Klarna Hosted Payment Page。
  6. 设置您的信息游乐场凭据在 API 凭据欧洲测试用户名 (UID)/测试密码。
  7. 为您的网站获取 Klarna 生产批准
  8. 关闭“测试模式”并为网关添加生产凭据

Klarna Checkout: 支付按钮

由于 Klarna Checkout 正在渲染自己的支付按钮,因此必须删除 craft-commerce 默认的“支付”按钮。您可以将商店默认的 checkout/payment.html 文件复制并覆盖为 vendor/ellera/commerce-klarna-checkout/src/templates/pages/checkout/payment.html,或者简单更新现有的模板。

{% if cart.gateway.handle is not same as('klarna') %}
    <button class="button button-primary" type="submit">Pay {{ cart.totalPrice|commerceCurrency(cart.paymentCurrency,convert=true) }}</button>
{% endif %}

Klarna Hosted Payment Page

对于托管支付页面,需要“支付”按钮将用户发送到 Klarna。在选择 Klarna HPP 的标志和背景图像时,重要的是图像资产必须在可访问的卷中。

获取 Klarna 批准

在切换到生产模式之前,您需要从 Klarna 获取批准。

Klarna 订单完成 HTML

要渲染 Klarna 订单完成 HTML,您可以在您的 shop/customer/order 模板中使用此代码

    {% if order.gateway.handle is same as('klarna') and order.gateway.hasHtml %}
        {{ order.gateway.getHtml(order.id)|raw }}
    {% else %}
        // Regular thank-you-page
    {% endif %}

注意:Klarna 订单ID存储在PHP会话中,HTML是从Klarna API获取的。order.gateway.hasHtml将检查会话是否存在,如果不存在,则可以渲染常规的感谢页面。

增值税和税费

Klarna要求按订单行发送税费,而不是按订单总额发送,因此为了正确地将增值税和税费传递给Klarna,必须将应税对象设置为“行项目价格”。如果运费也是应税的,则需要创建一个单独的运费税率,并将其设置为“订单总运费”。

使用环境变量

UID、密码和测试模式选项可以通过环境变量进行控制。将环境变量添加到您的.env文件中,并在设置页面中引用它们(更多信息请参阅文档)。

测试模式设置也可以通过环境变量进行控制,但此格式是严格的。使用KLARNA_TEST_MODE_<handle>,其中handle是网关处理程序。

示例 .env

# Klarna
KLARNA_TEST_UID="PKXXX_XXXXXXXXXX"
KLARNA_TEST_PWD="XXXXXXXXXXXXXX"
KLARNA_PROD_UID="PKXXX_XXXXXXXXXX"
KLARNA_PROD_PWD="XXXXXXXXXXXXXX"
KLARNA_TEST_MODE_klarnaCheckout="true"

格式化/更改地址

如果您的设置在 Commerce 中使用不同的地址字段,例如当您将门牌号与街道名称分开存储时,您可以通过地址格式化器在将其发送给Klarna之前更改格式。

FormatAddressEvent包含两个参数,包含格式化地址的address参数,以及包含源地址的sourceAddress

    use ellera\commerce\klarna\gateways\Base as KlarnaGateway;
    
    Event::on(
        KlarnaGateway::class,
        KlarnaGateway::EVENT_FORMAT_ADDRESS,
        function(FormatAddressEvent $event) {
            $event->address['street_address'] = "{$event->sourceAddress->address1} {$event->sourceAddress->address3}";
        }
    );

故障排除

当我关闭测试模式时,我得到401或403响应

在您的账户获得生产批准之前,您需要Klarna的批准。

https://eu.portal.klarna.com/菜单下查找“恢复上线”链接

开发

  • 添加对项目同步(project.yaml)的支持