Безопасная онлайн-оплата
Оплата производится через защищенный платежный шлюз Т-Банка.
console.log("НЕВСКИЕ КУХНИ: платежный JavaScript загружен");
/* ============================================================ ПОЛУЧЕНИЕ ЭЛЕМЕНТОВ ============================================================ */
const amountInput = document.getElementById("amount"); const orderInput = document.getElementById("order"); const descriptionInput = document.getElementById("description"); const nameInput = document.getElementById("name"); const emailInput = document.getElementById("email"); const phoneInput = document.getElementById("phone");
const button = document.getElementById("btn");
const errorBox = document.getElementById("err"); const successBox = document.getElementById("ok");
console.log("Форма:", document.getElementById("payForm")); console.log("Кнопка:", button);
/* ============================================================ НАЗНАЧЕНИЕ ПЛАТЕЖА ============================================================ */
let descriptionChanged = false;
descriptionInput.addEventListener("input", function(){
descriptionChanged = true;
});
orderInput.addEventListener("input", function(){
if(!descriptionChanged){
descriptionInput.value = "Оплата по договору №" + orderInput.value;
}
});
/* ============================================================ СУММА ============================================================ */
amountInput.addEventListener("input", function(){
let value = this.value.replace(/\D/g,"");
this.value = value ? Number(value).toLocaleString("ru-RU") : "";
});
/* ============================================================ ТЕЛЕФОН ============================================================ */
phoneInput.addEventListener("input", function(){
let value = this.value.replace(/\D/g,"");
if(value.startsWith("8")){ value = "7" + value.slice(1); }
if(!value.startsWith("7")){ value = "7" + value; }
value = value.slice(0,11);
let result = "+7";
if(value.length > 1){ result += " (" + value.slice(1,4); }
if(value.length >= 4){ result += ") " + value.slice(4,7); }
if(value.length >= 7){ result += "-" + value.slice(7,9); }
if(value.length >= 9){ result += "-" + value.slice(9,11); }
this.value = result;
});
/* ============================================================ СООБЩЕНИЯ ============================================================ */
function showError(text){
successBox.style.display = "none";
errorBox.textContent = text;
errorBox.style.display = "block";
}
function showSuccess(text){
errorBox.style.display = "none";
successBox.textContent = text;
successBox.style.display = "block";
}
/* ============================================================ ОПЛАТА ============================================================ */
button.addEventListener("click", async function(){
console.log("НЕВСКИЕ КУХНИ: кнопка оплаты нажата");
const payload = {
amount: amountInput.value.replace(/\s/g,""),
order: orderInput.value.trim(),
description: descriptionInput.value.trim(),
name: nameInput.value.trim(),
email: emailInput.value.trim(),
phone: phoneInput.value.trim()
};
console.log( "Данные платежа:", payload );
/* -------------------------------------------------------- ПРОВЕРКА -------------------------------------------------------- */
if( !payload.amount || !payload.order || !payload.description || !payload.name || !payload.email || !payload.phone ){
showError( "Заполните все поля." );
console.warn( "НЕВСКИЕ КУХНИ: не заполнены обязательные поля" );
return;
}
/* -------------------------------------------------------- EMAIL -------------------------------------------------------- */
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if(!emailRegex.test(payload.email)){
showError( "Введите корректный Email." );
return;
}
/* -------------------------------------------------------- КНОПКА -------------------------------------------------------- */
button.disabled = true;
button.textContent = "Создание платежа...";
try{
/* ---------------------------------------------------- ДАННЫЕ WORDPRESS ---------------------------------------------------- */
const formData = new URLSearchParams();
formData.append( "action", "nevskie_tbank_init" );
formData.append( "amount", payload.amount );
formData.append( "order", payload.order );
formData.append( "description", payload.description );
formData.append( "name", payload.name );
formData.append( "email", payload.email );
formData.append( "phone", payload.phone );
console.log( "Отправляем запрос в WordPress..." );
/* ---------------------------------------------------- AJAX ---------------------------------------------------- */
const response = await fetch( "/wp-admin/admin-ajax.php", {
method:"POST",
headers:{ "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" },
body: formData.toString()
} );
console.log( "HTTP статус:", response.status );
const text = await response.text();
console.log( "Ответ сервера:", text );
/* ---------------------------------------------------- JSON ---------------------------------------------------- */
let data;
try{
data = JSON.parse(text);
}catch(jsonError){
console.error( "Сервер вернул НЕ JSON:", text );
showError( "Ошибка сервера. Подробности смотрите в консоли." );
return;
}
console.log( "Результат:", data );
/* ---------------------------------------------------- УСПЕХ ---------------------------------------------------- */
if( data.Success === true && data.PaymentURL ){
showSuccess( "Перенаправление на страницу оплаты..." );
console.log( "PaymentURL:", data.PaymentURL );
setTimeout(function(){
window.location.href = data.PaymentURL;
},500);
return;
}
/* ---------------------------------------------------- ОШИБКА ---------------------------------------------------- */
showError( data.Message || "Ошибка создания платежа." );
console.error( "Ошибка платежа:", data );
}catch(error){
console.error( "Ошибка AJAX:", error );
showError( "Ошибка соединения с сервером." );
}
button.disabled = false;
button.textContent = "Оплатить через Т-Банк";
});


