问题描述
我正在构建一种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}
}对象)。实际上,我想查看一种具有三种付款方式的表格:res
,pay_Now
和pay_later
。
我看了pay_over_time
中的documentation。我的期望是找到一个像load()
这样的参数。但是该方法只有payment_method_categories
,并且必须是字符串...
如何获取可用的Klarna付款方式的定义列表并加载?
可能需要在Klarna后端/“控制中心”(游乐场)中进行某些设置,或者需要进行API调用以使方法可用。如果是这样,需要做什么以及如何做?
解决方法
Klarna Payments文档有点混乱,或者我只是误解了。无论如何,我认为,该小部件提供了(完整的)表格,并且按照其步骤,我将获得付款表格。这是错的。小部件仅显示带有付款方式信息的块。实际的形式(用于authorize
调用的单选按钮和一个或多个按钮等)是实现者所关心的。
要获取多种定义的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
将单个付款块加载到单独的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>
结果应如下所示:
就是这样。没有提供可见的表单元素(意味着:已经已经是正确的结果)。实现者负责表单,现在可以自由创建和装饰自定义表单。