elleracompany / commerce-klarna-checkout
Craft Commerce 2 的 Klarna Checkout 集成
Requires
- ext-json: *
- craftcms/cms: ^3.4.0
- craftcms/commerce: ^3.0.0
- guzzlehttp/guzzle: ^6.5.0||^7.3
This package is not auto-updated.
Last update: 2024-03-07 12:01:31 UTC
README
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
。在联系时,请提供相关的日志。
设置
- 确保您已将商店位置设置在
Commerce -> Store Settings -> Store Location
- 和基本 URL 在
Settings -> Sites -> sitename -> Base URL
。 - 安装插件。
- 转到
Commerce -> System Settings -> Gateways
并点击+ New Gateway
- 从下拉列表中选择 Klarna Checkout 或 Klarna Hosted Payment Page。
- 设置您的信息游乐场凭据在 API 凭据欧洲测试用户名 (UID)/测试密码。
- 为您的网站获取 Klarna 生产批准
- 关闭“测试模式”并为网关添加生产凭据
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)的支持