phonepe #26
| @ -82,7 +82,7 @@ export const registerClient = onRequest({ | |||||||
|                         phoneNumber: formattedPhoneNumber, |                         phoneNumber: formattedPhoneNumber, | ||||||
|                     }; |                     }; | ||||||
| 
 | 
 | ||||||
|                     await admin.firestore().collection('client_profile').doc(clientUid).set(clientData); |                     await admin.firestore().collection('client_profiles').doc(clientUid).set(clientData); | ||||||
| 
 | 
 | ||||||
|                     return res.status(201).json({ |                     return res.status(201).json({ | ||||||
|                         success: true, |                         success: true, | ||||||
|  | |||||||
| @ -10,6 +10,13 @@ export const phonePeWebhook = onRequest({ | |||||||
|   region: '#{SERVICES_RGN}#' |   region: '#{SERVICES_RGN}#' | ||||||
| }, async (request: Request, response) => { | }, async (request: Request, response) => { | ||||||
|   try { |   try { | ||||||
|  | 
 | ||||||
|  |     logger.info('Received webhook request', { | ||||||
|  |       headers: request.headers, | ||||||
|  |       body: request.body, | ||||||
|  |       method: request.method | ||||||
|  |     }); | ||||||
|  |      | ||||||
|     const authHeader = request.headers['authorization'] as string; |     const authHeader = request.headers['authorization'] as string; | ||||||
|     const username = process.env.PHONEPE_WEBHOOK_USERNAME; |     const username = process.env.PHONEPE_WEBHOOK_USERNAME; | ||||||
|     const password = process.env.PHONEPE_WEBHOOK_PASSWORD; |     const password = process.env.PHONEPE_WEBHOOK_PASSWORD; | ||||||
| @ -20,14 +27,12 @@ export const phonePeWebhook = onRequest({ | |||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Calculate expected authorization value
 |  | ||||||
|     const credentialString = `${username}:${password}`; |     const credentialString = `${username}:${password}`; | ||||||
|     const expectedAuth = crypto |     const expectedAuth = crypto | ||||||
|       .createHash('sha256') |       .createHash('sha256') | ||||||
|       .update(credentialString) |       .update(credentialString) | ||||||
|       .digest('hex'); |       .digest('hex'); | ||||||
|      |      | ||||||
|     // PhonePe may send the header with a prefix like "SHA256 " or just the hash
 |  | ||||||
|     const receivedAuth = authHeader.replace(/^SHA256\s+/i, ''); |     const receivedAuth = authHeader.replace(/^SHA256\s+/i, ''); | ||||||
|      |      | ||||||
|     if (receivedAuth.toLowerCase() !== expectedAuth.toLowerCase()) { |     if (receivedAuth.toLowerCase() !== expectedAuth.toLowerCase()) { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user