diff --git a/pay.html b/pay.html new file mode 100644 index 0000000..bbd7402 --- /dev/null +++ b/pay.html @@ -0,0 +1,613 @@ + + + + + + Complete Payment — WORLDPLAY + + + + + + + +
+ + +
+ +
+

Complete Your Payment

+

Already registered? Enter your email to pick up where you left off.

+ + + + + +
+
+ + +
+

Welcome back, !

+

Choose your accommodation and complete payment.

+ +
+ +
+ + +
+
+ +
+
Commons Hub
+
+
+
Shared Room
+
Bunk beds / shared room
+
+
€275
+
+
+
+
Double Room
+
Double bed, private or shared
+
+
€350
+
+ +
Herrnhof Villa
+
+
+
Living Room
+
Sofa bed / daybed in shared living area
+
+
€315
+
+
+
+
Triple Room
+
Shared with two others
+
+
€350
+
+
+
+
Twin Room
+
Two separate beds, shared with one other
+
+
€420
+
+
+
+
Single Room
+
Private room for one
+
+
€665
+
+
+
+
Couple Room
+
Double bed, private room for two
+
+
€700
+
+
+ +
+

Price Summary

+
+ Participation fee + €50.00 +
+ +
+ Processing fee (2%) + €1.00 +
+
+ Total + €51.00 +
+
+ +
+ About food: Food is not included in this payment. Expect approximately €15-20 per person per day. We'll be in touch about food choices and dietary preferences before the event. +
+ +
+ Deposit & cancellation: This is a full payment. If you cancel more than 1 month before the event, you'll receive a 70% refund. If you cancel between 1 month and 1 week before, you'll receive a 30% refund. No refunds within 1 week of the event. +
+ + +
+
+
+ + ← Back to worldplay.art +
+ + + + diff --git a/server.js b/server.js index 5c487ad..7dcf7bc 100644 --- a/server.js +++ b/server.js @@ -857,6 +857,38 @@ app.get('/api/registrations/export', async (req, res) => { } }); +// Lookup registration by email (for /pay page) +app.get('/api/lookup-registration', async (req, res) => { + try { + const email = (req.query.email || '').toLowerCase().trim(); + if (!email) { + return res.status(400).json({ error: 'Email is required' }); + } + + const registrations = await loadRegistrations(); + const registration = registrations.find(r => r.email.toLowerCase() === email); + + if (!registration) { + return res.status(404).json({ error: 'No registration found for this email address' }); + } + + res.json({ + id: registration.id, + firstName: registration.firstName, + lastName: registration.lastName, + paymentStatus: registration.paymentStatus, + }); + } catch (error) { + console.error('Lookup registration error:', error); + res.status(500).json({ error: 'Failed to look up registration' }); + } +}); + +// Complete payment page +app.get('/pay', (req, res) => { + res.sendFile(path.join(__dirname, 'pay.html')); +}); + // Financial transparency page app.get('/financial-transparency', (req, res) => { res.sendFile(path.join(__dirname, 'financial-transparency.html'));