From 0d96b1e67e55ae398af8421ef72c1cae3b30449a Mon Sep 17 00:00:00 2001 From: paritosh18 Date: Mon, 20 Apr 2026 18:57:46 +0530 Subject: [PATCH] payment serive --- src/modules/user/services/payment.service.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/modules/user/services/payment.service.ts b/src/modules/user/services/payment.service.ts index 6f8c662..c0a9603 100644 --- a/src/modules/user/services/payment.service.ts +++ b/src/modules/user/services/payment.service.ts @@ -12,6 +12,17 @@ const razorpay = new Razorpay({ key_secret: config.RAZORPAY_KEY_SECRET, }); +const buildUniqueReceipt = (input?: string) => { + const normalizedPrefix = (input?.trim() || 'receipt') + .replace(/[^a-zA-Z0-9_-]/g, '_') + .replace(/_+/g, '_') + .slice(0, 20); + const timePart = Date.now().toString(36); + const randomPart = crypto.randomBytes(4).toString('hex'); + + return `${normalizedPrefix}_${timePart}_${randomPart}`.slice(0, 100); +}; + type RazorpayWebhookPayload = { event?: string; payload?: { @@ -91,7 +102,7 @@ export class PaymentService { } const amountInPaise = Math.round(payload.amount * 100); - const receipt = payload.receipt ?? `receipt_${Date.now()}`; + const receipt = buildUniqueReceipt(payload.receipt); const currency = payload.currency ?? 'INR'; const order = (await razorpay.orders.create({