3D Secure handling
This commit is contained in:
@@ -1209,6 +1209,50 @@ class RentalFlowEmailService {
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send authentication required email to renter when 3DS verification is needed
|
||||
* This is sent when the owner approves a rental but the renter's bank requires
|
||||
* additional verification (3D Secure) to complete the payment.
|
||||
*
|
||||
* @param {string} email - Renter's email address
|
||||
* @param {Object} data - Email data
|
||||
* @param {string} data.renterName - Renter's first name
|
||||
* @param {string} data.itemName - Name of the item being rented
|
||||
* @param {string} data.ownerName - Owner's first name
|
||||
* @param {number} data.amount - Total rental amount
|
||||
* @returns {Promise<{success: boolean, messageId?: string, error?: string}>}
|
||||
*/
|
||||
async sendAuthenticationRequiredEmail(email, data) {
|
||||
if (!this.initialized) {
|
||||
await this.initialize();
|
||||
}
|
||||
|
||||
try {
|
||||
const { renterName, itemName, ownerName, amount } = data;
|
||||
|
||||
const variables = {
|
||||
renterName: renterName || "there",
|
||||
itemName: itemName || "the item",
|
||||
ownerName: ownerName || "The owner",
|
||||
amount: typeof amount === "number" ? amount.toFixed(2) : "0.00",
|
||||
};
|
||||
|
||||
const htmlContent = await this.templateManager.renderTemplate(
|
||||
"authenticationRequiredToRenter",
|
||||
variables
|
||||
);
|
||||
|
||||
return await this.emailClient.sendEmail(
|
||||
email,
|
||||
`Action Required: Complete payment for ${itemName}`,
|
||||
htmlContent
|
||||
);
|
||||
} catch (error) {
|
||||
console.error("Failed to send authentication required email:", error);
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = RentalFlowEmailService;
|
||||
|
||||
Reference in New Issue
Block a user