Skip to content

ukrocks007/ondc-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ondc-node

This library can be used to integrate ONDC in JavaScript based applications.

Package is developed in TypeScript and will work with Node.Js & other JavaScript based stacks.

Introduction 👋

ONDC stands for Open Network for Digital Commernce.

ONDC is an Open Network which makes it easy for any buyer and seller to engage in a transactions.

LOGO

How to install? 👀

npm i ondc-node --save

☝️ Using to call APIs

Initialization

const ondc = require('ondc-node');
const instance = new ondc.ONDC({
    host: "http://localhost:5000",
    bapId: "bap.com",
    bapUri: "https://bap.com/beckn",
    bppId: "bpp.com",
    bppUri: "https://bpp.com/beckn",
    country: "IND",
    city: "std:080",
    ttl: "P1M"
});

Search an Item

const response = await instance.search({
        "item": {
            "descriptor": {
                "name": "ABC Aata"
            }
        },
        "fulfillment": {
            "end": {
                "location": {
                    "gps": "12.4535445,77.9283792"
                }
            }
        }
    })

✌️ Using as Express Middleware

const ONDC = require('ondc-node');
const express = require("express");

const app = express();
app.use(express.json());

app.use(ONDC.Middleware({"on_search": onSearchHandler, "init": initHandler}));

🤩 Effortless Authorization 🔐 with ONDC

You can use ondc.createAuthorizationHeader function to create Authorization header signature.

    const ondc = require('ondc-node');
    // Private key & Public keys are must for Auth to work
    const instance = new ondc.ONDC({
        host: "http://localhost:5000",
        bapId: "bap.com",
        bapUri: "https://bap.com/beckn",
        bppId: "bpp.com",
        bppUri: "https://bpp.com/beckn",
        country: "IND",
        city: "std:080",
        ttl: "P1M",
        publicKey: "<Public Key>",
        privateKey: "<Private Key>",
        uniqueKey: "dev.test.ondc-node.com",
        subscriberId: "<Gateway Address>",
    });

    let body = {
        "item": {
            "descriptor": {
                "name": "ABC Aata"
            }
        },
        "fulfillment": {
            "end": {
                "location": {
                    "gps": "12.4535445,77.9283792"
                }
            }
        }
    };
    // apiKey is sent in Authorization Header
    instance.apiKey = await instance.createAuthorizationHeader(body);
    const response = await instance.search(body)

Next function is ondc.verifyHeader which is used to verify the Authorization header signature with senders Public Keys.

You can fetch the public key from Gateway using /lookup call.

    const publicKey = "<Public key of Sender>";

    // verifyHeader return true/false
    let output = await ondc.verifyHeader(req.header.Authorization, {
        signing_public_key: publicKey
    }, req.body);

    console.log(`output: ${output}`);

Reference 📚

Functions Covered 🚀

Async Function Callback Function Other Function
search on_search get_cancellation_reasons
select on_select cancellation_reasons
init on_init get_return_reasons
confirm on_confirm return_reasons
status on_status get_rating_categories
track on_track rating_categories
cancel on_cancel get_feedback_categories
update on_update feedback_categories
rating on_rating get_feedback_form
support on_support feedback_form

Content