klarna-checkout-sdk
v1.2.6
Published
Klarna checkout `klarna-checkout-sdk` npm package for Node.js.
Downloads
8
Readme
Klarna checkout SDK
Klarna checkout klarna-checkout-sdk
npm package for Node.js.
Promise based client for node.js, for interaction with Klarna checkout API V3.
Setting up Klarna Merchant playground portal
Sign up to playground Klarna Merchant portal & and Create your Klarna checkout API credentials under Settings.
Install
You can install klarna-checkout-sdk
with npm, yarn or pnpm.
Using npm:
npm install klarna-checkout-sdk --save
Using yarn:
yarn add klarna-checkout-sdk
Using pnpm:
pnpm add klarna-checkout-sdk
Usage
klarna-checkout-sdk
is shipped with full support for TypeScript, ESM Modules
and Commonjs. This means that package can be used with import
& export
syntax and module.exports
& require
syntax.
Usage with TypeScript
Example code:
import { initialize, createOrder, getOrder, updateOrder, markAnOrderAsAborted, IKlarnaSDK, IKlarnaOrder } from 'klarna-checkout-sdk';
/** initialize klarna SDK, with your credentials, that you can get from playground merchant portal settings page. */
const klarnaSDK: IKlarnaSDK = initialize(
{
eid: process.env.EID,
secret: process.env.KLARNA_SECRET,
live: process.env.NODE_ENV === 'production' ? true : false
}
);
const order: IKlarnaOrder = {
order_lines: [
{
reference: 'test-id-one',
name: 'test product',
unit_price: 2,
quantity: 1,
total_tax_amount: 0.39,
total_discount_amount: 0,
total_amount: 2,
tax_rate: 2400,
image_uri:
'https://res.cloudinary.com/image/upload/v1662557938/dpcd0a3jqbbozy1ygmxt.jpg',
uri: 'https://teststore.com/lp:t/test-id-one',
type: 'physical',
},
],
order_amount: 2,
order_tax_amount: 0.39,
purchase_country: 'US',
purchase_currency: 'USD',
locale: 'us-US',
merchant_urls: {
checkout: 'http://localhost:3000/ostoskori',
confirmation: 'http://localhost:3000/ostoskori/vahvistus',
push: 'http://localhost:8080/klarna/push',
terms: 'http://localhost:3000/ehdot',
},
billing_adress: {
given_name: 'John',
family_name: 'Doe',
email: '[email protected]',
street_address: 'Johnintie 4 B 67',
postal_code: '00910',
city: 'Helsinki',
phone: '+358401234567',
country: 'FI',
},
shipping_address: {
given_name: 'John',
family_name: 'Doe',
email: '[email protected]',
street_address: 'Johnintie 4 B 67',
postal_code: '00910',
city: 'Helsinki',
phone: '+358401234567',
country: 'FI',
},
};
/** Create order and render payment info in the client from html_snippet property. */
const newKlarnaOrder = await createOrder(klarnaSDK, order);
/** Get order and render checkout snippet. */
const klarnaOrder = await getOrder(klarnaSDK, newKlarnaOrder.order_id);
/** Update order and render checkout snippet. */
const updatedKlarnaOrder = await updateOrder(klarnaSDK, klarnaOrder);
/** Mark an order as aborted and render confirmation snippet. */
const abortedOrder = await markAnOrderAsAborted(klarnaSDK, klarnaOrder.order_id);
Example with Express, Node.js & TypeScript
klarna.ts
import { IKlarnaSDK, initialize } from 'klarna-checkout-sdk';
const klarna = (): IKlarnaSDK => {
return initialize({
eid: process.env.EID,
secret: process.env.KLARNA_SECRET,
live: process.env.NODE_ENV === 'production' ? true : false,
});
};
export default klarna;
routes/klarna.routes.ts
import { Router, Request, Response } from 'express';
import klarna from '../klarna';
import { createOrder, getOrder, IKlarnaOrder } from 'klarna-checkout-sdk';
const router = Router();
router.post(
'/klarna/create-order',
async (request: Request, response: Response) => {
try {
const klarnaSDK = klarna();
const klarnaOrder = request.body as IKlarnaOrder;
const newOder = await createOrder(klarnaSDK, klarnaOrder);
return response.status(201).json({ order: newOder });
} catch (error) {
return response
.status(500)
.json({ message: 'some error.' });
}
},
);
router.post('/klarna/push', async (request: Request, response: Response) => {
try {
const orderId = request.query.klarna_order_id as unknown as string;
const klarnaSDK = klarna();
const klarnaOrder = await getOrder(klarnaSDK, orderId);
return response.status(201).json({ order: klarnaOrder });
} catch (error) {
return response
.status(500)
.json({ message: 'some error.' });
}
});
router.get(
'/klarna/get-order/:orderId',
async (request: Request, response: Response) => {
try {
const orderId = request.params.orderId;
const klarnaSDK = klarna();
const klarnaOrder = await getOrder(klarnaSDK, orderId);
return response.status(201).json({ order: klarnaOrder });
} catch (error) {
return response
.status(500)
.json({ message: 'some error.' });
}
},
);
export default router;
Usage with Commonjs
Example code:
const {
initialize,
createOrder,
getOrder,
updateOrder,
markAnOrderAsAborted,
} = require('klarna-checkout-sdk');
/** initialize klarna SDK, with your credentials, that you can get from playground merchant portal settings page. */
const klarnaSDK = initialize({
eid: process.env.EID,
secret: process.env.KLARNA_SECRET,
live: process.env.NODE_ENV === 'production' ? true : false,
});
const order = {
order_lines: [
{
reference: 'test-id-one',
name: 'test product',
unit_price: 2,
quantity: 1,
total_tax_amount: 0.39,
total_discount_amount: 0,
total_amount: 2,
tax_rate: 2400,
image_uri:
'https://res.cloudinary.com/image/upload/v1662557938/dpcd0a3jqbbozy1ygmxt.jpg',
uri: 'https://teststore.com/lp:t/test-id-one',
type: 'physical',
},
],
order_amount: 2,
order_tax_amount: 0.39,
purchase_country: 'US',
purchase_currency: 'USD',
locale: 'us-US',
merchant_urls: {
checkout: 'http://localhost:3000/ostoskori',
confirmation: 'http://localhost:3000/ostoskori/vahvistus',
push: 'http://localhost:8080/klarna/push',
terms: 'http://localhost:3000/ehdot',
},
billing_adress: {
given_name: 'John',
family_name: 'Doe',
email: '[email protected]',
street_address: 'Johnintie 4 B 67',
postal_code: '00910',
city: 'Helsinki',
phone: '+358401234567',
country: 'FI',
},
shipping_address: {
given_name: 'John',
family_name: 'Doe',
email: '[email protected]',
street_address: 'Johnintie 4 B 67',
postal_code: '00910',
city: 'Helsinki',
phone: '+358401234567',
country: 'FI',
},
};
/** Create order and render payment info in the client from html_snippet property. */
const newKlarnaOrder = await createOrder(klarnaSDK, order);
/** Get order and render checkout snippet. */
const klarnaOrder = await getOrder(klarnaSDK, newKlarnaOrder.order_id);
/** Update order and render checkout snippet. */
const updatedKlarnaOrder = await updateOrder(klarnaSDK, klarnaOrder);
/** Mark an order as aborted and render confirmation snippet. */
const abortedOrder = await markAnOrderAsAborted(
klarnaSDK,
klarnaOrder.order_id,
);