Skip to content

Unofficial TypeScript based Node.js SDK for Razorpay API.

License

Notifications You must be signed in to change notification settings

knoxpo/razorpay-typescript

Repository files navigation

Razorpay TypeScript SDK

npm Build Status

[UNOFFICIAL] TypeScript based Node.js SDK for Razorpay API.

Read up here for getting started and understanding the payment flow with Razorpay: https://docs.razorpay.com/docs/getting-started

Installation

npm i razorpay-typescript

Documentation

Documentation of Razorpay's API and their usage is available at https://docs.razorpay.com

All New Razorpay Webhook Handler

Introducing RazorWebhook, a wrapper class for simplifying Webhooks actions for Razorpay Webhook Payload. You can now focus more on your core logic than managing event types.

// --------------------
// Webhooks
// --------------------

const razorpayPayload: IRazorWebHookPayload = {
  "entity":"event",
  "account_id":"acc_BFQ7uQEaa7j2z7",
  "event":"subscription.activated",
  "contains":[
    "subscription"
  ],
  "payload":{
    "subscription":{
      "entity":{
        ...Your payload details ...
      }
    }
  },
  "created_at":1567690383
};
const wh: RazorWebhook = new RazorWebhook(razorpayPayload);


/// Setup your custom handler actions
wh.handler.subscriptionActivated = (pl) => {
  /// ----- Your logic code.
  return Promise.resolve();
};

wh.handler.subscriptionUpdated = (pl) => {
  /// ----- Your logic code.
  return Promise.resolve();
};

const execute: Promise<any> = await wh.execute();

Basic Usage

Instantiate the razorpay instance with key_id & key_secret. You can obtain the keys from the dashboard app (https://dashboard.razorpay.com/#/app/keys)

const instance: Razorpay = new Razorpay({
  authKey: {
      key_id: 'YOUR_KEY_ID',
      key_secret: 'YOUR_KEY_SECRET', 
  },
  headers: {... Your Headers ...},
});

The resources can be accessed via the instance. All the methods invocations follows the namespaced signature

// API signature
// {razorpayInstance}.{resourceName}.{methodName}(resourceId [, params])
// Build with neat response interfaces

// example
const paymentDetails: IRazorPaymentId = await instance.payments.fetch(paymentId);

// Additional neat functionality than official nodejs SDK
// now even store instances of all services
// with neat instance classes
const payment: RazorPayment = instance.payments.payment('your_payementId');
payment.transfer([
  {
      account: 'acc_7HGyrafdeQDGfX',
      amount: 100,
      currency: 'INR'
  }
]);

Every resource method returns a promise.

instance.payments
  .all({
    from: '2016-08-01',
    to: '2016-08-20',
  })
  .then(response => {
    // handle success
  })
  .catch(error => {
    // handle error
  });

TODO

  1. Add detailed documentation to ease implementation curve.
  2. Further simplification of the data interfaces and introduce a failure response interface.
  3. Improve validation for params required and ignore which are params not.

Development

npm install

Build

npm run build

Release

  1. Switch to master branch. Make sure you have the latest changes in the local master
  2. Update the CHANGELOG.md & bump the version in package.json
  3. Commit
  4. Tag the release & push to Github
  5. Create a release on GitHub using the website with more details about the release
  6. Publish to npm with npm publish command

Licence

MIT Licensed. See LICENSE.txt for more details


Razorpay [Unofficial SDK for TypeScript] is a Knoxpo original.

Releases

No releases published

Packages

No packages published