# 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: sdk-antes-de-dinero-real
title: Antes de tocar dinero real
audience: Quien va a integrar el SDK y todavía no ha escrito código
objetivo: >
  Al terminar, el espectador sabe que el SDK es la única parte de SPIDI sin simulador, que lo que
  decide si el dinero se mueve es de dónde salió la sesión y no a dónde apunta el cliente, que la
  confirmación no se reintenta nunca, y que el botón se deshabilita mientras la petición está en
  vuelo. El objetivo no es que aprenda: es que se detenga antes de escribir la primera línea.
cta: 'Siguiente: «El contrato y los errores», y después la guía de tu plataforma.'
target_duration_s: 122
storyboard:
  - 'n': 1
    on_screen: Aquí no puedes forzar nada
    narracion: >-
      En el resto de este portal, quien aprueba tu integración es el simulador: fuerzas el desenlace
      que quieras, tantas veces como haga falta. Con el SDK no existe esa pieza. Se desarrolla
      contra el sandbox, que sí protege tu dinero y el de tu cliente, pero ahí las cosas ocurren o
      no ocurren: no se fuerzan.
    visual: En un lado se pueden forzar los desenlaces; en el otro solo se puede esperar a que ocurran.
    duracion_s: 22
  - 'n': 2
    on_screen: Lo decide la sesión, no el cliente
    narracion: >-
      Y lo que decide si el dinero se mueve no es el entorno al que apuntas: es de dónde salió la
      sesión. Una sesión creada en producción debita de verdad aunque tu aplicación apunte al
      sandbox. Mezclar orígenes es la forma de mover dinero real creyendo que estás probando, y un
      débito no tiene reverso técnico.
    visual: Lo que decide no es a dónde apunta el cliente, sino de dónde salió la sesión.
    duracion_s: 22
  - 'n': 3
    on_screen: La confirmación no se reintenta. Nunca
    narracion: >-
      La confirmación del débito no se reintenta nunca. La interfaz no admite claves de idempotencia
      en esa operación, así que un segundo intento puede debitarle dos veces al pagador. Si pierdes
      la respuesta, no repitas: consulta el estado, que es una lectura y puedes repetirla sin
      riesgo.
    visual: 'Un segundo intento no repite: le saca el dinero dos veces al pagador.'
    duracion_s: 18
  - 'n': 4
    on_screen: Un doble toque es un doble débito
    narracion: >-
      Por eso, en tu pantalla, el botón de confirmar se deshabilita mientras la petición está en
      vuelo. Es la regla más importante de todo el SDK, y la única cuyo incumplimiento le cuesta
      dinero al pagador. Si escribes esa pantalla y no lo pones, la integración está mal aunque
      compile.
    visual: El botón bloqueado mientras la petición viaja.
    duracion_s: 19
  - 'n': 5
    on_screen: Y el primer pago real se prepara
    narracion: >-
      Cuando el sandbox está cerrado y la certificación pasada, queda un último ensayo que sí mueve
      dinero: el primero de verdad, ya en producción. Para eso hay una lista, y no es de
      configuración sino de operación: autorización escrita, monto mínimo, una persona que opera y
      otra que observa, y ante cualquier respuesta ambigua, consultar el estado y detenerse.
    visual: 'La lista del primer pago real: operación, no configuración.'
    duracion_s: 23
  - 'n': 6
    on_screen: Declara el ambiente. Siempre
    narracion: >-
      Y dos que se olvidan. El ambiente se declara siempre, explícito: varias plataformas apuntan a
      producción si no dices otra cosa. Y una sesión sirve una sola vez: para reintentar, tu backend
      crea otra. Con eso en la cabeza, ya puedes ir a la guía de tu plataforma.
    visual: 'Cierre: el ambiente se declara siempre, y una sesión sirve una vez.'
    duracion_s: 18
