mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 15:19:40 +02:00
Move inactive projects out of active workspace: - bauntown (community website) - maerchenzauber (AI story generation) - memoro (voice memo app) - news (news aggregation) - nutriphi (nutrition tracking) - reader (reading app) - uload (URL shortener) - wisekeep (AI wisdom extraction) Update CLAUDE.md documentation: - Add presi to active projects - Document archived projects section - Update workspace configuration Archived apps can be re-activated by moving back to apps/ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
145 lines
3.4 KiB
JavaScript
145 lines
3.4 KiB
JavaScript
// Netlify Function für Webhooks von Stripe und PayPal
|
|
|
|
exports.handler = async (event, context) => {
|
|
// CORS Headers
|
|
const headers = {
|
|
'Access-Control-Allow-Origin': '*',
|
|
'Access-Control-Allow-Headers': 'Content-Type',
|
|
'Access-Control-Allow-Methods': 'POST, OPTIONS',
|
|
};
|
|
|
|
// Handle OPTIONS request (CORS preflight)
|
|
if (event.httpMethod === 'OPTIONS') {
|
|
return {
|
|
statusCode: 200,
|
|
headers,
|
|
body: '',
|
|
};
|
|
}
|
|
|
|
// Den Webhook-Source aus URL-Parameter oder Header bestimmen
|
|
const source = event.queryStringParameters.source || 'unknown';
|
|
|
|
try {
|
|
if (source === 'stripe') {
|
|
// Stripe Webhook verarbeiten
|
|
return processStripeWebhook(event, headers);
|
|
} else if (source === 'paypal') {
|
|
// PayPal Webhook verarbeiten
|
|
return processPayPalWebhook(event, headers);
|
|
} else {
|
|
return {
|
|
statusCode: 400,
|
|
headers,
|
|
body: JSON.stringify({
|
|
error: {
|
|
message: `Unknown webhook source: ${source}`,
|
|
},
|
|
}),
|
|
};
|
|
}
|
|
} catch (error) {
|
|
console.error(`Webhook error (${source}):`, error);
|
|
|
|
return {
|
|
statusCode: 500,
|
|
headers,
|
|
body: JSON.stringify({
|
|
error: {
|
|
message: error.message || 'Internal server error',
|
|
},
|
|
}),
|
|
};
|
|
}
|
|
};
|
|
|
|
// Stripe Webhook verarbeiten
|
|
async function processStripeWebhook(event, headers) {
|
|
// In einer echten Anwendung würden Sie hier die Stripe Signatur überprüfen
|
|
// const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
|
|
// const sig = event.headers['stripe-signature'];
|
|
// const endpointSecret = process.env.STRIPE_WEBHOOK_SECRET;
|
|
|
|
try {
|
|
const data = JSON.parse(event.body);
|
|
|
|
// Verschiedene Ereignistypen verarbeiten
|
|
switch (data.type) {
|
|
case 'payment_intent.succeeded':
|
|
// Zahlung erfolgreich - hier könnte eine Datenbank aktualisiert werden
|
|
console.log('Payment succeeded:', data.data.object.id);
|
|
break;
|
|
|
|
case 'payment_intent.payment_failed':
|
|
// Zahlung fehlgeschlagen
|
|
console.log('Payment failed:', data.data.object.id);
|
|
break;
|
|
|
|
// Weitere Event-Typen hier verarbeiten
|
|
|
|
default:
|
|
console.log('Unhandled Stripe event type:', data.type);
|
|
}
|
|
|
|
return {
|
|
statusCode: 200,
|
|
headers,
|
|
body: JSON.stringify({ received: true }),
|
|
};
|
|
} catch (error) {
|
|
console.error('Error processing Stripe webhook:', error);
|
|
return {
|
|
statusCode: 400,
|
|
headers,
|
|
body: JSON.stringify({
|
|
error: {
|
|
message: error.message,
|
|
},
|
|
}),
|
|
};
|
|
}
|
|
}
|
|
|
|
// PayPal Webhook verarbeiten
|
|
async function processPayPalWebhook(event, headers) {
|
|
// In einer echten Anwendung würden Sie hier die PayPal-Signatur verifizieren
|
|
|
|
try {
|
|
const data = JSON.parse(event.body);
|
|
|
|
// Verschiedene Ereignistypen verarbeiten
|
|
switch (data.event_type) {
|
|
case 'PAYMENT.CAPTURE.COMPLETED':
|
|
// Zahlung erfolgreich - hier könnte eine Datenbank aktualisiert werden
|
|
console.log('PayPal payment completed:', data.resource.id);
|
|
break;
|
|
|
|
case 'PAYMENT.CAPTURE.DENIED':
|
|
// Zahlung abgelehnt
|
|
console.log('PayPal payment denied:', data.resource.id);
|
|
break;
|
|
|
|
// Weitere Event-Typen hier verarbeiten
|
|
|
|
default:
|
|
console.log('Unhandled PayPal event type:', data.event_type);
|
|
}
|
|
|
|
return {
|
|
statusCode: 200,
|
|
headers,
|
|
body: JSON.stringify({ received: true }),
|
|
};
|
|
} catch (error) {
|
|
console.error('Error processing PayPal webhook:', error);
|
|
return {
|
|
statusCode: 400,
|
|
headers,
|
|
body: JSON.stringify({
|
|
error: {
|
|
message: error.message,
|
|
},
|
|
}),
|
|
};
|
|
}
|
|
}
|