Trabajar con dinero: pagos y cargos
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.