From d5ca8012e64ddd825b1a7e51b980a416616312bf Mon Sep 17 00:00:00 2001 From: Zholdas Date: Mon, 10 Aug 2026 09:34:27 +0000 Subject: [PATCH] online payment kaspi --- index.html | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 139 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index ddb03e7..f1f2a87 100644 --- a/index.html +++ b/index.html @@ -23,6 +23,9 @@ body{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s .card-title{font-size:20px;font-weight:700;margin-bottom:8px} .card-price{font-size:24px;font-weight:800;color:var(--ink);margin-bottom:12px} .card-cat{display:inline-block;background:var(--cyan-50);color:var(--ink);padding:4px 12px;border-radius:20px;font-size:14px;font-weight:600;margin-bottom:12px} +.status-badge{display:inline-block;padding:4px 12px;border-radius:20px;font-size:13px;font-weight:600;margin-left:8px} +.status-paid{background:#d4edda;color:#155724} +.status-waiting{background:#fff3cd;color:#856404} .btn{display:inline-block;background:var(--cyan);color:var(--ink);padding:14px 28px;border-radius:8px;font-weight:700;text-decoration:none;border:none;cursor:pointer} .btn:hover{opacity:0.9} .btn-green{background:var(--green);color:#fff} @@ -85,6 +88,7 @@ body{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
+
@@ -130,6 +134,12 @@ body{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
+
+

📋 Предоплаченные заказы (онлайн оплата)

+

Родитель оплатил онлайн → ребёнок показывает код → забирает товар

+
+
+

➕ Добавить товар

@@ -193,6 +203,24 @@ body{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
+ + `).join(''); @@ -311,6 +346,44 @@ function render(filter = 'all') { `).join(''); } + + // Предоплаченные заказы + const ordersList = document.getElementById('orders-list'); + if (ordersList) { + const activeOrders = orders.filter(o => !o.pickedUp); + const completedOrders = orders.filter(o => o.pickedUp); + + if (activeOrders.length === 0 && completedOrders.length === 0) { + ordersList.innerHTML = '

Предоплаченных заказов пока нет

'; + } else { + let html = ''; + if (activeOrders.length > 0) { + html += '
⏳ Ожидают выдачи:
'; + html += activeOrders.map(o => ` +
+ ${o.product} + ⏳ Ждёт выдачи
+ Родитель: ${o.parentName} (${o.parentPhone})
+ Код выдачи: ${o.code}
+ Оплачено: ${o.price} ₸ | ${new Date(o.date).toLocaleString('ru-RU')}
+ +
+ `).join(''); + } + if (completedOrders.length > 0) { + html += '
✅ Выданные:
'; + html += completedOrders.slice(-5).reverse().map(o => ` +
+ ${o.product} + ✅ Выдан
+ Родитель: ${o.parentName} | Код: ${o.code}
+ Выдан: ${new Date(o.pickedUpAt).toLocaleString('ru-RU')} +
+ `).join(''); + } + ordersList.innerHTML = html; + } + } } function getSpentToday(parentId) { @@ -394,6 +467,58 @@ function closeParentModal() { document.getElementById('parent-code-modal').classList.remove('on'); } +let currentProductForPayment = null; + +function openPaymentModal() { + document.getElementById('payment-modal').classList.add('on'); +} + +function closePaymentModal() { + document.getElementById('payment-modal').classList.remove('on'); +} + +function openPaymentModalForProduct(product) { + currentProductForPayment = product; + document.getElementById('pay-product').textContent = product.name; + document.getElementById('pay-price').textContent = product.price; + document.getElementById('payment-modal').classList.add('on'); +} + +function processPayment() { + const phone = document.getElementById('pay-phone').value.trim(); + if (!phone || !currentProductForPayment) { + alert('Введите номер телефона и выберите товар'); + return; + } + + // Имитация оплаты Kaspi Pay + const orderCode = Math.floor(100000 + Math.random() * 900000).toString(); + const order = { + id: Date.now(), + productId: currentProductForPayment.id, + product: currentProductForPayment.name, + price: currentProductForPayment.price, + parentPhone: phone, + parentName: phone, // Потом родитель представится при получении + code: orderCode, + date: new Date().toISOString(), + pickedUp: false, + pickedUpAt: null + }; + + orders.push(order); + saveProducts(); + + closePaymentModal(); + + document.getElementById('success-message').textContent = `✅ Оплата прошла успешно!\n\nВаш код выдачи: ${orderCode}\n\nПокажите этот код в магазине и получите товар.`; + document.getElementById('success-code').textContent = orderCode; + document.getElementById('success-modal').classList.add('on'); + + currentProductForPayment = null; + document.getElementById('pay-phone').value = ''; +} + function verifyParentCode() { const code = document.getElementById('parent-code-input').value.trim(); const parent = parents.find(p => p.code === code); @@ -430,6 +555,19 @@ function verifyParentCode() { } } +function markAsPickedUp(orderId) { + if (confirm('Подтвердить выдачу товара?')) { + const order = orders.find(o => o.id === orderId); + if (order) { + order.pickedUp = true; + order.pickedUpAt = new Date().toISOString(); + saveProducts(); + render(); + alert('✅ Товар выдан!'); + } + } +} + // === Родители === document.getElementById('parent-form').addEventListener('submit', (e) => { e.preventDefault();