Tienda en línea · negocio propio · en producción
La tienda que construimos para nuestra propia operación: pago con tarjeta u OXXO y aviso por Telegram en cada pedido
InovaTienda es nuestra tienda en línea de productos médicos y dentales, con unos 3,932 productos. Cobra con tarjeta o en OXXO, descuenta inventario solo cuando el pago se confirma y avisa por Telegram una sola vez por pedido. En línea en tiendainova.com.
- Cliente
- InovaTienda (negocio propio de riel)
- Industria
- Comercio electrónico de insumos médicos y dentales · México
Negocio propio: sistema que construimos para nuestra propia operación
El problema
Vender un catálogo grande a compradores que pagan de formas distintas, y operar la tienda sin que alguien esté mirando la pantalla todo el día.
- Cobrar con tarjeta y en efectivo: una parte de los compradores paga en OXXO y ese pago llega horas o días después. El sistema tiene que esperar el depósito sin descontar inventario antes de tiempo, y cerrar el pedido si el comprobante vence.
- Descontar el inventario solo cuando el dinero llegó, una sola vez, aunque el proveedor de pagos avise dos veces.
- Enterarse de cada pedido pagado sin abrir un panel: un aviso al teléfono con lo que se vendió.
- Que nadie pague menos de lo que vale: el precio que se cobra tiene que salir de la base de datos, no de la pantalla.
- Operar el catálogo sin desarrollador: alta de productos, corrección de precios de cientos de renglones, pedidos, alertas de existencia.
Antes
- Cómo se tomaban y cobraban los pedidos antes de la tienda: pendiente de documentar; no se estima.
Qué construimos
| Fase | Qué quedó funcionando |
|---|---|
| Catálogo | Seis categorías, buscador, comparador, lista de deseos y carrito. Los cambios de precio o inventario se reflejan sin recargar. La fórmula del total es idéntica en carrito, pago, base, cobro y aviso. |
| Cupones y descuento a estudiantes | El cupón se aplica en pantalla y se vuelve a validar en el servidor antes de cobrar. Descuento a estudiantes verificados (5 %) con vigencia anual, aprobado desde el panel; no se acumula con cupones. |
| Pago con Stripe: tarjeta u OXXO | El servidor recalcula el carrito contra la base, aplica el descuento, crea el pedido y abre el pago. Con OXXO el pedido queda pendiente hasta que Stripe confirma el depósito; si el comprobante vence, se marca como fallido. |
| Después del pago | Una función de servidor recibe la confirmación, marca el pedido, descuenta el inventario mediante una función de base de datos y envía el aviso por Telegram una sola vez, con reintento. |
| Panel de administración | Productos, pedidos, inventario y alertas de existencia. Edición masiva por Excel. El rol de administrador vive en la base de datos, no en el navegador. |
| Revisión de seguridad | El despliegue publicaba archivos SQL y documentación interna como estáticos; se cerró con una lista de exclusión. Lo decimos porque es lo que se encuentra revisando, no construyendo. |
Ajustes después de la entrega
- Lo que este proyecto no tiene, dicho como tal: no tiene pruebas automatizadas ni fases documentadas como el ERP DG; se construyó de forma incremental para nuestra operación. Es la diferencia entre lo que hacemos para nosotros y lo que entregamos a un cliente.
Cómo se desarrolló
- 01
Catálogo primero
Los productos se cargaron en la base y también quedaron embebidos en la página como respaldo, para que el catálogo se vea aunque la base no responda.
- 02
Pago en modo de prueba
Hasta que el flujo completo (carrito → pago → confirmación → inventario → Telegram) funcionó de punta a punta con tarjeta y con OXXO, incluidos el comprobante vencido y el reintento del aviso.
- 03
Panel de administración
Con las operaciones que se hacían a mano: alta y edición de productos, edición masiva por Excel, pedidos, inventario y alertas.
- 04
Revisión de seguridad
Dos correcciones: precios revalidados en el servidor y exclusión de archivos internos del despliegue. 128 commits entre el 3 de junio y el 29 de julio de 2026.
Tecnología
JavaScript sin framework en el navegador (una sola página con la tienda y el panel); Supabase (PostgreSQL con permisos por fila y funciones para inventario, pedidos y verificación de estudiantes); Stripe Checkout con tarjeta y OXXO; Telegram Bot API; dos funciones serverless en Vercel.
Cifras verificadas
- Productos en catálogo
- ~3,932
- Categorías
- 6
- Formas de pago
- Tarjeta y OXXO
- Funciones de servidor
- 2
- Descuento a estudiantes verificados
- 5 %
- Historia
- 128 commits
- Dominio
- tiendainova.com
Métricas de negocio: son nuestras, existen en la base de datos y se publicarán cuando decidamos qué se comparte. No se estiman.
Qué cambió
Cobra con tarjeta y en OXXO sin intervención
Incluido el caso en que el comprobante de OXXO vence sin pago.
El inventario se descuenta con el pago confirmado
Una sola vez por pedido, aunque el proveedor avise dos veces.
Cada pedido pagado llega al teléfono
Un aviso por Telegram que no se duplica.
Nadie paga menos que el precio de la base
Aunque manipule el carrito en el navegador.
El catálogo se opera sin desarrollador
Alta de productos, corrección masiva desde Excel, pedidos, inventario y alertas.
Descuento a estudiantes con verificación
Aprobado o rechazado desde el panel, sin acumularse con cupones.
¿Vendes por WhatsApp y cobras por transferencia a mano?
Pedidos que se pierden, pagos que hay que confirmar uno por uno, inventario que se descuenta cuando alguien se acuerda. Cuéntanos cómo lo llevan hoy.