klarna-checkout-sdk
TypeScript icon, indicating that this package has built-in type declarations

1.2.6 • Public • Published

Klarna checkout SDK

Klarna checkout klarna-checkout-sdk npm package for Node.js.

Klarna Checkout logoNode.js logo

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: 'john.doe@outlook.com',
                street_address: 'Johnintie 4 B 67',
                postal_code: '00910',
                city: 'Helsinki',
                phone: '+358401234567',
                country: 'FI',
            },
            shipping_address: {
                given_name: 'John',
                family_name: 'Doe',
                email: 'john.doe@outlook.com',
                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: 'john.doe@outlook.com',
        street_address: 'Johnintie 4 B 67',
        postal_code: '00910',
        city: 'Helsinki',
        phone: '+358401234567',
        country: 'FI',
    },
    shipping_address: {
        given_name: 'John',
        family_name: 'Doe',
        email: 'john.doe@outlook.com',
        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,
);

Readme

Keywords

none

Package Sidebar

Install

npm i klarna-checkout-sdk

Weekly Downloads

0

Version

1.2.6

License

MIT

Unpacked Size

66.2 kB

Total Files

98

Last publish

Collaborators

  • romkin7