bot-me / src /bots /handlers /paymentWebhookHandlers.ts
Mohammed Foud
allh
80d4bc1
import { BotContext } from '../types/botTypes';
import { PaymentVerificationService } from '../services/PaymentVerificationService';
import { createLogger } from '../../utils/logger';
const logger = createLogger('PaymentWebhookHandlers');
const paymentVerificationService = PaymentVerificationService.getInstance();
export const setupPaymentWebhookHandlers = (bot: any) => {
// Set bot instance in verification service
paymentVerificationService.setBot(bot);
// PayPal webhook handler
bot.on('webhook:paypal', async (ctx: BotContext) => {
try {
const { paymentId, status } = ctx.webhookData;
await paymentVerificationService.verifyAndUpdatePayment(paymentId, status);
return { success: true };
} catch (error) {
logger.error('PayPal webhook error:', error);
return { success: false, error: error.message };
}
});
// Crypto payment verification handler
bot.on('webhook:crypto', async (ctx: BotContext) => {
try {
const { paymentId, status } = ctx.webhookData;
await paymentVerificationService.verifyAndUpdatePayment(paymentId, status);
return { success: true };
} catch (error) {
logger.error('Crypto webhook error:', error);
return { success: false, error: error.message };
}
});
// Admin payment verification handler
bot.on('webhook:admin', async (ctx: BotContext) => {
try {
const { paymentId, status } = ctx.webhookData;
await paymentVerificationService.verifyAndUpdatePayment(paymentId, status);
return { success: true };
} catch (error) {
logger.error('Admin webhook error:', error);
return { success: false, error: error.message };
}
});
};