[DEPRECATED] Official Java SDK library for Klarna Services
Dear community, the SDK you are currently looking at is now deprecated. These are details related to sunsetting:
We are making Klarna REST API definition files available in Swagger / OAS v2 format, under the Klarna API Reference section on the Klarna Developer Portal. These will be regularly updated as the APIs evolve. You can use tools like https://swagger.io/tools/swagger-codegen/ to generate your own SDKs, client libraries, etc.
Shop at your favorite stores today and experience the freedom to pay later with Klarna.
⚠️ 22/01/20 Release of v4.0.0, see CHANGELOG for an overview of what changed.
Due to security vulnerability in com.fasterxml.jackson.core:jackson-databind we highly recommend you upgrade your Java SDK to version >=3.1.1.
More information about the issue:
SDK covers all of Klarna API: https://developers.klarna.com/api/
Before getting a production account you can get a playground one. Register below to be able to test your SDK integration before go live, by selecting your region:
https://developers.klarna.com/documentation/testing-environment/#developer-signup-test-credentials
The Java SDK requires Java 1.7 version or higher.
To install the Java SDK from the Central Maven repository using Maven, add the following lines to pom.xml
:
<dependency>
<groupId>com.klarna</groupId>
<artifactId>kco-rest</artifactId>
<version>[4.0,)</version>
</dependency>
To install the Java SDK from the Central Maven repository using Gradle, add the following lines to build.gradle
:
dependencies {
compile group: 'com.klarna', name: 'kco-rest', version:'4.0+'
}
The various documentation is available:
Example files can be found in the examples package.
The basic workflow is the following:
Create an SDK Client
Build the new API instance via created Client
package com.mycompany.app;
import com.klarna.rest.Client;
import com.klarna.rest.api.checkout.CheckoutOrdersApi;
import com.klarna.rest.api.checkout.model.CheckoutOrder;
import com.klarna.rest.http_transport.HttpTransport;
import com.klarna.rest.model.ApiException;
import java.io.IOException;
/**
* Klarna Checkout Example
*/
public class App
{
public static void main( String[] args )
{
Client client = new Client("username", "password", HttpTransport.EU_BASE_URL);
CheckoutOrdersApi checkoutOrdersApi = client.newCheckoutOrdersApi();
try {
CheckoutOrder order = checkoutOrdersApi.fetch("checkoutOrderID-123");
// Order has been successfully fetched, we can get some info, e.g. HTML Snippet
// This snippet can be embedded into your website/templates/etc
String htmlSnippet = order.getHtmlSnippet();
System.out.println(htmlSnippet);
// Or print a whole order data
System.out.println(order);
} catch (IOException e) {
System.out.println("Connection problem: " + e.getMessage());
} catch (ApiException e) {
System.out.println("API issue: " + e.getMessage());
}
}
}
The Java SDK uses the slf4j library as an abstraction for various logging frameworks. We have not provided any back-end implementation. Choose an implementation that applies to your project.
For more information, see the slf4j documentation.
You can debug and check all the requests and responses made via the SDK. In order to enable debug mode you need to change the logging level of your Logger to "debug".
For example, if you use log4j2
logger, put this line to your log4j2.properties
file:
rootLogger.level = debug
The output will look like:
[18-Oct-25 14:16:09:652] [DEBUG] [HttpUrlConnectionTransport:312] - DEBUG MODE: Request
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
GET: https://api.playground.klarna.com/customer-token/v1/tokens/TOKEN
Headers: Headers: {User-Agent=[Language/Java_1.8.0_161 (Vendor/Oracle Corporation; VM/Java HotSpot(TM) 64-Bit Server VM) Library/Klarna.kco_rest_java_3.0.0 OS/Mac OS X_10.13.4], Content-Type=[application/json]}
Payout:
DEBUG MODE: Response
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Headers: {null=[HTTP/1.1 200 OK], Server=[openresty], Connection=[keep-alive], Vary=[Accept-Encoding], Content-Length=[166], Date=[Thu, 25 Oct 2018 12:16:09 GMT], Content-Type=[application\/json]}
Payout: {"status" : "ACTIVE","payment_method_type" : "INVOICE"}
At Klarna, we strive toward achieving the highest possible quality for our products. Therefore, we require you to follow these guidelines if you wish to contribute.
To contribute, the following criteria needs to be fulfilled:
If you have any questions concerning this product or the implementation, please create an issue: https://github.com/klarna/kco_rest_java/issues/new/choose
Use an official Klarna Contact us form (https://klarna.com) if you have a question about the integration.
The Klarna Checkout REST Java SDK is released under Apache License, Version 2.0