1.2.3 • Published 2 years ago

klarna-checkout-sdk v1.2.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Klarna checkout SDK

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,
);
1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago