Skip to content

Commit a01fdff

Browse files
committed
feat(payment): integrate Razorpay test mode payment gateway
1 parent e5d2625 commit a01fdff

7 files changed

Lines changed: 132 additions & 0 deletions

File tree

package-lock.json

Lines changed: 84 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"jsonwebtoken": "^9.0.3",
3232
"mongoose": "^9.0.0",
3333
"morgan": "^1.10.1",
34+
"razorpay": "^2.9.6",
3435
"sib-api-v3-sdk": "^8.5.0"
3536
},
3637
"devDependencies": {

src/app.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import cors from 'cors';
33
import morgan from 'morgan';
44

55
import authRoutes from './routes/auth.routes.js';
6+
import paymentRoutes from './routes/payment.routes.js';
67
import signupRoutes from './routes/signup.js';
78
import adminRoutes from './routes/adminroutes.js';
89

@@ -46,6 +47,7 @@ app.get('/health', (_req, res) => {
4647
});
4748

4849
app.use('/api/auth', authRoutes);
50+
app.use('/api/payment', paymentRoutes);
4951
app.use('/api/signup', signupRoutes);
5052
app.use('/api/admin', adminRoutes);
5153

src/config/razorpay.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import Razorpay from 'razorpay';
2+
3+
const razorpayInstance = new Razorpay({
4+
key_id: process.env.RAZORPAY_KEY_ID,
5+
key_secret: process.env.RAZORPAY_KEY_SECRET
6+
});
7+
8+
export default razorpayInstance;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { createOrder } from '../services/payment.service.js';
2+
3+
export const createPaymentOrder = async (req, res, next) => {
4+
try {
5+
const { amount } = req.body;
6+
7+
const order = await createOrder(amount);
8+
9+
res.status(200).json({
10+
success: true,
11+
order
12+
});
13+
14+
} catch (error) {
15+
next(error);
16+
}
17+
};

src/routes/payment.routes.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import express from 'express';
2+
import { createPaymentOrder } from '../controllers/payment.controller.js';
3+
4+
const router = express.Router();
5+
6+
router.post('/create-payment', createPaymentOrder);
7+
8+
export default router;

src/services/payment.service.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import razorpay from '../config/razorpay.js';
2+
3+
export const createOrder = async (amount) => {
4+
const options = {
5+
amount: amount * 100,
6+
currency: 'INR',
7+
receipt: `receipt_${Date.now()}`
8+
};
9+
10+
const order = await razorpay.orders.create(options);
11+
return order;
12+
};

0 commit comments

Comments
 (0)