Nuevo en la biblioteca: Una reserva, dos cosas que tienen que estar libres a la vez. Leer el artículo
yodai Academia Reservas y pedidos

Academia Construir Reservas y pedidos

La última unidad, dos personas comprando a la vez: quién se la lleva

Sabe que el empate lo gana el pago que se completa primero en tu sistema, no el clic que llega primero desde un móvil, y qué le dice a quien pierde antes de cobrarle nada.

7 min de lectura

Con el hueco ya acotado a diez minutos, queda decidir quién se lleva la unidad cuando dos compras se cruzan dentro de esa misma ventana. Son las ocho de la tarde y te queda una plaza para el taller del sábado. Dos personas la ven libre en la web casi al mismo segundo. Las dos aprietan "reservar" con un parpadeo de diferencia entre una y otra. Solo una se la lleva, y dentro de tres minutos vas a tener que decidir qué le escribes a la que se queda sin sitio.

Ya sabes que tu web resta la unidad al cobrar, no al confirmar, y que a quien empieza a pagar le guardas el hueco un rato mientras rellena la tarjeta. Con eso resuelves casi todos los casos: si Marta empieza a pagar dos minutos antes que Julián, Julián ve la plaza cerrada antes de sacar la cartera de casa. El empate de verdad, el que te obliga a decidir una regla, solo existe en la rendija de segundos en la que dos personas aprietan el botón casi a la vez, antes de que ese hueco se haya asignado a nadie todavía.

La regla que sí funciona

La tentación es fiarse del reloj: gana quien hizo clic antes. Suena justo, y es la primera regla que se le ocurre a casi todo el mundo. Pero no sirve. El reloj del móvil de Marta y el del móvil de Julián no están sincronizados entre sí, y el mensaje de cada uno tarda un tiempo distinto en llegar a tu servidor según la cobertura que tenga en ese momento, o según si su banco le pide un código de confirmación y el de la otra persona no. Puedes tener a Julián apretando el botón un segundo antes que Marta y aun así llegando después que ella a tu sistema.

La regla que funciona es otra: gana quien completa el pago primero dentro de tu sistema, no quien lo intenta primero desde su pantalla. Tu servidor recibe los dos intentos de cobro y los procesa uno detrás de otro, nunca a la vez, aunque para los dos compradores les parezca simultáneo desde donde están. Al primero que llega se le resta la unidad y se le cobra. Al segundo, cuando le toca su turno una fracción de segundo después, ya no queda nada que cobrarle.

Quién se lleva la última unidad
Gana quien hizo clic antes
  • Se decide por el reloj de cada móvil
  • Dos relojes que no coinciden entre sí
  • Depende de la cobertura de cada comprador al enviar la petición
Gana quien completa el pago antes
  • Se decide por el orden de llegada a un mismo sistema
  • Un único reloj: el de tu servidor
  • No importa la cobertura de nadie, solo el orden en que se procesan los dos cobros

Cual elijo: Elige siempre la segunda. La primera depende de aparatos que no controlas; la segunda depende de un solo punto, el tuyo, y ahí sí puedes garantizar que nunca se vende dos veces la misma unidad.

Por qué comprobar y cobrar en dos pasos te la juega

Hay una forma de montarlo que parece razonable y no lo es: primero compruebas si queda unidad, y si queda, entonces cobras. Dos pasos, uno detrás de otro, como se haría a mano en una tienda con un cuaderno. El problema es lo que cabe entre esos dos pasos cuando todo pasa en internet y en segundos.

Si Marta y Julián comprueban el stock casi a la vez, los dos ven "queda una". Los dos pasan el primer paso sin que nada se lo impida. Luego los dos cobran, porque nada les ha dicho todavía que el otro ya se ha adelantado. Acabas con dos tarjetas cobradas y una sola plaza real. La lección uno de este curso ya dejó claro que la unidad se resta en el instante del cobro, no antes. Aquí es donde ese instante importa de verdad: comprobar y cobrar tienen que pasar en el mismo movimiento, no en dos, porque cualquier hueco entre medias es una rendija por la que entra la doble venta.

Separar comprobar y cobrar es lo que produce la doble venta
El stock se comprueba en un paso y se cobra en otro paso, separadoDos compradores pasan el primer paso a la vez y los dos acaban con la tarjeta cobrada

Entre el paso de comprobar y el paso de cobrar hay un hueco de tiempo en el que el otro comprador entra sin que nada se lo impida

El error caro: cobrar a los dos y arreglarlo después con una devolución
Cobrar primero y decidir después a quién le corresponde la plaza cuesta más de lo que parece: al que pierde le retienes el dinero varios días hasta la devolución, y encima tienes que explicarle por qué se le cobró algo que nunca iba a recibir. Se evita entero comprobando y cobrando en el mismo paso: si no queda unidad, el cobro ni se intenta, y nadie llega a ver un cargo en su cuenta por algo que ya no existía cuando lo pidió.

Qué le dices a quien pierde

Resuelto quién gana, queda el otro lado del mostrador: qué ve y qué siente quien pierde el empate. Aquí casi todo el mundo comete un fallo pequeño con consecuencias grandes: dejar a esa persona con la rueda de "procesando" dando vueltas más de la cuenta, o peor todavía, dejarle terminar de escribir los dieciséis dígitos de la tarjeta para enterarse al final de que ya no había nada que comprar.

El aviso tiene que llegar antes de pedirle la tarjeta, no después. Si el hueco ya está asignado a Marta en el instante en que Julián llega al paso de pago, Julián tiene que verlo cerrado ahí mismo, sin rellenar un solo campo. Y el aviso no puede ser un simple "agotado": eso cierra la puerta de golpe y no le ofrece nada a cambio de los tres minutos que ha dedicado a decidirse. Mejor decirle que se ha agotado por segundos, con esas palabras, y darle algo concreto que hacer con esa frustración: apuntarse a una lista de espera, que le avises tú el primero si se libera una unidad, o que se le proponga directamente la siguiente fecha disponible.

Lo que ve Julián al llegar un segundo tarde
Vaya, se acaba de agotar. Alguien se ha adelantado por segundos a la última plaza del taller del sábado. Apúntate aquí y te avisamos el primero si se libera un hueco, o si lo prefieres, te reservamos directamente la plaza del sábado que viene.

Con esto ya tienes cerrado el empate: gana el pago que se completa primero en tu sistema, no el clic que llega primero desde un móvil, y a quien pierde se le avisa antes de cobrarle y se le pone algo concreto en la mano en vez de una puerta cerrada. La semana que viene bajamos un nivel más: qué pasa cuando lo que se agota no es el producto entero, sino una talla, un color o un turno concreto dentro de él.

Lo que te llevas
  • La regla del empate está decidida: gana el pago que se completa primero en tu sistema
  • Comprobar stock y cobrar pasan en el mismo movimiento, no en dos pasos separados
  • A quien pierde se le avisa antes de pedirle la tarjeta, nunca después de cobrarle
  • El mensaje de aviso lleva siempre una alternativa concreta, no un simple agotado

Ponte a prueba

Responde antes de abrir cada una. Si alguna se te resiste, vuelve al apartado que la explica.

1. Un cliente escribe molesto porque le cobraste el sábado y le devolviste el dinero al día siguiente diciendo que ya no quedaba plaza.

Fallo que comprobaste el stock y cobraste en dos pasos separados, dejando un hueco por el que entró el otro comprador. Se corrige uniendo comprobación y cobro en el mismo paso, así nunca se llega a cobrar a quien ya ha perdido el empate.

2. Dos compradores dicen haber apretado el botón al mismo segundo según el reloj de sus móviles, pero uno tardó cuatro segundos más en rellenar la tarjeta.

Se lleva la plaza quien completó el pago antes en tu servidor, no quien "llegó antes" según su propio móvil: los relojes de los dos aparatos ni están sincronizados entre sí ni tienen por qué importar, lo único que cuenta es el orden en que los dos cobros se resuelven en tu sistema.

3. Te planteas avisar a quien pierde el empate con un simple "sin stock" y nada más.

No basta: cierra la puerta sin ofrecer salida a los tres minutos que esa persona ya ha invertido decidiéndose. Se sustituye por un aviso que reconozca que se ha agotado por segundos y una alternativa concreta, como lista de espera o la fecha siguiente, para no perder la venta del todo.

Ese empate se resuelve por unidad, pero solo si de verdad cuentas unidad por unidad: talla, color o turno, no el producto entero metido en un solo número.

SiguienteLo que escribe el sistema solo, y lo que escribes tú con tu mano