BuddyMath / templates /payment.html
dotandru's picture
feat: Payment Page integration and Rebranding to ื”ืžื•ืจื” ืœืžืชืžื˜ื™ืงื”
aa0d35c
Raw
History Blame Contribute Delete
4.6 kB
<!DOCTYPE html>
<html lang="he" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ื”ืžื•ืจื” ืœืžืชืžื˜ื™ืงื” | ืฉื“ืจื•ื’ ืœืคืจื™ืžื™ื•ื</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Assistant:wght@400;600;800&display=swap" rel="stylesheet">
<style>
body { font-family: 'Assistant', sans-serif; }
</style>
</head>
<body class="bg-gray-50 flex items-center justify-center min-h-screen p-4">
<div class="bg-white rounded-3xl shadow-xl max-w-md w-full p-8 text-center text-gray-800">
<div class="w-20 h-20 bg-purple-100 text-purple-600 rounded-full flex items-center justify-center text-4xl mx-auto mb-6">
๐Ÿ‘จโ€๐Ÿซ
</div>
<h1 class="text-2xl font-extrabold mb-4 text-gray-900">
ื”ื™ื™! {% if student_name %}{{ student_name }}{% else %}ื”ื™ืœื“{% endif %} ื‘ื™ืงืฉ ืขื–ืจื”.
</h1>
<p class="text-gray-600 mb-8 leading-relaxed">
ื‘ื•ืื• ื ืคืชื— ืœื• ืืช ื›ืœ ื”ืžื—ืกื•ืžื™ื ื‘ื“ืจืš ืœื”ืฆืœื—ื” ื‘ืžืชืžื˜ื™ืงื”.
ืขื ืคืจื™ืžื™ื•ื ื”ื•ื ื™ืงื‘ืœ ืคืชืจื•ื ื•ืช ืœืœื ื”ื’ื‘ืœื” ื•ื“ื•ื—ื•ืช ื”ืชืงื“ืžื•ืช ืฉื‘ื•ืขื™ื™ื ื™ืฉื™ืจื•ืช ืœืžื™ื™ืœ.
</p>
<form id="payment-form" class="space-y-4 text-right">
<input type="hidden" id="uid" name="uid" value="{{ uid }}">
<div>
<label for="email" class="block text-sm font-semibold text-gray-700 mb-1">ืื™ืžื™ื™ืœ ืฉืœ ื”ื”ื•ืจื” (ืœืงื‘ืœืช ื”ื“ื•ื—ื•ืช ืœืฉื‘ื•ืข ื”ื‘ื)</label>
<input type="email" id="email" required placeholder="example@email.com" class="w-full px-4 py-3 rounded-xl border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500 text-left" dir="ltr">
</div>
<!-- Fake Card Number for the simuation -->
<div>
<label class="block text-sm font-semibold text-gray-700 mb-1">ืคืจื˜ื™ ืืฉืจืื™</label>
<div class="p-4 border border-gray-300 rounded-xl bg-gray-50 text-center text-gray-400">
Stripe Checkout ื›ืจื’ืข ื‘ืžืฆื‘ ืกื™ืžื•ืœืฆื™ื”. ื”ื–ืŸ ืื™ืžื™ื™ืœ ื•ืœื—ืฅ "ืฉืœื".
</div>
</div>
<button type="submit" id="submit-btn" class="w-full bg-gradient-to-r from-purple-500 to-indigo-600 text-white font-bold py-4 rounded-xl shadow-lg hover:shadow-xl hover:from-purple-600 hover:to-indigo-700 transition duration-300 mt-6 flex justify-center items-center">
<span>ืฉืœื ื•ืฉื“ืจื’ ืขื›ืฉื™ื• ๐Ÿš€</span>
</button>
</form>
<div id="success-msg" class="hidden mt-6 bg-green-50 text-green-700 p-4 rounded-xl border border-green-200">
<p class="font-bold text-lg mb-1">ืžื–ืœ ื˜ื•ื‘! ๐ŸŽ‰</p>
<p>ื”ืžื ื•ื™ ืฉื•ื“ืจื’ ื‘ื”ืฆืœื—ื”. ืกืคืจื• ืขืœ ื›ืš ื‘ื—ื–ืจื” ื‘ืืคืœื™ืงืฆื™ื”!</p>
</div>
<div id="error-msg" class="hidden mt-6 text-red-600 font-semibold"></div>
</div>
<script>
document.getElementById('payment-form').addEventListener('submit', async (e) => {
e.preventDefault();
const btn = document.getElementById('submit-btn');
btn.innerHTML = 'ืžืขื‘ื“ ืชืฉืœื•ื... โš™๏ธ';
btn.disabled = true;
const uid = document.getElementById('uid').value;
const email = document.getElementById('email').value;
try {
const response = await fetch('/api/upgrade_success', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ uid: uid, parent_email: email })
});
if (response.ok) {
document.getElementById('payment-form').classList.add('hidden');
document.getElementById('success-msg').classList.remove('hidden');
} else {
const data = await response.json();
throw new Error(data.message || 'Payment failed');
}
} catch (err) {
document.getElementById('error-msg').innerText = "ืฉื’ื™ืื”: " + err.message;
document.getElementById('error-msg').classList.remove('hidden');
btn.innerHTML = 'ืฉืœื ื•ืฉื“ืจื’ ืขื›ืฉื™ื• ๐Ÿš€';
btn.disabled = false;
}
});
</script>
</body>
</html>