返回

VibeFox Klarna for OpenCart — 帮助

系统要求

OpenCart:3.0.x(已在 3.0.5.0 上测试)或 4.0.2 及更高版本(已在 4.1.0.3 上测试)。

PHP:8.0 或更高版本。

Klarna 商户账户:您需要商户账户在某一 API 区域的 Klarna API 凭据(用户名和密码),以及 Klarna Playground 门户的测试凭据(参见配置)。每个 API 区域都有各自的凭据。每个商店只能使用一个商户账户(即一个 API 区域)。

货币:您所在地区的 Klarna 货币:欧洲为 EUR、SEK、NOK、DKK、GBP、CHF、PLN、CZK、HUF 或 RON;北美为 USD、CAD 或 MXN;大洋洲为 AUD 或 NZD。该货币必须已在 System > Localisation > Currencies 中添加。

VibeFox 许可证密钥:在 vibefox.net 购买。一个密钥只能用于一个域名。

安装

下载文件是一个压缩包,包含两个 OpenCart 版本的安装包。请先在您的电脑上解压。压缩包中有 README.txt、OpenCart 3 安装包 wcp_klarna_payment-oc3-(version).ocmod.zip 和 OpenCart 4 安装包 wcp_klarna_payment.ocmod.zip。只安装适用于您 OpenCart 版本的安装包。两个版本的许可证密钥相同。

OpenCart 3

1. 在后台依次进入 Extensions > Installer,点击 Upload,选择文件 wcp_klarna_payment-oc3-(version).ocmod.zip。本扩展没有 OCMOD 修改,因此无需刷新 Extensions > Modifications。除了使用安装程序,您也可以将此安装包中 upload 文件夹的内容复制到商店的根目录。

2. 进入 Extensions > Extensions,选择类型 Payments,找到 VibeFox Klarna Payments,点击 Install(绿色 + 按钮)。您的管理员用户需要有修改支付扩展列表的权限。

3. 点击 Edit(铅笔按钮)打开设置页面。将您的 VibeFox 许可证密钥粘贴到页面顶部许可证区块中的 License key 中,然后点击 Activate(参见许可证密钥)。

4. 选择您 Klarna 商户账户的 API region。

5. 输入 Klarna Playground 门户中的测试用户名和密码,保持 Test mode 开启,打开 Enable/Disable,点击 Save 并下一笔测试订单。

6. 输入 Klarna Merchant Portal 中的正式用户名和密码,关闭 Test mode,并选择订单的收款时机(默认:订单发货或完成时)。

OpenCart 4

1. 在后台依次进入 Extensions > Installer,点击 Upload,选择文件 wcp_klarna_payment.ocmod.zip。请勿重命名该文件:OpenCart 4 从文件名获取扩展代码,重命名后的安装包无法使用。

2. 该安装包会出现在同一页面的已安装扩展列表中。点击其旁边的 Install(绿色 + 按钮)。

3. 进入 Extensions > Extensions,选择类型 Payments,找到 VibeFox Klarna Payments,点击 Install(绿色 + 按钮),然后点击 Edit(铅笔按钮)。

4. 按照 OpenCart 3 的第 3 至 6 步输入许可证密钥、API region、凭据和收款方式。两个版本的设置页面及其字段相同。只有通知 URL 不同(参见通知)。

新安装时,支付方式默认关闭,测试模式默认开启。每笔 Klarna 订单都会发送通知 URL,因此无需在 Klarna 中进行任何设置。

配置

所有设置都在扩展页面中:Extensions > Extensions > Payments > VibeFox Klarna Payments > Edit。各个部分列在左侧;列表下方的 Save 按钮会保存整个页面。在设置上方,页面会显示 TEST MODE: Klarna playground, no real payments. 或 LIVE: real Klarna payments.。如果当前模式的用户名或密码缺失(此时结账时会隐藏 Klarna),或者商店的默认货币不被所选 API 区域的 Klarna 支持,页面会发出警告。如果没有修改扩展的权限,页面仅显示设置,无法保存。

保存时,Title 不能为空(最多 128 个字符),Sort Order 必须为整数(允许负数),Total 须为 0 或更大的数字,且 API 区域、收款方式、地理区域和订单状态必须有效。否则不会保存任何内容,页面会指出出错的字段。缺少凭据不影响保存。

Klarna 支付

Enable/Disable:开启或关闭该支付方式。默认:关闭。只有当当前模式的用户名和密码已填写,且客户的账单国家属于所选 API 区域的 Klarna 市场,并以该国货币付款时,结账页面才会显示 Klarna。

Title:客户在结账时看到的支付方式名称,也是订单中保存的支付方式名称。默认:Klarna。必填。

Description:在 Confirm Order 步骤中显示给客户、位于 Klarna 小部件上方的文字。默认:Pay now, later or in instalments with Klarna.

Sort Order:Klarna 在结账页面支付方式中的位置。可留空或输入整数。

Geo Zone:仅对所选地理区域内的支付地址提供 Klarna。默认:All zones。地理区域在 System > Localisation > Geo Zones 中设置。

Total:订单必须达到的结账总额(以商店默认货币计)才会提供 Klarna。留空则对任何金额都提供 Klarna。

API 凭据

Klarna API 凭据(用户名和密码)在 Klarna Merchant Portal 的 Settings > Klarna API credentials 下创建(该处有相应部分的链接)。测试凭据来自 Playground 门户:欧洲一组,北美和大洋洲一组。每个 API 区域都有各自的凭据。

Test mode:使用 Klarna Playground 环境(测试凭据,无真实付款)。默认:开启。测试模式开启时,客户在 Confirm Order 步骤会看到 TEST MODE: Klarna playground, no real payment is made.。订单会保留其下单时所在的环境:Playground 订单的收款和退款始终使用测试凭据。

API region:您 Klarna 商户账户所属的区域。客户只能从该区域的国家使用 Klarna 付款,并以其所在国家的货币支付。国家取自订单的支付地址。

Europe: 奥地利、比利时、芬兰、法国、德国、希腊、爱尔兰、意大利、荷兰、葡萄牙、斯洛伐克和西班牙(EUR),瑞典(SEK),挪威(NOK),丹麦(DKK),英国(GBP),瑞士(CHF),波兰(PLN),捷克(CZK),匈牙利(HUF),罗马尼亚(RON)。默认。
North America (US, CA, MX): 美国(USD),加拿大(CAD),墨西哥(MXN)。
Oceania (AU, NZ): 澳大利亚(AUD),新西兰(NZD)。

Live username (UID):正式 API 用户名,例如 PK12345_abcdef012345。

Live password:正式 API 密码(共享密钥)。

Test username (UID):Playground API 用户名。

Test password:Playground API 密码(共享密钥)。

已保存的密码不会再次显示。该字段保持为空,并显示 Saved — leave empty to keep it.。只有在需要更改时才输入新值。要删除已保存的密码,请勾选字段下方的 Clear the saved password on save,然后点击 Save。

订单管理

已下单的 Klarna 订单是一项授权:只有在订单被收款(capture)后才会向客户扣款。未收款的授权会过期,通常为 28 天,因此请及时发货,或使用自动收款。

Capture:客户被扣款的时机。只有已收款的金额才能退款。

When the order is shipped / completed (recommended): 当您将订单设置为已完成状态时收款,即 System > Settings > Option > Completed Order Status 中所选的状态之一(默认为 Complete 和 Shipped)。默认。如果收款失败,状态不会改变,原因会显示在订单页面上(参见订单和退款)。
Immediately (auto capture):立即向客户扣款,适用于数字商品或服务。
Manually in the Klarna portal:扩展不进行收款。请在 Klarna Merchant Portal 中为订单收款。

Cancellation:当尚未收款的订单被设置为下方的 Canceled Status 时,取消 Klarna 订单(释放授权)。默认:开启。

订单状态

OpenCart 在 Confirm Order 步骤创建订单时没有状态(即缺失订单)。只有在 Klarna 为小部件中确认的购买创建了 Klarna 订单之后,订单才会获得状态。Klarna 未批准的购买会使订单保持无状态,客户停留在 Confirm Order 步骤。下方每个字段都列出您的 OpenCart 订单状态。

Order Status After Payment:Klarna 已接受该购买(欺诈状态 ACCEPTED)。款项已按 Capture 的设置进行授权和收款。默认:Processing。

Awaiting Fraud Review Status:Klarna 将订单记为 PENDING(欺诈审核)。在 Klarna 的通知接受该订单之前请勿发货;订单会自动更新。默认:Pending。

On Hold Status:Klarna 返回了意外的欺诈状态,或 Klarna 报告的金额或货币与订单不符。备注会说明需要检查什么。默认:Pending。

Payment Error Status:Klarna 在欺诈审核后拒绝或终止了该购买。请勿发货。默认:Failed。

Canceled Status:将尚未收款的订单设置为此状态会取消 Klarna 订单(参见 Cancellation)。Klarna 报告 Klarna 订单已取消、过期或关闭时,也会设置此状态。默认:Canceled。

Refunded Status:在订单页面的 Klarna 标签中,已收款金额被全额退款。部分退款仅添加备注。默认:Refunded。

OpenCart 没有用于欺诈审核或暂挂付款的专用状态。您可以在 System > Localisation > Order Statuses 中创建它们,并在此处选择。

通知

Klarna 会将欺诈审核的结果(以待处理方式下的订单)发送到 Notification URL 中显示的地址。在 OpenCart 3 中,它的形式为 https://your-store/index.php?route=extension/payment/wcp_klarna_payment/notification;在 OpenCart 4 中为 https://your-store/index.php?route=extension/wcp_klarna_payment/payment/wcp_klarna_payment.notification。每笔订单都会自动发送该 URL,因此无需在 Klarna 中进行任何配置。通知内容永远不被信任:每条通知都会使用订单下单时所在环境和区域的凭据,通过 Klarna Order Management API 进行验证,并且 Klarna 订单必须引用此订单号。扩展依据 Klarna 报告的内容采取行动:

ACCEPTED:Klarna 接受了该购买。在金额和货币核对之后,订单转为 Order Status After Payment。
REJECTED or STOPPED:该购买未通过欺诈审核。订单转为 Payment Error Status。
Klarna order CANCELLED, EXPIRED or CLOSED:客户未被扣款。订单转为 Canceled Status。

如果您在取消或退款订单之后,Klarna 又接受了该购买,订单不会被重新打开,Klarna 授权会被释放。商店处于维护模式时,通知仍然有效:OpenCart 3 允许支付扩展的请求通过,而在 OpenCart 4 中,扩展会添加一个启动动作,允许通知和客户从 Klarna 的返回请求通过。

高级

Debug log:将 API 调用和支付事件记录到 OpenCart 日志文件夹(storage/logs)中的 wc_kl_debug.log.php。该文件无法通过网页打开。错误始终会被记录。日志绝不包含凭据、授权令牌或客户数据。默认:关闭。

Log:显示日志的大小和最新条目。点击 Clear log 可将其清空。

Delete data on uninstall:开启时,卸载扩展会删除网关设置、日志以及临时的小部件会话。订单数据(Klarna 订单 ID、退款)始终保留。默认:关闭。

导入 / 导出

Export:Download JSON 会将设置保存为 JSON 文件。密码不会被导出。

Import:粘贴之前导出的 JSON,然后点击 Import 以恢复设置。已保存的密码会被保留。

结账

在 Payment Method 步骤,客户选择支付方式(默认为 Klarna)。OpenCart 在 Confirm Order 步骤创建订单,此时仍无状态。在此步骤,客户会看到 Klarna 标识、您的说明以及 Klarna 小部件。扩展会根据该订单在服务器上创建 Klarna 会话:包括带选项的商品、礼品券、运费、优惠券、代金券和积分抵扣、税费以及地址。在小部件中,客户可以根据 Klarna 提供的选项选择立即付款、稍后付款或分期付款。客户点击 Confirm Order 时,Klarna 会在小部件中授权该购买,扩展则使用 OpenCart 订单的数据在服务器端创建 Klarna 订单。Klarna 订单会将 OpenCart 订单号作为商户参考号。

在 OpenCart 4 中,客户在付款方式区块中点击 Choose 按钮选择付款方式(位于 Payment method options 窗口中)。此时 Klarna 小部件会出现在结账页面底部的订单确认区块中,位于 Confirm Order 按钮上方。OpenCart 4 没有礼品券,因此不会发送给 Klarna。OpenCart 4 默认不要求付款地址;此时扩展会将配送地址作为付款地址,并将其国家作为购买国家。

结果取决于 Klarna 的欺诈状态:

ACCEPTED:订单以 OpenCart 的常规方式获得 Order Status After Payment,并发送常规订单邮件、更新库存,客户会看到 OpenCart 的订单成功页面。款项已授权,并按 Capture 的设置收款。
PENDING:订单在 Klarna 通知到达之前获得 Awaiting Fraud Review Status。在此之前请勿发货。
REJECTED:订单保持无状态并附带备注。客户停留在 Confirm Order 步骤,并看到 Klarna could not approve this purchase. Please choose another payment method.
Other fraud status:订单获得 On Hold Status 及备注。

如果 Klarna 无法接受订单,客户会停留在 Confirm Order 步骤,并看到简短提示,例如 Klarna could not accept this order. Please check your billing details or choose another payment method.、Klarna did not respond. Please try again in a moment.,或者在授权已过期时,提示客户再次点击 "Confirm Order"。详细信息会写入日志,订单会附带备注。如果客户的国家和货币与您所在区域的 Klarna 市场不匹配,客户会看到 Klarna is not available for your billing country and currency. Please choose another payment method.

重复点击、刷新页面,或在第二个浏览器标签页中为同一购物车付款,都不会创建第二个 Klarna 订单(OpenCart 3 每次显示 Confirm Order 步骤时都会创建一个新订单;OpenCart 4 则会更新结账的订单,因此在购买被拒绝后,客户会支付同一订单)。如果 Klarna 已批准购买但无法设置订单状态,客户会看到 Your Klarna purchase was approved, but the order could not be completed automatically. Please contact us — do not pay again. 下一次尝试或 Klarna 的通知将根据已保存的 Klarna 订单设置状态,无需重新授权。购物车发生变化(包括数量变化)时,视为需要单独付款的新购物车。

在 OpenCart 4 中,订单会保留在结账流程中,直到显示成功页面。如果该订单在未付款的情况下已被关闭(例如您取消了订单),客户会被带回结账页面,并显示 Your previous order was cancelled without a payment. Please confirm the order again to pay with a new order. 如果订单已经生成且购物车中现在有其他商品,提示为 Your previous order #(number) has already been placed. Your cart has changed: please confirm the new order to pay for it. 两种情况下,下一次点击 Confirm Order 都会为购物车支付一个新订单。这些提示显示在结账页面上方。

该扩展不包含 Klarna Checkout(KCO,即完整替换结账页面)、Klarna Express Checkout 按钮、On-site messaging 或 Sign in with Klarna,不支持订阅或已保存的支付方式,也不支持按订单行部分收款。订单下达后,如果您编辑订单,订单行不会再次发送给 Klarna。

订单和退款

订单状态

No status (missing order):客户未完成 Klarna 授权,或 Klarna 拒绝了该购买。在 Sales > Orders 中,只有将 Order Status 筛选条件设为 Missing Orders 时才会显示此类订单。

Order Status After Payment(默认 Processing):Klarna 接受了该购买。备注会显示 Klarna 订单 ID 以及收款时间。

Awaiting Fraud Review Status(默认 Pending):该购买正在等待 Klarna 的欺诈审核。Klarna 的通知会将订单转为 Order Status After Payment、Payment Error Status 或 Canceled Status。

On Hold Status(默认 Pending):Klarna 返回了意外的欺诈状态,或 Klarna 报告的金额或货币与订单不符。备注会说明原因。请在 Klarna Merchant Portal 中检查订单。

Payment Error Status(默认 Failed):Klarna 在欺诈审核后拒绝或终止了该购买。请勿发货。

Canceled Status(默认 Canceled):您取消了订单,或 Klarna 报告 Klarna 订单已取消、过期或关闭。开启 Cancellation 后,取消尚未收款的订单会同时取消 Klarna 订单并释放授权,因此客户不会被扣款。已收款的订单不会在 Klarna 中被取消:请退款以退回款项。

Refunded Status(默认 Refunded):已收款金额通过扩展被全额退款。

备注是订单 History 中的条目,客户看不到。它们以 Klarna 一词开头。

Capture

选择 When the order is shipped / completed 时,在 Sales > Orders 中(通过 Add History)将订单状态更改为已完成状态,会在保存新状态之前收取订单总额。如果 Klarna 拒绝收款(例如在编辑订单后,订单总额超过了仍被授权的金额),状态不会改变,不会发送邮件,订单页面会显示原因而不是成功提示。备注会说明客户并未被扣款。请解决问题后再次更改状态以重试,或在 Klarna Merchant Portal 中收款并将 Capture 改为手动。收款成功会添加一条备注,其中包含已收款金额和收款 ID。新订单的首个状态,以及从一个已完成状态切换到另一个已完成状态,都不会触发收款。扩展已安装但被关闭时,收款和取消仍会正常工作。在 OpenCart 4.1 中,被拒绝的状态更改也会在订单页面显示原因;在 OpenCart 4.0.x 中,状态同样不变,但原因仅显示在订单历史的备注中。

VibeFox Klarna Payments 标签

在 Sales > Orders 中打开一笔使用 Klarna 付款的订单。在订单页面底部,紧邻 History 和 Additional,VibeFox Klarna Payments 标签会显示 Klarna 订单 ID(及其环境和区域)、测试订单的 Playground 标签、欺诈状态和 Klarna 状态、Authorized 金额、Captured / refunded 金额、退款表单、退款历史以及该订单的 Klarna notes。该标签仅对有权访问此扩展的用户显示。

退款

在 VibeFox Klarna Payments 标签中输入 Amount(尚未退款的金额会自动填入),可选填写 Reason (optional),然后点击 Refund via Klarna。确认提示 Refund this amount through Klarna? This cannot be undone.。支持对已收款金额进行全额和部分退款,上限为 Klarna 报告的已收款金额减去已退款金额。您需要修改该扩展的权限(在 System > Users > User Groups 中设置)。退款会发送至下单时所在的环境和区域,因此必须已设置该环境的凭据。如果 Klarna 不接受退款,标签会显示错误,且不会记录任何退款。成功的退款会连同 Klarna 退款 ID 一起添加到退款历史和备注中。全额退款会将订单设置为 Refunded Status,且不会通知客户,也不会将商品退回库存,与手动更改状态一样。部分退款不会更改状态。重试的退款绝不会被执行两次。

尚未收款的订单无法退款:请改为取消该订单以释放授权。将 Capture 设为手动后,商店无法得知您在 Klarna Merchant Portal 中收取了多少金额。此时退款表单会以空金额显示,提交时由 Klarna 核对金额。

Sales > Returns 中的商品退货不会通过 Klarna 退还款项。在 Klarna Merchant Portal 中进行的退款不会添加到该标签中,但会计入 Klarna 仍允许退款的金额。

许可证密钥

该扩展需要使用来自 vibefox.net 的 VibeFox 许可证密钥。许可证区块 License — VibeFox Klarna Payments 位于 Extensions > Extensions > Payments > VibeFox Klarna Payments > Edit 页面的最上方,位于设置之上。将密钥粘贴到 License key 并点击 Activate。此后,该区块会显示被遮蔽的密钥、状态(例如许可证有效期截止日期和您的域名),以及以下按钮:Check now(重新检查状态)、Change key(输入其他密钥)和 Remove key(从本商店移除密钥)。其下方有 Product: opencart-payment-klarna 一行,以及打开您 vibefox.net 账户的链接 Manage licenses and domains in your account。只有对该扩展拥有 Modify 权限的管理员用户可以更改密钥。区块中的文字跟随后台语言显示(包括英语和俄语)。

如果密钥未被接受,区块会说明原因,例如 Key not found、This key belongs to another product、Domain limit reached 或 License expired on 加上日期。更改商店地址之后,或在您的账户中释放了一个域名名额之后,请点击 Check now。如果无法连接许可证服务器,扩展会继续使用最后一次已知的状态运行。

一个密钥只能用于一个域名:即 OpenCart 配置中的商店地址。从商店中移除密钥并不会释放其域名名额。请在您的 vibefox.net 账户中释放该名额。

没有有效密钥时,结账页面不会向客户显示 Klarna。如果仍然发起了付款,客户会看到 This payment method is not available. Please choose another one. 在同一浏览器中登录后台的管理员用户,仍会在商店中看到该支付方式,并标有 (unlicensed — visible to admins only),这样您可以在购买密钥之前进行设置和测试。在 OpenCart 4 中没有此预览:商店看不到管理员登录状态,因此没有有效密钥时,支付方式对所有人都隐藏。打开一次 Edit 页面后,后台 Dashboard 会出现提醒。点击 × 可将其隐藏 7 天。现有订单不受影响:Klarna 通知仍会被处理,订单仍可收款、取消和退款。

许可证过期后,扩展仍会继续工作,但更新和支持需要续费。打开后台 Dashboard 或 Edit 页面时,系统会自动重新检查状态:输入密钥后的前 14 天每天一次,之后每周一次。无需设置 cron 任务。卸载扩展时,许可证密钥和许可证状态始终会被删除。

故障排除

Klarna 未出现在结账页面:请检查许可证是否有效,Enable/Disable 是否已开启,以及当前模式的凭据是否已填写:测试模式下填写测试用户名和密码,正式模式下填写正式凭据。如果凭据缺失,设置页面会显示警告。客户的付款国家必须是您 API region 中的 Klarna 国家,并以该国货币付款(例如,瑞典客户必须使用 SEK 付款)。另外请检查支付地址是否在所选的 Geo Zone 中,以及订单是否达到设置中的 Total。

付款已完成,但订单仍停留在 Awaiting Fraud Review Status:该购买正在等待 Klarna 的欺诈审核,待 Klarna 的通知到达后订单会更新。请检查您的商店能否接收 Klarna 发送到设置中 Notification URL 的请求,并确认下单所在环境的凭据仍已填写。开启 Debug log 并查看扩展页面上的 Log 字段。

通知返回 Not configured:下单所在环境(测试或正式)的凭据缺失,因此无法验证通知。请填写凭据。Klarna 会重试该通知。

通知返回 Verification failed:无法通过 Order Management API 读取 Klarna 订单。Klarna 会重试该通知。

通知返回 Busy:订单在同一时刻正被另一个请求更新。Klarna 会重试该通知。

通知返回 mismatch_ref 或 Unknown order:Klarna 订单与该订单不匹配,或扩展不认识该订单。订单不会被更改。

小部件无法加载:客户会看到 Klarna could not be loaded. Please try again or choose another payment method. 或 Klarna is not available for this purchase. 请检查当前模式的凭据以及客户的国家和货币。

将状态更改为 Complete 或 Shipped 被拒绝:Klarna 收款失败。请在订单页面或备注中查看原因。订单总额可能超过了仍被授权的金额,Klarna 订单可能尚未被接受,或授权可能已过期。请解决问题后再次更改状态,或在 Klarna Merchant Portal 中收款。

退款失败:请阅读标签中的信息。订单可能尚未收款(请改为取消),金额可能超过仍可退款的金额,或订单所在环境的凭据可能缺失。

标签中没有退款表单:标签会说明原因:尚未收款、已收款金额已全额退款,或您的用户组没有修改扩展的权限。

客户看到 This order is already being paid:同一购买的另一个请求正在处理中,例如重复点击。请稍候片刻,并检查订单是否已获得状态。

卸载

进入 Extensions > Extensions,选择类型 Payments,然后点击 VibeFox Klarna Payments 旁边的 Uninstall(红色 − 按钮)。该扩展的许可证密钥和许可证状态始终会被删除。OpenCart 始终会删除扩展自身的设置:Enable/Disable、Sort Order、Geo Zone、Total,以及 Order statuses 部分中的订单状态,这些设置在重新安装后会恢复为默认值。扩展的 OpenCart 事件也会被删除(在 OpenCart 4 中还包括其启动动作,该动作在维护模式下允许通知和客户的返回请求通过),因此状态更改将不再收款或取消 Klarna 订单。如果 Delete data on uninstall 已开启,其他网关设置(标题、描述、测试模式、API 区域、凭据、收款、取消、日志记录)、日志以及临时小部件会话都会被删除。如果未开启,这些内容会保留,以便之后重新安装时使用。Klarna 订单和退款始终会保留,因此之前的订单在重新安装后仍可收款和退款。现有订单会保留其付款备注。

在 OpenCart 4 中,如需同时删除扩展的文件,请在卸载后进入 Extensions > Installer,在已安装扩展列表中点击 VibeFox Klarna Payments 旁边的 Uninstall(橙色 − 按钮),然后点击 Delete(红色垃圾桶按钮)以删除已上传的安装包。

Klarna 是其所有者的商标。本扩展与 Klarna 无关联,也未获得 Klarna 的认可。