如何加载(多种)定义的Klarna付款方式?

时间:2020-10-15 14:41:19

标签: payment-gateway payment payment-method klarna klarna-widget

我正在构建一种Klarna Payments的沙盒集成(以使其在原理上起作用,并在以后的逻辑商店中实现其逻辑)。文档中描述的第一步session creating已经奏效。现在,我试图显示Klarna小部件。

documentation中的示例显示了如何加载一种付款方式(pay_later /发票)。

Klarna.Payments.load({
    container: '#klarna-payments-container',
    payment_method_category: 'pay_later'
  }, function (res) {
    console.debug(res);
})

我用pay_now尝试了相同的操作,但是没有用(页面上的消息“ 付款方式不可用”,{{1}中的消息{show_form: false} }对象)。实际上,我想查看一种具有三种付款方式的表格:respay_nowpay_later

我看了pay_over_time中的documentation。我的期望是找到一个像load()这样的参数。但是该方法只有payment_method_categories,并且必须是字符串...

如何获取可用的Klarna付款方式的定义列表并加载?

可能需要在Klarna后端/“控制中心”(游乐场)中进行某些设置,或者需要进行API调用以使方法可用。如果是这样,需要做什么以及如何做?

1 个答案:

答案 0 :(得分:0)

Klarna Payments文档有点混乱,或者我只是误解了。无论如何,我认为,该小部件提供了(完整的)表格,并且按照其步骤,我将获得付款表格。这是错的。小部件仅显示带有付款方式信息的块。实际的形式(用于authorize调用的单选按钮和一个或多个按钮等)是实现者所关心的。

要获取多种定义的Klarna付款方式,需要执行以下步骤:

1必须由Klarna激活此(测试)商人帐户的方法。

session initialization callPOST /payments/v1/sessions)的响应中列出了可用的方法:

{
    "session_id": "...",
    "client_token": "...",
    "payment_method_categories": [
        {
            "identifier": "direct_bank_transfer",
            ...
        },
        {
            "identifier": "pay_later",
            ...
        },
        {
            "identifier": "pay_over_time",
            ...
        },
        ...
    ]
}

2将单个付款块加载到单独的HTML容器中:

<script>
window.klarnaAsyncCallback = function () {
    Klarna.Payments.init({
        client_token: CLIENT_TOKEN
    });
    Klarna.Payments.load(
        {
            container: '#klarna-payments-container1',
            payment_method_category: 'pay_later'
        },
        function (res) {
            console.debug(res);
        }
    );
    Klarna.Payments.load(
        {
            container: '#klarna-payments-container2',
            payment_method_category: 'pay_over_time'
        },
        function (res) {
            console.debug(res);
        }
    );
    Klarna.Payments.load(
        {
            container: '#klarna-payments-container3',
            payment_method_category: 'direct_bank_transfer'
        },
        function (res) {
            console.debug(res);
        }
    );
};
</script>
<div id="klarna-payments-container1"></div>
<div id="klarna-payments-container2"></div>
<div id="klarna-payments-container3"></div>

结果应如下所示:

enter image description here

就是这样。没有提供可见的表单元素(意味着:已经已经是正确的结果)。实现者负责表单,现在可以自由创建和装饰自定义表单。