|
1 | 1 | import { rz_instance } from "../clients/razorpay.js"; |
2 | 2 | import crypto from "crypto"; |
3 | 3 | import prismaModule from "../prisma.js"; |
| 4 | +import { |
| 5 | + SUBSCRIPTION_STATUS, |
| 6 | + PAYMENT_STATUS, |
| 7 | +} from "../constants/subscription.js"; |
4 | 8 |
|
5 | 9 | const { prisma } = prismaModule; |
6 | 10 |
|
@@ -115,16 +119,18 @@ export const paymentService = { |
115 | 119 | } |
116 | 120 |
|
117 | 121 | // Create the expected signature |
118 | | - const generatedSignature = crypto |
| 122 | + const generatedSignatureHex = crypto |
119 | 123 | .createHmac("sha256", keySecret) |
120 | 124 | .update(`${orderId}|${paymentId}`) |
121 | 125 | .digest("hex"); |
122 | 126 |
|
| 127 | + const a = Buffer.from(signature, "hex"); |
| 128 | + const b = Buffer.from(generatedSignatureHex, "hex"); |
| 129 | + |
| 130 | + if (a.length !== b.length) return false; |
| 131 | + |
123 | 132 | // Compare signatures securely |
124 | | - return crypto.timingSafeEqual( |
125 | | - Buffer.from(signature), |
126 | | - Buffer.from(generatedSignature) |
127 | | - ); |
| 133 | + return crypto.timingSafeEqual(a, b); |
128 | 134 | } catch (error) { |
129 | 135 | console.error("Signature verification error:", error); |
130 | 136 | return false; |
@@ -156,7 +162,7 @@ export const paymentService = { |
156 | 162 | razorpayOrderId: paymentData.razorpayOrderId, |
157 | 163 | amount: paymentData.amount, // Amount in paise (smallest currency unit) |
158 | 164 | currency: paymentData.currency, |
159 | | - status: "captured", |
| 165 | + status: PAYMENT_STATUS.CAPTURED, |
160 | 166 | }, |
161 | 167 | }); |
162 | 168 |
|
@@ -229,7 +235,7 @@ export const paymentService = { |
229 | 235 | data: { |
230 | 236 | userId, |
231 | 237 | planId, |
232 | | - status: "active", |
| 238 | + status: SUBSCRIPTION_STATUS.ACTIVE, |
233 | 239 | startDate, |
234 | 240 | endDate, |
235 | 241 | autoRenew: true, |
|
0 commit comments