| <!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> |
|
|
| |
| <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> |
|
|