Tus decisiones sobre tus datos
Usamos cookies necesarias para que este sitio funcione. Todo lo demás —medir cómo se usa el sitio o personalizar lo que ves— solo ocurre si lo aceptas.
Retirar un procesador de pagos
Quitar un proveedor es fácil. Reemplazar
Ver cómo funcionan los pagosLO QUE NADIE ESCRIBIÓ
El procesador antiguo tomaba todos los medios de pago en una llamada.
Un carrito pagado con tarjeta de regalo y tarjeta de crédito iba al proveedor como un arreglo y volvía como un resultado. O se movían los dos o ninguno, y nada en nuestro código tenía que organizarlo. Nunca se escribió en un documento de diseño porque nunca fue una decisión: era una propiedad del endpoint. Esas son las garantías que descubres quitándolas.
HablemosQUÉ LO REEMPLAZÓ
Secuencial, con compensación, y es de verdad peor.
Primero se reservan las tarjetas de regalo, luego se autoriza el resto por la pasarela, y si esa autorización falla se libera cada reserva. Funciona, y no es equivalente: una caída entre reservar y autorizar deja una retención que solo limpia la caducidad. Podríamos esconderlo tras la palabra «eventualmente». Es más útil decir que la atomicidad entre una base de datos nuestra y un procesador ajeno exigiría una transacción distribuida, y elegimos no construirla.
HablemosLA QUE IMPORTABA
Un contador no es un documento.
Traer las tarjetas de regalo a casa obligó a decidir cómo dos compras simultáneas comparten un saldo. El carrito usa bloqueo optimista, porque un carrito es un documento que se reescribe entero. Una tarjeta de regalo es un contador, y un contador quiere una sola sentencia guardada: decrementar donde el saldo aún alcanza, y mirar cuántas filas cambiaron. Lo demostramos sustituyendo esa sentencia por el evidente leer-luego-escribir y viendo cómo dos reservas simultáneas tenían éxito: el mismo saldo gastado dos veces.
HablemosUna prueba que pasa no demuestra que atraparía el fallo.
Cada guarda de esa migración se comprobó reintroduciendo el defecto para el que existía y confirmando que la prueba fallaba. Dos habrían sido decoración: la de concurrencia de arriba, y una conversión de importes: el procesador antiguo hablaba en unidades mayores y el nuevo en menores, así que copiar la división entre cien habría cobrado a cada cliente el uno por ciento de lo que debía, y habría cuadrado a la perfección con cada número redondo del conjunto de pruebas.