0% encontró este documento útil (0 votos)
21 vistas12 páginas

Formulario de Pago Seguro y Validado

El documento describe la estructura y funcionalidad de un formulario de pago en HTML, CSS y JavaScript, destacando la importancia de la validación de datos y la accesibilidad. Se detallan las etiquetas utilizadas, su propósito y cómo contribuyen a una experiencia de usuario fluida y segura. Además, se explica el uso de modales para retroalimentar al usuario sobre el estado de su envío.

Cargado por

d7758544
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas12 páginas

Formulario de Pago Seguro y Validado

El documento describe la estructura y funcionalidad de un formulario de pago en HTML, CSS y JavaScript, destacando la importancia de la validación de datos y la accesibilidad. Se detallan las etiquetas utilizadas, su propósito y cómo contribuyen a una experiencia de usuario fluida y segura. Además, se explica el uso de modales para retroalimentar al usuario sobre el estado de su envío.

Cargado por

d7758544
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Etiqueta (con

Concepto breve ¿Por qué se usó?


traducción)

Garantiza
<!DOCTYPE html> (tipo Define el tipo compatibilidad con
de documento) de documento navegadores
modernos.

Raíz del
<html lang="es"> (html Mejora accesibilidad y
documento +
idioma español) SEO geolocalizado.
idioma

Incluye información
Contenedor de
<head> (encabezado) para buscadores y
metadatos
configuración inicial.

Permite mostrar
<meta charset="UTF-8">
Codificación de acentos y caracteres
(meta codificación
caracteres especiales
UTF-8)
correctamente.

<meta
Asegura diseño
name="viewport"...> Configuración
responsive en móviles
(meta ventana gráfica de vista
y pantallas.
adaptable)

<meta
Autor del Da crédito y mejora
name="author"...>
documento SEO.
(meta autor)

<meta
Descripción del Mejora indexación en
name="description"...>
sitio buscadores.
(meta descripción)

<meta
name="keywords"...> Palabras clave Ayuda al SEO temático.
(meta palabras clave)

Aparece en pestaña
Título de la del navegador y
<title> (título)
página resultados de
búsqueda.

<link Vincula CSS Aplica diseño visual al


Etiqueta (con
Concepto breve ¿Por qué se usó?
traducción)

rel="stylesheet"...>
formulario.
(enlace hoja de estilos)

Contenido Contiene todo lo que


<body> (cuerpo)
visible ve el usuario.

Agrupa el formulario
<main> (contenido Sección
como núcleo de la
principal) principal
página.

Envía datos a
Formulario de
<form> (formulario) FormSubmit de forma
pago
segura.

<div
Contenedor de Agrupa inputs y
class="formulario">
campos secciones.
(división formulario)

<input type="hidden"> Configuran captcha y


Campos ocultos
(entrada oculta) plantilla de envío.

<section class="seccion-
Bloque de Agrupa datos de
facturacion"> (sección
facturación dirección y contacto.
facturación)

Indica sección de
<h1> (encabezado 1) Título principal
facturación.

<div class="campo"> Contenedor de Agrupa etiqueta y


(campo) campo entrada.

Etiqueta de Mejora accesibilidad y


<label> (etiqueta)
campo claridad.

<input type="text"> Entrada de Captura nombre,


(entrada texto) texto dirección, ciudad, etc.

<input type="email"> Entrada de Captura email y valida


(entrada correo) correo formato.

<div class="grupo- Grupo de Organiza estado y


cuatro"> (grupo campos código postal juntos.
Etiqueta (con
Concepto breve ¿Por qué se usó?
traducción)

horizontal)

<section class="seccion- Agrupa datos de


Bloque de pago
pago"> (sección pago) tarjeta.

Indica sección de
<h2> (encabezado 2) Subtítulo
tarjeta.

Muestra logos de
<img> (imagen) Imagen tarjetas
tarjetas aceptadas.

Entrada
<input type="text"> Captura datos
nombre/númer
(entrada texto tarjeta) impresos en tarjeta.
o tarjeta

<div class="boton"> Contenedor Agrupa botón de


(botón) botón envío.

Botón de Envía datos del


<button> (botón enviar)
acción formulario.

<div id="modal-
Fondo de
overlay"> (superposición Modal overlay
confirmación/error.
modal)

<div id="modal-
Modal Caja con ícono y
contenido"> (contenido
contenido mensaje.
modal)

<img id="modal-icono"> Muestra estado del


Ícono modal
(imagen modal) pago (check o X).

<p id="modal-
Texto de confirmación
mensaje"> (mensaje Texto modal
o error.
modal)

Valida datos y controla


<script> (script) Script externo
modal.

Derechos de autor y
<footer> (pie de página) Pie de página
cierre.

<p> (párrafo) Texto copyright Protege autoría y


Etiqueta (con
Concepto breve ¿Por qué se usó?
traducción)

fecha.

Esto es para que lo leas y te recuerdes de


los campos como están distribuidos :
🧩 Campos <input> con validación aplicada

Justificación
Campo Etiqueta <input> completa
técnica

<input type="text" id="nombre" Campo obligatorio


Nombre
name="nombre" placeholder="Justin para identificar al
completo
Quiles" required> titular.

<input type="email" id="email"


Correo Campo obligatorio
name="email"
electrónic con validación de
placeholder="example@[Link]"
o formato email.
required>

<input type="text" id="direccion" Campo obligatorio


Dirección name="direccion" placeholder="Casa - para ubicación
Calle - Sector" required> física.

<input type="text" id="ciudad" Campo obligatorio


Ciudad name="ciudad" placeholder="Caracas" para referencia
required> geográfica.

<input type="text" id="estado" Campo obligatorio


Estado name="estado" placeholder="Venezuela" para región o
required> entidad federal.

<input type="text" id="codigo-postal"


name="codigo-postal" Campo numérico
Código
placeholder="123456" required obligatorio.
postal
maxlength="6" pattern="\d{1,6}" Máximo 6 dígitos.
inputmode="numeric">

Nombre <input type="text" id="nombre-tarjeta" Campo obligatorio


en la name="nombre-tarjeta" para validar
Justificación
Campo Etiqueta <input> completa
técnica

coincidencia con
tarjeta placeholder="Mr. Justin Quiles" required>
tarjeta.

<input type="text" id="numero-tarjeta"


name="numero-tarjeta" Campo numérico
Número
placeholder="1111222233334444" obligatorio.
de tarjeta
required maxlength="16" pattern="\ Máximo 16 dígitos.
d{16}" inputmode="numeric">

Campo obligatorio
<input type="text" id="mes-exp" para mes. Se
Mes de
name="mes-exp" placeholder="Octubre" mantiene como
expiración
required> texto por formato
variable.

<input type="text" id="anio-exp"


Campo numérico
Año de name="anio-exp" placeholder="2025"
obligatorio.
expiración required maxlength="4" pattern="\d{4}"
Máximo 4 dígitos.
inputmode="numeric">

Campo numérico
<input type="text" id="cvv" name="cvv"
obligatorio.
placeholder="123" required
Máximo 3 dígitos.
CVV maxlength="3" pattern="\d{3}"
Autocompletar
inputmode="numeric"
desactivado por
autocomplete="off">
seguridad.

ESTO ES MIO:
🧾 RESUMEN CSS: Selectores + Concepto + Justificación

Selector / Regla Concepto breve ¿Por qué se usó?

Importa fuente
Mejora legibilidad, estética
@import url(...) Poppins desde
moderna y coherencia visual.
Google Fonts

Define paleta de colores para


:root Variables globales consistencia y fácil
mantenimiento.
Selector / Regla Concepto breve ¿Por qué se usó?

Reset universal de Evita inconsistencias entre


* márgenes y navegadores y aplica fuente
paddings global.

Impide que la página se comprima


Límite mínimo de
html, body más allá de 338px en modo
ancho
inspección.

Centra el contenido vertical y


Estructura base
body horizontalmente, con fondo
centrada
oscuro.

Contenedor Define ancho máximo, padding


main principal del interno y bordes redondeados
formulario para estética y legibilidad.

main (animación Animación de Hace que el formulario aparezca


slideUp) entrada suavemente al cargar.

Agrupación de Organiza las secciones en dos


.formulario
secciones columnas en escritorio.

.seccion- Distribuye los campos


Secciones
facturacion, .secc verticalmente dentro de cada
individuales
ion-pago sección.

Contenedor de Agrupa label e input para


.campo
cada campo alineación vertical y espaciado.

.campo Estilo de foco Mejora navegación con teclado y


input:focus accesible accesibilidad.

Contenedor de
Muestra íconos de tarjetas
.tarjetas imágenes de
aceptadas en fila con separación.
tarjetas

Estilo visual de las Aplica sombra sutil para resaltar


.tarjetas img
tarjetas sobre fondo blanco.

Alinea campos como Estado,


Grupo horizontal
.grupo-cuatro Código Postal, Año Exp y CVV en
de campos
una sola fila.
Selector / Regla Concepto breve ¿Por qué se usó?

Estilo del botón Define color, tamaño, bordes y


.boton button
principal transición para interacción visual.

Cambia el color al pasar el mouse


.boton Efecto hover del
para mejorar experiencia de
button:hover botón
usuario.

Añade borde superior y tipografía


footer (mejorado) Pie de página
más discreta para elegancia.

🧾 RESUMEN JavaScript: Funciones + Concepto + Justificación

Concepto
Función / Bloque ¿Por qué se usó?
breve

Asegura que el script se


Espera carga del
DOMContentLoaded ejecute cuando todo el
DOM
HTML esté listo.

[Link]("sub Captura envío Permite validar antes de


mit") del formulario enviar datos.

Comprueba
Evita envíos con campos
Validaciones básicas nombre, email,
vacíos o incorrectos.
tarjeta y CVV

Garantiza formato
Validación más
Regex (email, tarjeta, CVV) correcto de datos
robusta
sensibles.

Muestra ícono y
Da retroalimentación clara
Modal dinámico mensaje de
al usuario.
éxito/error

setTimeout([Link], Retraso en envío Permite mostrar el modal


Concepto
Función / Bloque ¿Por qué se usó?
breve

2000) antes de enviar datos.

[Link]("cli Cierra modal al Mejora experiencia de


ck") hacer clic fuera usuario.

Cierra modal con Añade accesibilidad y


keydown Escape
tecla ESC comodidad.

YAI TUYO:
1.📌 ¿Define claramente el problema que busca resolver?

El código aborda el problema de recopilar datos de facturación y


tarjeta de forma segura y organizada. Busca resolver la necesidad
de que un usuario pueda ingresar información personal y de pago con
validaciones que eviten errores comunes (como correos inválidos,
números de tarjeta incompletos o CVV incorrectos).

🎯 Objetivo principal de la aplicación

El objetivo principal es crear un formulario de pago seguro,


accesible y validado, que permita enviar datos de manera confiable a
través de un servicio externo (FormSubmit). Además, ofrece
retroalimentación inmediata al usuario mediante un modal visual que
confirma si los datos fueron enviados correctamente o si hubo errores.

MIO:
2.✅ Justificación de la utilidad de la solución

🖥️Explicación de la UI (Interfaz de Usuario)

 Botones

o El botón principal es “Enviar pago”.

o Tiene un color llamativo (morado) y cambia al pasar el


mouse (hover).

o Su función es iniciar la validación y envío del


formulario.
 Campos

o Cada campo (nombre, email, dirección, tarjeta, CVV, etc.)


está acompañado de un label texto descriptivo.

o Los campos sensibles (tarjeta y CVV) tienen validaciones:


longitud fija, solo números, y en el caso del CVV se desactiva
el autocompletar.

o Esto asegura que el usuario sepa qué debe escribir y


cómo.

 Mensajes (Modal)

o Al enviar, aparece una ventana modal con un ícono y un


mensaje:

 ✅ Éxito: “Pago completado y enviado”.

 ❌ Error: “Pago inválido. Verifica los campos.”

o El modal se puede cerrar haciendo clic fuera o presionando


la tecla ESC.

📌 Caso real de ejemplo para explicar en la pizarra

1. Usuario escribe mal el correo electrónico

o Ejemplo: [Link] (sin @).

o El sistema detecta que el formato no es válido.

o Resultado: aparece el modal de error con el ícono rojo ❌ y


el mensaje:

“Pago inválido. Verifica los campos.”

2. Usuario ingresa un número de tarjeta incompleto

o Ejemplo: 12345678 (solo 8 dígitos en vez de 16).

o El sistema valida la longitud y detecta el error.

o Resultado: se muestra el modal de error y el campo puede


marcarse en rojo.

[Link] corrige los datos y vuelve a enviar

 Ahora escribe un correo válido y un número de tarjeta de 16


dígitos.
 Resultado: aparece el modal de éxito con el ícono verde ✅ y el
mensaje:

“Pago completado y enviado”.

 Después de 2 segundos, el formulario se envía correctamente a


FormSubmit.

MIO
Lista completa: JavaScript + Explicación simple
 [Link]("DOMContentLoaded", () => { 👉 Espera a
que la página cargue antes de ejecutar el código.
 const form = [Link]("form"); 👉 Busca el formulario
en el HTML y lo guarda en una variable.
 const modal = [Link]("modal-overlay"); 👉
Selecciona la ventana modal (overlay).
 const icono = [Link]("modal-icono"); 👉 Selecciona
la imagen dentro del modal.
 const mensaje = [Link]("modal-mensaje"); 👉
Selecciona el texto dentro del modal.
 [Link]("submit", (event) => { 👉 Detecta cuando el
usuario intenta enviar el formulario.
 [Link](); 👉 Evita que se envíe automáticamente sin
validar.
 const campos = { ... } 👉 Guarda los valores de nombre, email, tarjeta y
CVV en un objeto.
 .trim() 👉 Elimina espacios en blanco al inicio y final del texto.
 let valido = true; 👉 Variable que indica si los datos son correctos.
 if (![Link] || ![Link] || ![Link] || ![Link])
{ valido = false; } 👉 Si algún campo está vacío, marca como inválido.
 if (![Link]("@") || [Link] !== 16 ||
isNaN([Link]) || [Link] !== 3 ||
isNaN([Link])) { valido = false; } 👉 Revisa formato: email con
“@”, tarjeta con 16 números, CVV con 3 números.
 [Link]("oculto"); 👉 Muestra la ventana modal.

✅ Si es válido: yainniris esto es tuyo del javacript


 [Link] = "./imagenes/[Link]"; 👉 Pone ícono verde de éxito.
 [Link] = "Pago completado"; 👉 Texto alternativo del ícono.
 [Link] = "✅ Payment completado y enviado"; 👉 Mensaje
de confirmación.
 [Link] = "[Link] 👉 Define a dónde se envían
los datos.
 [Link] = "POST"; 👉 Método de envío.
 setTimeout(() => [Link](), 2000); 👉 Espera 2 segundos y envía el
formulario.
❌ Si es inválido:
 [Link] = "./imagenes/[Link]"; 👉 Pone ícono rojo de error.
 [Link] = "Pago inválido"; 👉 Texto alternativo del ícono.
 [Link] = "❌ Payment inválido. Verifica los campos."; 👉
Mensaje de error.
 [Link]("click", () =>
{ [Link]("oculto"); }); 👉 Si haces clic fuera del modal, se
cierra.
 }); 👉 Cierra la función principal.

MIO
Conclusión breve

El proyecto demuestra un enfoque profesional: código semántico y metadatos orientados a


SEO, estructura modular que facilita escalabilidad y evolución hacia arquitecturas seguras,
y una UX accesible que reduce errores y amplía inclusión. Las decisiones técnicas priorizan
la experiencia del usuario, la mantenibilidad del producto y la protección de datos —
requisitos imprescindibles para cualquier pasarela de pagos seria.

Cierre para la presentación

Gracias por el trabajo conjunto: con estas bases pueden defender el diseño ante auditorías
técnicas y comerciales; el siguiente paso es integrar tokenización con una pasarela
certificada y completar las pruebas de seguridad y accesibilidad. Buen trabajo, Emmanuel y
compañera — listos para la implementación.

También podría gustarte