2

我正在构建一种 Klarna Payments 的沙盒集成(使其原则上工作并稍后将逻辑实施到真实商店中)。文档中描述的第一步,会话创建,已经奏效。现在我正在尝试显示 Klarna 小部件。

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

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

我尝试了相同的方法pay_now,但它不起作用(页面和对象中的消息“付款方式不可用” )。实际上,我希望看到一个具有三种付款方式的表单:、和。{show_form: false}respay_nowpay_laterpay_over_time

我查看. load()我的期望是找到一个像payment_method_categories. 但该方法只有payment_method_category并且它需要是一个字符串......

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

可能某些设置位于 Klarna 后端/“控制中心”(Playground)中,或者需要用于使方法可用的 API 调用。如果是这样,需要做什么以及如何做到这一点?

4

1 回答 1

2

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

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

1Klarna 需要为此(测试)商家帐户激活这些方法。

会话初始化调用( )的响应中列出了可用的方法POST /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>

结果应如下所示:

在此处输入图像描述

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

于 2020-10-25T14:25:42.997 回答