162b63cae9
- Implemented 'Mis Compras' and 'Mis Recibos' pages for users to view their orders and payment receipts. - Enhanced address validation in 'editar_direccion.html' to ensure cities and postal codes belong to Almería. - Added shipping address display in seller order details on 'pedidos_vendedor.html'. - Updated user portal to include links to purchases and receipts. - Introduced email verification functionality during user registration. - Refactored email sending utility for better error handling and logging. - Improved session management for checkout processes with selected shipping addresses.
102 lines
3.9 KiB
JavaScript
102 lines
3.9 KiB
JavaScript
const getCookie = (name) => {
|
|
let cookieValue = null;
|
|
if (document.cookie && document.cookie !== "") {
|
|
const cookies = document.cookie.split(";");
|
|
for (let i = 0; i < cookies.length; i++) {
|
|
const cookie = cookies[i].trim();
|
|
if (cookie.substring(0, name.length + 1) === (name + "=")) {
|
|
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return cookieValue;
|
|
};
|
|
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
const button = document.getElementById("checkout-button");
|
|
console.log("Button found:", button);
|
|
|
|
if (!button) {
|
|
console.error("Checkout button not found");
|
|
return;
|
|
}
|
|
|
|
const configUrl = button.dataset.configUrl;
|
|
const sessionUrl = button.dataset.sessionUrl;
|
|
|
|
console.log("Config URL:", configUrl);
|
|
console.log("Session URL:", sessionUrl);
|
|
|
|
fetch(configUrl)
|
|
.then((result) => {
|
|
console.log("Config response status:", result.status);
|
|
return result.json();
|
|
})
|
|
.then((data) => {
|
|
console.log("Config data:", data);
|
|
|
|
if (!data.publicKey) {
|
|
console.error("No publicKey in response");
|
|
return;
|
|
}
|
|
|
|
const stripe = Stripe(data.publicKey);
|
|
console.log("Stripe initialized");
|
|
|
|
button.addEventListener("click", () => {
|
|
const shippingAddressSelect = document.getElementById("shipping-address");
|
|
const selectedShippingAddress = shippingAddressSelect ? shippingAddressSelect.value : "";
|
|
|
|
if (!selectedShippingAddress) {
|
|
alert("Selecciona una dirección de envío para continuar.");
|
|
return;
|
|
}
|
|
|
|
console.log("Checkout button clicked");
|
|
button.disabled = true;
|
|
button.innerHTML = "Procesando...";
|
|
|
|
fetch(sessionUrl, {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
"X-CSRFToken": getCookie("csrftoken")
|
|
},
|
|
body: JSON.stringify({
|
|
shipping_address_id: selectedShippingAddress
|
|
})
|
|
})
|
|
.then((res) => {
|
|
console.log("Session response status:", res.status);
|
|
return res.json();
|
|
})
|
|
.then((data) => {
|
|
console.log("Session data:", data);
|
|
|
|
if (data.sessionId) {
|
|
console.log("Redirecting to Stripe Checkout with session:", data.sessionId);
|
|
return stripe.redirectToCheckout({ sessionId: data.sessionId });
|
|
} else if (data.error) {
|
|
alert("Error: " + data.error);
|
|
button.disabled = false;
|
|
button.innerHTML = "Pagar con Stripe";
|
|
} else {
|
|
alert("Error desconocido al procesar el pago");
|
|
button.disabled = false;
|
|
button.innerHTML = "Pagar con Stripe";
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.error("Fetch error:", error);
|
|
alert("Error de conexión: " + error.message);
|
|
button.disabled = false;
|
|
button.innerHTML = "Pagar con Stripe";
|
|
});
|
|
});
|
|
})
|
|
.catch((error) => {
|
|
console.error("Config fetch error:", error);
|
|
alert("Error al cargar la configuración de pago: " + error.message);
|
|
});
|
|
}); |