phonepe #43

Merged
allentj merged 16 commits from phonepe into dev 2025-05-21 11:31:45 +00:00
3 changed files with 4 additions and 15 deletions
Showing only changes of commit 18afada52a - Show all commits

View File

@ -65,11 +65,9 @@ export const directGenerateInvoice = onRequest({
paymentMethod: paymentMethod || 'Online' paymentMethod: paymentMethod || 'Online'
}; };
// Generate the invoice without updating any payment records
const invoicePath = await invoiceService.generateInvoice(invoiceData); const invoicePath = await invoiceService.generateInvoice(invoiceData);
const downloadUrl = await invoiceService.getInvoiceDownloadUrl(invoicePath); const downloadUrl = await invoiceService.getInvoiceDownloadUrl(invoicePath);
// Send email if requested
let emailSent = false; let emailSent = false;
if (sendEmail && email) { if (sendEmail && email) {
emailSent = await invoiceService.sendInvoiceEmail(invoicePath, { emailSent = await invoiceService.sendInvoiceEmail(invoicePath, {

View File

@ -35,7 +35,6 @@ export const getInvoiceUrl = onRequest({
return; return;
} }
// Get a download URL for the invoice
const downloadUrl = await invoiceService.getInvoiceDownloadUrl(invoicePath as string); const downloadUrl = await invoiceService.getInvoiceDownloadUrl(invoicePath as string);
response.json({ response.json({

View File

@ -3,7 +3,6 @@ import { getAdmin, getLogger } from "../../shared/config";
const admin = getAdmin(); const admin = getAdmin();
const logger = getLogger(); const logger = getLogger();
// Define an interface for the payment data to avoid type errors
interface PaymentData { interface PaymentData {
id: string; id: string;
date: string; date: string;
@ -14,7 +13,7 @@ interface PaymentData {
discount: any; discount: any;
transactionId: string; transactionId: string;
createdAt: Date; createdAt: Date;
invoicePath?: string; // Make this optional invoicePath?: string;
} }
export async function updatePaymentDataAfterSuccess( export async function updatePaymentDataAfterSuccess(
@ -24,7 +23,6 @@ export async function updatePaymentDataAfterSuccess(
invoicePath?: string invoicePath?: string
): Promise<boolean> { ): Promise<boolean> {
try { try {
// Get the payment order from Firestore
const orderQuery = await admin.firestore() const orderQuery = await admin.firestore()
.collection('payment_orders') .collection('payment_orders')
.where('merchantOrderId', '==', merchantOrderId) .where('merchantOrderId', '==', merchantOrderId)
@ -39,19 +37,17 @@ export async function updatePaymentDataAfterSuccess(
const orderDoc = orderQuery.docs[0]; const orderDoc = orderQuery.docs[0];
const orderData = orderDoc.data(); const orderData = orderDoc.data();
// Extract membership ID from metaInfo
const membershipId = orderData.metaInfo?.membershipId; const membershipId = orderData.metaInfo?.membershipId;
if (!membershipId) { if (!membershipId) {
logger.error(`No membershipId found in metaInfo for order: ${merchantOrderId}`); logger.error(`No membershipId found in metaInfo for order: ${merchantOrderId}`);
return false; return false;
} }
const isoDate = new Date().toLocaleDateString('en-GB').split('/').join('-'); // DD-MM-YYYY format const isoDate = new Date().toLocaleDateString('en-GB').split('/').join('-');
const dateTimestamp = admin.firestore.Timestamp.now(); const dateTimestamp = admin.firestore.Timestamp.now();
// Create payment data object with proper typing
const paymentData: PaymentData = { const paymentData: PaymentData = {
id: admin.firestore().collection('_').doc().id, // Generate a UUID id: admin.firestore().collection('_').doc().id,
date: isoDate, date: isoDate,
dateTimestamp: dateTimestamp, dateTimestamp: dateTimestamp,
amount: orderData.amount, amount: orderData.amount,
@ -62,19 +58,16 @@ export async function updatePaymentDataAfterSuccess(
createdAt: new Date() createdAt: new Date()
}; };
// Add invoice path if provided
if (invoicePath) { if (invoicePath) {
paymentData.invoicePath = invoicePath; paymentData.invoicePath = invoicePath;
} }
// Get reference to membership payments document
const membershipPaymentsRef = admin.firestore() const membershipPaymentsRef = admin.firestore()
.collection('membership_payments') .collection('membership_payments')
.doc(membershipId); .doc(membershipId);
const docSnapshot = await membershipPaymentsRef.get(); const docSnapshot = await membershipPaymentsRef.get();
// Update or create the membership payments document
if (docSnapshot.exists) { if (docSnapshot.exists) {
await membershipPaymentsRef.update({ await membershipPaymentsRef.update({
'payments': admin.firestore.FieldValue.arrayUnion(paymentData), 'payments': admin.firestore.FieldValue.arrayUnion(paymentData),
@ -92,7 +85,6 @@ export async function updatePaymentDataAfterSuccess(
}); });
} }
// Update membership status
await updateMembershipStatus(membershipId, orderData.userId); await updateMembershipStatus(membershipId, orderData.userId);
logger.info(`Successfully updated payment data for membership: ${membershipId}`); logger.info(`Successfully updated payment data for membership: ${membershipId}`);
@ -118,7 +110,7 @@ async function updateMembershipStatus(membershipId: string, userId: string): Pro
.collection('memberships') .collection('memberships')
.doc(membershipId) .doc(membershipId)
.update({ .update({
'status': 'ACTIVE', // Assuming this matches your InvitationStatus.active 'status': 'ACTIVE',
'updatedAt': admin.firestore.FieldValue.serverTimestamp(), 'updatedAt': admin.firestore.FieldValue.serverTimestamp(),
}); });