# 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 Feature: Pago de turno Como dueno de mascota con turno coordinado Quiero pagar mi turno online Para confirmar la visita del veterinario Background: Given que tengo un turno en estado "Coordinado" And el turno tiene asignado veterinario "Dra. Garcia" And la fecha asignada es "15 de enero a las 10:00" # ============================================ # FLUJO DE PAGO EXITOSO # ============================================ Scenario: Pagar turno con tarjeta de credito Given que estoy en el detalle de mi turno coordinado When hago click en "Pagar" Then deberia ser redirigido a Mercado Pago And deberia ver el monto correcto When selecciono "Tarjeta de credito" And completo los datos de la tarjeta And confirmo el pago Then deberia volver a la plataforma And deberia ver "Pago exitoso" And el turno deberia estar en estado "Pagado" Scenario: Recibir confirmacion de pago Given que complete el pago exitosamente Then deberia recibir email de confirmacion And el email deberia contener: | campo | | Fecha del turno | | Direccion | | Veterinario asignado | | Monto pagado | | Numero de operacion | # ============================================ # METODOS DE PAGO # ============================================ Scenario Outline: Pagar con diferentes metodos Given que estoy en Mercado Pago When selecciono metodo "" And completo el pago Then el pago deberia ser And el estado de acreditacion deberia ser "" Examples: | 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 # ============================================ Scenario: Pago rechazado por fondos insuficientes Given que estoy en Mercado Pago When intento pagar con tarjeta sin fondos Then deberia ver error "Fondos insuficientes" And deberia poder reintentar con otra tarjeta And el turno deberia seguir en estado "Coordinado" Scenario: Usuario cancela el pago Given que estoy en Mercado Pago When hago click en "Volver al sitio" Then deberia volver a la plataforma And deberia ver mensaje "El pago fue cancelado" And deberia ver boton "Reintentar pago" And el turno deberia seguir en estado "Coordinado" Scenario: Cierre de browser durante pago Given que estoy en Mercado Pago And cierro el navegador accidentalmente When vuelvo a la plataforma And voy a "Mis turnos" Then deberia poder ver el estado real del pago # Si se proceso: Pagado. Si no: Coordinado con opcion de pagar # ============================================ # CASOS ESPECIALES # ============================================ Scenario: Link de pago expirado Given que recibi el link de pago hace mas de 24 horas When hago click en el link Then deberia ver "Este link ha expirado" And deberia ver "Contacta a soporte para generar uno nuevo" Scenario: Intento pagar turno ya pagado Given que mi turno ya esta en estado "Pagado" When accedo al link de pago Then deberia ver "Este turno ya fue pagado" And deberia ver boton "Ver detalle del turno" Scenario: Precio cambio desde la coordinacion # Caso muy raro pero posible Given que el precio del servicio aumento desde que se coordino When voy a pagar Then deberia ver el precio original acordado # El precio se congela al momento de coordinacion # ============================================ # INTEGRACION CON WEBHOOK # ============================================ Rule: El estado del turno se actualiza via webhook de Mercado Pago Scenario: Webhook confirma pago aprobado Given que el usuario completo el pago en Mercado Pago When Mercado Pago envia webhook con status "approved" Then el turno deberia cambiar a estado "Pagado" And el veterinario deberia recibir notificacion And el usuario deberia recibir email de confirmacion Scenario: Webhook informa pago pendiente Given que el usuario pago con transferencia bancaria When Mercado Pago envia webhook con status "pending" Then el turno deberia quedarse en "Coordinado" And deberia registrarse el pago pendiente And el usuario deberia recibir email "Esperando acreditacion" Scenario: Webhook falla pero pago se proceso # Caso de error que requiere intervencion manual Given que el usuario pago exitosamente But el webhook fallo por error de red Then el turno seguira en "Coordinado" And el equipo de ops deberia recibir alerta And deberian poder actualizar manualmente