SlideShare a Scribd company logo
How to
Integrate
Paytm Payment
Gateway using
ReactJS in
Seven Easy
Steps
www.bacancytechnology.com
Introduction
01
Are you stuck with a requirement of
integrating a payment gateway into your
project? Are you aggressively looking for a
simple tutorial regarding the same? If yes,
this tutorial: Integrate Paytm payment
gateway using ReactJs is for you! In this
step-by-step guide, we will learn how to
implement a payment gateway in seven
easy steps. So, without further ado, let’s get
started with our tutorial.
02
Tutorial Goal:
Integrate
Paytm
Payment
Gateway
using ReactJS
03
You might be wondering what we are going
to do in this tutorial. We will build a small
demo application consisting of a button
‘Pay Now’. With the click of the button a
modal will be displayed as shown below.
The library allows you to customize the
modal and add various payment methods
the way you want.
04
Create a new
Paytm
developer
account
05
We would need to create new secret keys by
creating a new developer account.


Go to https://developer.paytm.com/, login if
you are already a Paytm user, or you can
create a new account.
06
Collect the
API keys
07
Once you are logged in successfully, you can
directly go to Dashboard and check the Test
API Details. Feel free to test the APIs using
the test API keys.
08
Create a
ReactJS
Application
09
Use the following command to create a new
reactJs application.










A new project would be created with the
default folder structure as shown below.
create-react-app < app - name >
10
Adding the
scripts to
index.html
11
Hire ReactJS developer from us to
add varied skillset to your existing
in-house development. We can help
you develop next-gen web solution
from ideation to development to
final delivery
< script type=”text/javascript”
crossorigin=”anonymous”
src=”https://securegw-
stage.paytm.in/merchantpgpui/checkoutjs/
merchants/.js” >< /script >
You need to link the Paytm library using the
script tag in public/index.html file. For that
use the below snippet.




12
Logic & UI:
Paytm
Payment
Integration
13
Create a new file paytmButton.js inside
/paytm-button folder. This file will contain
the main logic and functionality for the
Paytm payment integration using ReactJS.


The user interface would have a “Pay Now”
button that will trigger the Paytm checkout
modal.


Create a new function initializePaytm() that
will contain all the initialization
configurations and token generation steps
that will be triggered on page load using
useEffect.
useEffect(() => {
initialize();
}, []);
14
The initializePaytm() function will make use
of the Paytm checksum file and it will
generate a token.
const initialize = () => {
let orderId = "Order_" + new
Date().getTime();
// Sandbox Credentials
let mid = ""; // Merchant ID
let mkey = ""; // Merchant Key
var paytmParams = {};
paytmParams.body = {
requestType: "Payment",
mid: mid,
websiteName: "WEBSTAGING",
orderId: orderId,
callbackUrl:
"https://merchant.com/callback",
txnAmount: {
value: 100,
currency: "INR",
},
15
userInfo: {
custId: "1001",
},
};
PaytmChecksum.generateSignature(
JSON.stringify(paytmParams.body),
mkey
).then(function (checksum) {
console.log(checksum);
paytmParams.head = {
signature: checksum,
};
var post_data =
JSON.stringify(paytmParams);
var options = {
/* for Staging */
// hostname: "securegw-stage.paytm.in"
/* for Production */,
hostname: "securegw.paytm.in",


16
port: 443,
path: `/theia/api/v1/initiateTransaction?
mid=${mid}&orderId=${orderId}`,
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": post_data.length,
},
};
var response = "";
var post_req = https.request(options,
function (post_res) {
post_res.on("data", function (chunk) {
response += chunk;
});
post_res.on("end", function () {
console.log("Response: ", response);
// res.json({data: JSON.parse(response),
orderId: orderId, mid: mid, amount:
amount});
setPaymentData({
17
...paymentData,
token:
JSON.parse(response).body.txnToken,
order: orderId,
mid: mid,
amount: 100,
});
});
});
post_req.write(post_data);
post_req.end();
});
};
18
Explanation
19
This method is called on page load
which will return a transaction token
from Paytm which will be later used for
initiating the Paytm checkout modal.
To retrieve the token, we will make an
API call to
/theia/api/v1/initiateTransaction which
will expect a basic transaction object in
the request body along with a hashed
value created using the transaction
object. The paytmParam.body is a
transaction object with basic fields like
orderId, value, and currency.
paytmParams.body = { ... };
20
A hash value should be using this
transaction object. For that Paytm
provides a library – PaytmChecksum
using which we can generate a hashed
value by passing the transaction object
as arguments.
This hash value will be sent along with
the transaction object in the
initiateTransaction API and will provide
the transaction token in response. Later
this token will be used when the user
clicks on the ‘Pay Now’ button and will
be helpful for triggering the payment
checkout modal.
PaytmChecksum.generateSignature(
JSON.stringify(paytmParams.body),mkey
).then(function(checksum){ ... // logic }
21
Create a new function makePayment() that
will be triggered on click of the button,
which will use the already generated token
and display the checkout modal to the user.
In this function, you can modify the style of
the Paytm checkout modal and change the
color code and add your logo.


const makePayment = () => {
var config = {
"root":"",
"style": {
"bodyBackgroundColor": "#fafafb",
"bodyColor": "",
"themeBackgroundColor":
"#0FB8C9",
"themeColor": "#ffffff",
"headerBackgroundColor": "#284055",
"headerColor": "#ffffff",
"errorColor": "",
"successColor": "",
22
"card": {
"padding": "",
"backgroundColor": ""
}
},
"data": {
"orderId": paymentData.order,
"token": paymentData.token,
"tokenType": "TXN_TOKEN",
"amount": paymentData.amount /*
update amount */
},
"payMode": {
"labels": {},
"filter": {
"exclude": []
},
23
"order": [
"CC",
"DC",
"NB",
"UPI",
"PPBL",
"PPI",
"BALANCE"
]
},
"website": "WEBSTAGING",
"flow": "DEFAULT",
"merchant": {
"mid": paymentData.mid,
"redirect": false
},
"handler": {
"transactionStatus":
function transactionStatus(paymentStatus){
console.log(paymentStatus);
},
24
"notifyMerchant":
function notifyMerchant(eventName,data){
console.log("Closed");
}
}
};
if (window.Paytm &&
window.Paytm.CheckoutJS) {
window.Paytm.CheckoutJS.init(config).
then(function onSuccess() {
window.Paytm.CheckoutJS.invoke();
}).catch(function onError(error) {
console.log("Error => ", error);
});
}}
25
Call the makePayment() method on click
event of the button.




return (
< div >
{loading ? (
< img src="https://c.tenor.com/I6kN-
6X7nhAAAAAj/loading-buffering.gif" / >
) : (
< button onClick={makePayment}>Pay
Now< /button >
)}
< /div >
);
26
Import
PaytmButton
in App.js
27
Once we are done with the main logic
implementation it’s time to import the file
into App.js.


import "./App.css";
import { PaytmButton } from "./paytm-
button/paytmButton";
function App() {
return (
< div >
< PaytmButton / >
< /div >
);
}
export default App;
28
Run the
Server
29
So, finally, we are done with the tutorial:
How to Integrate Paytm Payment Gateway
using ReactJS. Now using the below
command, run your server.


npm start




Visit http://localhost:3000/ and test the
demo app.
The entire source code is available on the
github repo: paytm-payment-gateway-
integration. Feel free to clone the repository
and play around with the code.
30
Conclusion
31
I hope the tutorial has helped you learn how
to integrate Paytm payment gateway using
ReactJS. We value your feedback and
suggestions, so feel free to write back. Our
team is trying to explore and add more such
topics to ReactJS tutorials. If you are a
ReactJS enthusiast, visit the ReactJS
tutorials page without wasting your time,
clone the github repository, and polish your
technical side.
32
Thank You
www.bacancytechnology.com

More Related Content

PPTX
DBMS - Database Management System
PPT
DB security
PPTX
Online Hostel Management System Proposal
PPTX
Functions of dbms
PPT
Data models
PPTX
Distributed database
PPTX
Use case of hospital managment system
PDF
Visual Basic IDE Intro.pdf
DBMS - Database Management System
DB security
Online Hostel Management System Proposal
Functions of dbms
Data models
Distributed database
Use case of hospital managment system
Visual Basic IDE Intro.pdf

What's hot (20)

PPTX
Security of the database
PPTX
Adbms 3 main characteristics of the database approach
PDF
Flipkart Software requirements specification SRS
PPT
Basic DBMS ppt
PPT
Database Objects
PPTX
Basic Concept Of Database Management System (DBMS) [Presentation Slide]
PPT
Files Vs DataBase
PPTX
Database security
PPTX
Structured Query Language (SQL)
PPTX
Library management system
PPT
PPT
Entity Relationship Diagram
PPTX
Payroll management system
DOCX
[[Srs]] online shopping website for TYBSC IT
PDF
Grocery Station- Database Management System Project
PPTX
Introduction to SQL
ODP
Ms sql-server
PPT
File organization 1
PPTX
Basic sql Commands
PPTX
UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...
Security of the database
Adbms 3 main characteristics of the database approach
Flipkart Software requirements specification SRS
Basic DBMS ppt
Database Objects
Basic Concept Of Database Management System (DBMS) [Presentation Slide]
Files Vs DataBase
Database security
Structured Query Language (SQL)
Library management system
Entity Relationship Diagram
Payroll management system
[[Srs]] online shopping website for TYBSC IT
Grocery Station- Database Management System Project
Introduction to SQL
Ms sql-server
File organization 1
Basic sql Commands
UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...
Ad

Similar to How to integrate paytm payment gateway using react js in seven easy steps (20)

PDF
java and javascript api dev guide
PDF
Razorpay payment gateway integration in laravel and vue js 2
PDF
Paytm integration in swift
PDF
Razorpay Payment Gateway Integration In iOS Swift
PDF
June2013 Meetup : In-App Billing by Soham & Senthil
PDF
Abandoned carts
PDF
How to build twitter bot using golang from scratch
PPTX
Barcelona Developers Conference 2011
PDF
Idram merchant api- Idram Payment System merchant interface description
ODP
eZ Publish Workflows and Payment Gateways
PPTX
Battle of React State Managers in frontend applications
PDF
https://uii.io/ref/hmaadi
PPTX
Payment Request API with a React high order component
PDF
Let'Swift 2024 - Plugin 패턴을 이용하여 기능 확장하기
PDF
InReceipts Plug N Play Client & REST APIs for billing softwares v1.0
DOCX
Chat php
PDF
Creating an Uber Clone - Part XXXI - Transcript.pdf
PPTX
2012 SVCodeCamp: In App Payments with HTML5
PPTX
How to Create a Dynamic Report in Odoo 17
PPT
Salesforce and sap integration
java and javascript api dev guide
Razorpay payment gateway integration in laravel and vue js 2
Paytm integration in swift
Razorpay Payment Gateway Integration In iOS Swift
June2013 Meetup : In-App Billing by Soham & Senthil
Abandoned carts
How to build twitter bot using golang from scratch
Barcelona Developers Conference 2011
Idram merchant api- Idram Payment System merchant interface description
eZ Publish Workflows and Payment Gateways
Battle of React State Managers in frontend applications
https://uii.io/ref/hmaadi
Payment Request API with a React high order component
Let'Swift 2024 - Plugin 패턴을 이용하여 기능 확장하기
InReceipts Plug N Play Client & REST APIs for billing softwares v1.0
Chat php
Creating an Uber Clone - Part XXXI - Transcript.pdf
2012 SVCodeCamp: In App Payments with HTML5
How to Create a Dynamic Report in Odoo 17
Salesforce and sap integration
Ad

More from Katy Slemon (20)

PDF
React Alternatives Frameworks- Lightweight Javascript Libraries.pdf
PDF
Data Science Use Cases in Retail & Healthcare Industries.pdf
PDF
How Much Does It Cost To Hire Golang Developer.pdf
PDF
What’s New in Flutter 3.pdf
PDF
Why Use Ruby On Rails.pdf
PDF
How Much Does It Cost To Hire Full Stack Developer In 2022.pdf
PDF
How to Implement Middleware Pipeline in VueJS.pdf
PDF
How to Build Laravel Package Using Composer.pdf
PDF
Sure Shot Ways To Improve And Scale Your Node js Performance.pdf
PDF
How to Develop Slack Bot Using Golang.pdf
PDF
IoT Based Battery Management System in Electric Vehicles.pdf
PDF
Understanding Flexbox Layout in React Native.pdf
PDF
The Ultimate Guide to Laravel Performance Optimization in 2022.pdf
PDF
New Features in iOS 15 and Swift 5.5.pdf
PDF
How to Hire & Manage Dedicated Team For Your Next Product Development.pdf
PDF
Choose the Right Battery Management System for Lithium Ion Batteries.pdf
PDF
Flutter Performance Tuning Best Practices From the Pros.pdf
PDF
Angular Universal How to Build Angular SEO Friendly App.pdf
PDF
How to Set Up and Send Mails Using SendGrid in NodeJs App.pdf
PDF
Ruby On Rails Performance Tuning Guide.pdf
React Alternatives Frameworks- Lightweight Javascript Libraries.pdf
Data Science Use Cases in Retail & Healthcare Industries.pdf
How Much Does It Cost To Hire Golang Developer.pdf
What’s New in Flutter 3.pdf
Why Use Ruby On Rails.pdf
How Much Does It Cost To Hire Full Stack Developer In 2022.pdf
How to Implement Middleware Pipeline in VueJS.pdf
How to Build Laravel Package Using Composer.pdf
Sure Shot Ways To Improve And Scale Your Node js Performance.pdf
How to Develop Slack Bot Using Golang.pdf
IoT Based Battery Management System in Electric Vehicles.pdf
Understanding Flexbox Layout in React Native.pdf
The Ultimate Guide to Laravel Performance Optimization in 2022.pdf
New Features in iOS 15 and Swift 5.5.pdf
How to Hire & Manage Dedicated Team For Your Next Product Development.pdf
Choose the Right Battery Management System for Lithium Ion Batteries.pdf
Flutter Performance Tuning Best Practices From the Pros.pdf
Angular Universal How to Build Angular SEO Friendly App.pdf
How to Set Up and Send Mails Using SendGrid in NodeJs App.pdf
Ruby On Rails Performance Tuning Guide.pdf

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Electronic commerce courselecture one. Pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Approach and Philosophy of On baking technology
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
A Presentation on Artificial Intelligence
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
cuic standard and advanced reporting.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Chapter 3 Spatial Domain Image Processing.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectral efficient network and resource selection model in 5G networks
Network Security Unit 5.pdf for BCA BBA.
MYSQL Presentation for SQL database connectivity
Electronic commerce courselecture one. Pdf
Encapsulation_ Review paper, used for researhc scholars
20250228 LYD VKU AI Blended-Learning.pptx
The AUB Centre for AI in Media Proposal.docx
Approach and Philosophy of On baking technology
The Rise and Fall of 3GPP – Time for a Sabbatical?
Unlocking AI with Model Context Protocol (MCP)
A Presentation on Artificial Intelligence
Reach Out and Touch Someone: Haptics and Empathic Computing
Big Data Technologies - Introduction.pptx
Programs and apps: productivity, graphics, security and other tools
cuic standard and advanced reporting.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Assigned Numbers - 2025 - Bluetooth® Document
“AI and Expert System Decision Support & Business Intelligence Systems”
Chapter 3 Spatial Domain Image Processing.pdf

How to integrate paytm payment gateway using react js in seven easy steps

  • 1. How to Integrate Paytm Payment Gateway using ReactJS in Seven Easy Steps www.bacancytechnology.com
  • 3. Are you stuck with a requirement of integrating a payment gateway into your project? Are you aggressively looking for a simple tutorial regarding the same? If yes, this tutorial: Integrate Paytm payment gateway using ReactJs is for you! In this step-by-step guide, we will learn how to implement a payment gateway in seven easy steps. So, without further ado, let’s get started with our tutorial. 02
  • 5. You might be wondering what we are going to do in this tutorial. We will build a small demo application consisting of a button ‘Pay Now’. With the click of the button a modal will be displayed as shown below. The library allows you to customize the modal and add various payment methods the way you want. 04
  • 7. We would need to create new secret keys by creating a new developer account. Go to https://developer.paytm.com/, login if you are already a Paytm user, or you can create a new account. 06
  • 9. Once you are logged in successfully, you can directly go to Dashboard and check the Test API Details. Feel free to test the APIs using the test API keys. 08
  • 11. Use the following command to create a new reactJs application. A new project would be created with the default folder structure as shown below. create-react-app < app - name > 10
  • 13. Hire ReactJS developer from us to add varied skillset to your existing in-house development. We can help you develop next-gen web solution from ideation to development to final delivery < script type=”text/javascript” crossorigin=”anonymous” src=”https://securegw- stage.paytm.in/merchantpgpui/checkoutjs/ merchants/.js” >< /script > You need to link the Paytm library using the script tag in public/index.html file. For that use the below snippet. 12
  • 15. Create a new file paytmButton.js inside /paytm-button folder. This file will contain the main logic and functionality for the Paytm payment integration using ReactJS. The user interface would have a “Pay Now” button that will trigger the Paytm checkout modal. Create a new function initializePaytm() that will contain all the initialization configurations and token generation steps that will be triggered on page load using useEffect. useEffect(() => { initialize(); }, []); 14
  • 16. The initializePaytm() function will make use of the Paytm checksum file and it will generate a token. const initialize = () => { let orderId = "Order_" + new Date().getTime(); // Sandbox Credentials let mid = ""; // Merchant ID let mkey = ""; // Merchant Key var paytmParams = {}; paytmParams.body = { requestType: "Payment", mid: mid, websiteName: "WEBSTAGING", orderId: orderId, callbackUrl: "https://merchant.com/callback", txnAmount: { value: 100, currency: "INR", }, 15
  • 17. userInfo: { custId: "1001", }, }; PaytmChecksum.generateSignature( JSON.stringify(paytmParams.body), mkey ).then(function (checksum) { console.log(checksum); paytmParams.head = { signature: checksum, }; var post_data = JSON.stringify(paytmParams); var options = { /* for Staging */ // hostname: "securegw-stage.paytm.in" /* for Production */, hostname: "securegw.paytm.in", 16
  • 18. port: 443, path: `/theia/api/v1/initiateTransaction? mid=${mid}&orderId=${orderId}`, method: "POST", headers: { "Content-Type": "application/json", "Content-Length": post_data.length, }, }; var response = ""; var post_req = https.request(options, function (post_res) { post_res.on("data", function (chunk) { response += chunk; }); post_res.on("end", function () { console.log("Response: ", response); // res.json({data: JSON.parse(response), orderId: orderId, mid: mid, amount: amount}); setPaymentData({ 17
  • 19. ...paymentData, token: JSON.parse(response).body.txnToken, order: orderId, mid: mid, amount: 100, }); }); }); post_req.write(post_data); post_req.end(); }); }; 18
  • 21. This method is called on page load which will return a transaction token from Paytm which will be later used for initiating the Paytm checkout modal. To retrieve the token, we will make an API call to /theia/api/v1/initiateTransaction which will expect a basic transaction object in the request body along with a hashed value created using the transaction object. The paytmParam.body is a transaction object with basic fields like orderId, value, and currency. paytmParams.body = { ... }; 20
  • 22. A hash value should be using this transaction object. For that Paytm provides a library – PaytmChecksum using which we can generate a hashed value by passing the transaction object as arguments. This hash value will be sent along with the transaction object in the initiateTransaction API and will provide the transaction token in response. Later this token will be used when the user clicks on the ‘Pay Now’ button and will be helpful for triggering the payment checkout modal. PaytmChecksum.generateSignature( JSON.stringify(paytmParams.body),mkey ).then(function(checksum){ ... // logic } 21
  • 23. Create a new function makePayment() that will be triggered on click of the button, which will use the already generated token and display the checkout modal to the user. In this function, you can modify the style of the Paytm checkout modal and change the color code and add your logo. const makePayment = () => { var config = { "root":"", "style": { "bodyBackgroundColor": "#fafafb", "bodyColor": "", "themeBackgroundColor": "#0FB8C9", "themeColor": "#ffffff", "headerBackgroundColor": "#284055", "headerColor": "#ffffff", "errorColor": "", "successColor": "", 22
  • 24. "card": { "padding": "", "backgroundColor": "" } }, "data": { "orderId": paymentData.order, "token": paymentData.token, "tokenType": "TXN_TOKEN", "amount": paymentData.amount /* update amount */ }, "payMode": { "labels": {}, "filter": { "exclude": [] }, 23
  • 25. "order": [ "CC", "DC", "NB", "UPI", "PPBL", "PPI", "BALANCE" ] }, "website": "WEBSTAGING", "flow": "DEFAULT", "merchant": { "mid": paymentData.mid, "redirect": false }, "handler": { "transactionStatus": function transactionStatus(paymentStatus){ console.log(paymentStatus); }, 24
  • 26. "notifyMerchant": function notifyMerchant(eventName,data){ console.log("Closed"); } } }; if (window.Paytm && window.Paytm.CheckoutJS) { window.Paytm.CheckoutJS.init(config). then(function onSuccess() { window.Paytm.CheckoutJS.invoke(); }).catch(function onError(error) { console.log("Error => ", error); }); }} 25
  • 27. Call the makePayment() method on click event of the button. return ( < div > {loading ? ( < img src="https://c.tenor.com/I6kN- 6X7nhAAAAAj/loading-buffering.gif" / > ) : ( < button onClick={makePayment}>Pay Now< /button > )} < /div > ); 26
  • 29. Once we are done with the main logic implementation it’s time to import the file into App.js. import "./App.css"; import { PaytmButton } from "./paytm- button/paytmButton"; function App() { return ( < div > < PaytmButton / > < /div > ); } export default App; 28
  • 31. So, finally, we are done with the tutorial: How to Integrate Paytm Payment Gateway using ReactJS. Now using the below command, run your server. npm start Visit http://localhost:3000/ and test the demo app. The entire source code is available on the github repo: paytm-payment-gateway- integration. Feel free to clone the repository and play around with the code. 30
  • 33. I hope the tutorial has helped you learn how to integrate Paytm payment gateway using ReactJS. We value your feedback and suggestions, so feel free to write back. Our team is trying to explore and add more such topics to ReactJS tutorials. If you are a ReactJS enthusiast, visit the ReactJS tutorials page without wasting your time, clone the github repository, and polish your technical side. 32