Backend, APIs y datos · Mixto

Trabajar con dinero: pagos y cargos

En una línea: Nunca guardes datos de tarjeta, nunca confíes en una cantidad que llegó del cliente, y mantén siempre un registro inmutable de eventos.

La división de responsabilidad

El proveedor de pagos gestiona la tarjeta; tú gestionas el pedido. Los detalles se introducen en el formulario del proveedor o en un componente aislado, y en tu lado solo se guarda un identificador. Eso te mantiene fuera de la mayor parte del mundo de cumplimiento normativo.

El importe se calcula en el servidor a partir de tus precios. Un importe que llegó del cliente es una petición, no un hecho.

Estados, no indicadores

Un pedido pasa por estados definidos: creado, esperando pago, pagado, fallido, reembolsado. Cada transición se registra con una hora y un motivo. Un indicador booleano de 'pagado' pierde la historia justo cuando la necesitas.

Las notificaciones del proveedor de pagos llegan desordenadas y a veces por duplicado. Trátala por identificador de evento, de forma que se pueda repetir con seguridad.

Conciliación

Construye un proceso diario que compare tus registros con el informe del proveedor. Las discrepancias siempre ocurren; la pregunta es si las encuentras tú o el cliente.

En profundidad

Guarda los importes como enteros en la unidad más pequeña, nunca como decimal de coma flotante, y siempre con un código de moneda. Guarda también el tipo de cambio y el precio mostrado realmente: son los datos que hacen falta en cualquier disputa y en cualquier informe.