# language: es # Fuente: album/book/ops-templates/pet-owner/04-pago-turno.md # Drive: 07. Finanzas y contabilidad/Mercado Pago # Tests Backend: pytest tests/contracts/payments/test_mercadopago.py # Tests Frontend: npx playwright test payment.spec.ts Característica: Pago de turno Como dueno de mascota con turno coordinado Quiero pagar mi turno online Para confirmar la visita del veterinario Antecedentes: Dado que tengo un turno en estado "Coordinado" Y el turno tiene asignado veterinario "Dra. Garcia" Y la fecha asignada es "15 de enero a las 10:00" # ============================================ # FLUJO DE PAGO EXITOSO # ============================================ Escenario: Pagar turno con tarjeta de credito Dado que estoy en el detalle de mi turno coordinado Cuando hago click en "Pagar" Entonces deberia ser redirigido a Mercado Pago Y deberia ver el monto correcto Cuando selecciono "Tarjeta de credito" Y completo los datos de la tarjeta Y confirmo el pago Entonces deberia volver a la plataforma Y deberia ver "Pago exitoso" Y el turno deberia estar en estado "Pagado" Escenario: Recibir confirmacion de pago Dado que complete el pago exitosamente Entonces deberia recibir email de confirmacion Y el email deberia contener: | campo | | Fecha del turno | | Direccion | | Veterinario asignado | | Monto pagado | | Numero de operacion | # ============================================ # METODOS DE PAGO # ============================================ Esquema del escenario: Pagar con diferentes metodos Dado que estoy en Mercado Pago Cuando selecciono metodo "" Y completo el pago Entonces el pago deberia ser Y el estado de acreditacion deberia ser "" Ejemplos: | metodo | resultado | acreditacion | | Tarjeta credito | exitoso | inmediata | | Tarjeta debito | exitoso | inmediata | | Dinero en cuenta | exitoso | inmediata | | Transferencia | pendiente | 1-2 dias | | Rapipago | pendiente | hasta 24hs | # ============================================ # MANEJO DE ERRORES # ============================================ Escenario: Pago rechazado por fondos insuficientes Dado que estoy en Mercado Pago Cuando intento pagar con tarjeta sin fondos Entonces deberia ver error "Fondos insuficientes" Y deberia poder reintentar con otra tarjeta Y el turno deberia seguir en estado "Coordinado" Escenario: Usuario cancela el pago Dado que estoy en Mercado Pago Cuando hago click en "Volver al sitio" Entonces deberia volver a la plataforma Y deberia ver mensaje "El pago fue cancelado" Y deberia ver boton "Reintentar pago" Y el turno deberia seguir en estado "Coordinado" Escenario: Cierre de browser durante pago Dado que estoy en Mercado Pago Y cierro el navegador accidentalmente Cuando vuelvo a la plataforma Y voy a "Mis turnos" Entonces deberia poder ver el estado real del pago # Si se proceso: Pagado. Si no: Coordinado con opcion de pagar # ============================================ # CASOS ESPECIALES # ============================================ Escenario: Link de pago expirado Dado que recibi el link de pago hace mas de 24 horas Cuando hago click en el link Entonces deberia ver "Este link ha expirado" Y deberia ver "Contacta a soporte para generar uno nuevo" Escenario: Intento pagar turno ya pagado Dado que mi turno ya esta en estado "Pagado" Cuando accedo al link de pago Entonces deberia ver "Este turno ya fue pagado" Y deberia ver boton "Ver detalle del turno" Escenario: Precio cambio desde la coordinacion # Caso muy raro pero posible Dado que el precio del servicio aumento desde que se coordino Cuando voy a pagar Entonces deberia ver el precio original acordado # El precio se congela al momento de coordinacion # ============================================ # INTEGRACION CON WEBHOOK # ============================================ Regla: El estado del turno se actualiza via webhook de Mercado Pago Escenario: Webhook confirma pago aprobado Dado que el usuario completo el pago en Mercado Pago Cuando Mercado Pago envia webhook con status "approved" Entonces el turno deberia cambiar a estado "Pagado" Y el veterinario deberia recibir notificacion Y el usuario deberia recibir email de confirmacion Escenario: Webhook informa pago pendiente Dado que el usuario pago con transferencia bancaria Cuando Mercado Pago envia webhook con status "pending" Entonces el turno deberia quedarse en "Coordinado" Y deberia registrarse el pago pendiente Y el usuario deberia recibir email "Esperando acreditacion" Escenario: Webhook falla pero pago se proceso # Caso de error que requiere intervencion manual Dado que el usuario pago exitosamente Pero el webhook fallo por error de red Entonces el turno seguira en "Coordinado" Y el equipo de ops deberia recibir alerta Y deberian poder actualizar manualmente