Skip to main content

What are Webhooks? Example use case of payment Gateway.

In this article, we will see what is webhooks? and a use case for it and how to test webhook locally.

Webhooks:

Webhooks are just like callbacks but the only difference is there are HTTP callbacks.
It is triggered by some event in web application.
Let's see this use-case in detail.

UseCase:
Suppose we have an online site which sells T-shirts and for that we need some payment gateway. 
For that, we have decided to use a Razorpay payment gateway.
So here the flow will be somewhat like this.

Client-side:
Users log in to the website and add some T-shirts into the cart and do checkout.

Backend side when a user does checkout:
Will create an order for the user with payment status 'pending' and will log
that in our database with respect to that user.
Then we create a payment order for the user using Razorpay APIs and send a payment checkout link to the user. (Consider this payment checkout link is of third party i.e Razorpay)

How will we know if the user has done with checkout or started payment? Or he may pay for the order the next day.
So here we can't know the status of the user as the payment link is third party.

For this purpose, Razorpay has provided a webhook to let us know about the different life cycles of that transaction.
Like the user started payment but failed then again started and paid money successfully.
So that we can update the latest payment status of his order in our database.

Webhook Example:
Login to Razorpay and create an account(More information check documentation). 
Then in setting, you have a webhook URL option.
Here you have to configure a URL. 
So whenever a user pays money in the cart checkout, Razorpay will send an HTTP POST payload to your configured URL regarding the status of the payment so that you can update details in your database.

As for testing this thing we need a URL
(One we can create using AWS API gateway and can add a lambda to it. 
And then we can check logs of lambda for webhook event information)

But what if you want to test webhooks locally?

There are 2 options:

Just login and then create a requestbin.
Then you will get an endpoint URL that you can configure to webhook and can watch any request to that URL.
Note:(Here you can start quick testing by creating and canceling subscription in test mode for Razorpay and then capture this event.)

Just download ngrok for your operating system.
Run command (Inside the ngrok terminal): ngrok http 80 (This will expose your local server to public)
You will get a ngrok URL which you can configure as webHook URL.


Comments

  1. This comment has been removed by a blog administrator.

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete

Post a Comment

Popular posts from this blog

Node.js: Extract text from image using Tesseract.

In this article, we will see how to extract text from images using Tesseract . So let's start with this use-case, Suppose you have 300 screenshot images in your mobile which has an email attribute that you need for some reason like growing your network or for email marketing. To get an email from all these images manually into CSV or excel will take a lot of time. So now we will check how to automate this thing. First, you need to install Tesseract OCR( An optical character recognition engine ) pre-built binary package for a particular OS. I have tested it for Windows 10. For Windows 10, you can install  it from here. For other OS you make check  this link. So once you install Tesseract from windows setup, you also need to set path variable probably, 'C:\Program Files\Tesseract-OCR' to access it from any location. Then you need to install textract library from npm. To read the path of these 300 images we can select all images and can rename it to som...

Globant part 1

 1)call,apply,bind example? Ans: a. call Method: The call method is used to call a function with a given this value and arguments provided individually. Javascript code: function greet(name) {   console.log(`Hello, ${name}! I am ${this.role}.`); } const person = {   role: 'developer' }; greet.call(person, 'Alice'); // Output: Hello, Alice! I am developer. In this example, call invokes the greet function with person as the this value and passes 'Alice' as an argument. b. apply Method: The apply method is similar to call, but it accepts arguments as an array. Javascript code: function introduce(language1, language2) {   console.log(`I can code in ${language1} and ${language2}. I am ${this.name}.`); } const coder = {   name: 'Bob' }; introduce.apply(coder, ['JavaScript', 'Python']); // Output: I can code in JavaScript and Python. I am Bob. Here, apply is used to invoke introduce with coder as this and an array ['JavaScript', 'Pyt...

Globlant part 2

 1)JWT token:           const jwt = require ( 'jsonwebtoken' ); A JWT token consists of three parts separated by dots ( . ): Header : Contains metadata about the type of token and the hashing algorithm used. Payload (Claims) : Contains the claims or statements about the subject of the token, such as user ID, roles, etc. Signature : Verifies that the sender of the JWT is who it says it is and ensures that the message wasn't changed along the way. It is header +payload +secret key. Methods: const newToken = jwt. sign (payload, secretKey, { expiresIn : '1h' }); Use verify() when you need to ensure the token's integrity and authenticity. Use decode() when you only need to extract information from the token and don't need to verify its signature. 2)Window ,this,global: In nodejs this and global refers to same global methods and varibales just that no dom related things that are in window. In nodejs no window. 3)a.getSum(); // Define the custom method getSu...