# Guion del vídeo, para comentar o para lo que necesites.
# Es una PROYECCIÓN del nuestro: lleva el contenido —qué se dice, qué se ve, en
# qué orden y cuánto dura— y no la maquinaria que lo convierte en vídeo.
id: productos-ciclo-de-vida
title: Ciclo de vida de la sesión
audience: Desarrollador que necesita saber cuándo confirmar un pago y qué esperar de cada estado
objetivo: >
  Al terminar, el espectador conoce los cuatro estados, sabe que `failed` solo le pasa a un Botón y
  qué le cambia eso al código, sabe de qué depende el vencimiento, y se lleva la que más rompe
  integraciones: la acreditación no es un estado.
cta: 'Siguiente: ''Transacción a dos fases'', para entender la acreditación.'
target_duration_s: 133
storyboard:
  - 'n': 1
    on_screen: Nace en pending, termina de tres formas
    narracion: >-
      Una sesión nace en pendiente y termina de una de tres formas: se paga, se rechaza o se vence.
      Saber cuál es cuál es lo que te dice cuándo confirmar y qué esperar.
    visual: Una sesión naciendo en pendiente, con tres salidas posibles dibujadas delante.
    duracion_s: 13
  - 'n': 2
    on_screen: Los cuatro estados
    narracion: >-
      Los cuatro son estos. Pendiente, en cuanto creas la sesión. Pagado, cuando el débito sale
      bien, que es la fase uno. Fallido, cuando el pago se rechaza. Y vencido, cuando se acaba el
      plazo, o cuando la expiras tú a propósito.
    visual: Los cuatro estados en una máquina simple, con qué provoca cada transición.
    duracion_s: 16
  - 'n': 3
    on_screen: '`failed` solo le pasa a un Botón'
    narracion: >-
      Pero uno de esos cuatro no le pasa a todo el mundo. El contrato lo dice sin rodeos: el valor
      fallido solo se aplica a las sesiones creadas con botón de pago. Una Solicitud tiene dos
      finales, no tres: o se paga, o vence. Y dentro de una Parada pasa lo mismo.
    visual: Una Solicitud con solo dos salidas, y la rama de fallido apagada.
    duracion_s: 20
  - 'n': 4
    on_screen: Y eso te cambia el código
    narracion: >-
      Lo que eso te cambia es concreto: si tu código decide algo mirando fallido —marcar la factura,
      avisar a alguien, reintentar— ese camino nunca se ejecuta para las Solicitudes. Lo que tienes
      que vigilar ahí es vencido.
    visual: Una rama de código que nunca se ejecuta, con la rama de vencido marcada como la que sí.
    duracion_s: 14
  - 'n': 5
    on_screen: De qué depende el vencimiento
    narracion: >-
      Y el vencimiento lo fija la forma de la sesión, que es la decisión de duración que ya tomaste
      al crearla. Un Botón vence cuando se acaban sus minutos; una Solicitud, cuando pasa su fecha.
      Y cualquiera de las dos puede vencer antes, si la expiras tú a propósito. Eso sí, vencido se
      refleja de verdad al consultar el estado: no se queda en pendiente esperando a que preguntes.
    visual: 'Dos relojes distintos: los minutos de un Botón y la fecha de una Solicitud.'
    duracion_s: 27
  - 'n': 6
    on_screen: La acreditación no es un estado
    visual: Lámina de sección, sin voz.
    duracion_s: 3
  - 'n': 7
    on_screen: El status se queda en `paid`
    narracion: >-
      Y esto es lo que rompe más integraciones que ninguna otra cosa. Tras pagado, la acreditación
      ocurre —el dinero se mueve a tu cuenta— pero el status se queda en pagado. No existe un estado
      acreditado: si sondeas esperándolo, esperas para siempre. Te enteras por el webhook de
      acreditación, o consultando receiver_credits en la misma respuesta del status, que trae el
      desglose y la referencia bancaria.
    visual: Un bucle de sondeo esperando un estado que no existe, y al lado el campo que sí cambia.
    duracion_s: 25
  - 'n': 8
    on_screen: Compruébalo tú mismo
    narracion: >-
      Y no hace falta que te fíes: en el simulador puedes forzar cada desenlace y verlo reflejado en
      el status, sin pagar nada. Sigue con la transacción a dos fases, que es donde se explica la
      acreditación entera.
    visual: Cierre de marca; el plano de control forzando cada desenlace y el status reflejándolo.
    duracion_s: 15
