El error que casi nadie corrige
La forma rápida de integrar un botón de pago es dejar que el navegador avise: el cliente paga, la página recibe una respuesta y le dice al servidor «este pedido ya está pagado». Funciona en la demo.
El problema es que todo lo que ocurre en el navegador lo controla quien está del otro lado. Cualquiera con la consola del navegador abierta puede mandar ese mismo aviso sin haber pagado, y el sistema le va a creer, porque le pidió permiso a la parte equivocada.
La forma correcta es que el pedido solo cambie a pagado cuando el propio banco se lo confirma al servidor, por un canal aparte que el cliente no toca. El navegador puede mostrar «gracias por tu compra» todo lo que quiera; el estado real lo decide el servidor cuando recibe y verifica esa confirmación.
- la confirmación se verifica en el servidor, nunca en el navegador
- el pedido no pasa a pagado porque el cliente diga que pagó
- cada aviso se procesa una sola vez, aunque el banco lo reintente
- el monto confirmado se compara contra el monto del pedido