payment-gateway - 如何加载(多个)定义的 Klarna 付款方式?

标签 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 进行了相同的尝试,但没有成功(页面上显示消息“付款方式不可用”,{show_form: false} res 对象中)。实际上我想看到一个包含三种付款方式的表单:pay_nowpay_laterpay_over_time

我看了一下documentation load() 的。我的期望是找到像 payment_method_categories 这样的参数。但该方法只有 payment_method_category 并且它需要是一个字符串...

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

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

最佳答案

Klarna Payments 文档有点令人困惑,或者我只是误解了它。无论如何,我认为该小部件提供了(完整的)表单,并且通过遵循其步骤我将获得付款表单。这是不对的。该小部件仅显示带有有关付款方式信息的 block 。实际的表单(单选按钮和用于授权调用的一个或多个按钮等)是实现者关心的问题。

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

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

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

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

2 将单个支付 block 加载到单独的 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

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

关于payment-gateway - 如何加载(多个)定义的 Klarna 付款方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64374076/

相关文章:

iphone - 对于 PayPal 的 Phone SDK,您如何在 iPhone 上保护您的 PayPal 应用程序 ID?

php - 在 Woocommerce 的任何地方保存并显示特定的支付网关附加字段

payment - Braintree API : How can I tell which payment_method is associated with my nonce?

payment-gateway - 带有运费和错误的 Paypal Express 结帐

mobile - 在移动应用程序上使用 Balanced API 的最佳实践

PHP Paypal API : How to Capture Authorized Payment Partially?

android - 如何整合谷歌支付?

重定向支付网关magento2

javascript - 单击 eWAY paynow 按钮时如何验证表单

php - 我如何强制隐藏页面以防止直接访问并且只能从 Paypal 重定向访问?