Historia
Actualmente estamos utilizando un llamado modelo de redireccionamiento para nuestros pagos en línea (donde envía al pagador a una pasarela de pago, donde ingresa sus detalles de pago; la pasarela lo devolverá a una página de devolución de llamada de éxito / fracaso). Eso es fácil y directo, pero desafortunadamente es bastante incómodo y en ocasiones confuso para nuestros clientes (abandonar el sitio, cambiar los detalles de su tarjeta de crédito con un inicio de sesión adicional en otro sitio, etc.).
Descripción de la intención y el problema
Ahora tenemos la intención de cambiar a un enfoque integrado utilizando un intercambio de solicitudes y respuestas XML. Mi problema es cómo atender todas (o más bien la mayoría) de las cosas que pueden suceder durante el procesamiento, teniendo en cuenta que normalmente la simplicidad es robusta mientras que la complejidad es frágil.
Ejemplos
- Anulación del usuario: el usuario ingresa los detalles de la tarjeta de crédito y pulsa enviar. Se envía un mensaje XML a la puerta de enlace del proveedor y espera la respuesta. El usuario hace clic en "detener" en su navegador o cierra la ventana.
- ignore_user_abort () en PHP puede ser una opción, pero ¿es confiable?
- ¿podría ser mejor redirigir al usuario a una página de "espera", que a su vez abre una solicitud AJAX u otra solicitud al procesador real que no depende de la conexión?
- La base de datos desaparece
- parece demasiado complicado, pero con, por ejemplo, un servidor web en los Estados Unidos y una base de datos en el Reino Unido, ha sucedido y volverá a suceder: el usuario hace clic en su pedido, la solicitud de pago se ha enviado al proveedor pero la respuesta no se puede almacenar en el base de datos. ¿Qué enfoque podría usar, usando PHP para iniciar un SQL como "Transacción" que solo al final se compromete o revierte, dependiendo de los pasos individuales? En caso de que no se hayan cometido ni retroceder ni retroceder, podría "bloquear" al usuario para evitar que pague de nuevo o dar cuenta de forma incorrecta de los pagos, pero ¿cómo?
- ¿Y qué más necesito considerar técnicamente? Ninguno de los ejemplos de integración de, por ejemplo, Worldpay, Realex o SagePay ofrece ninguna idea, y mi motor de búsqueda o mis términos de búsqueda no fueron lo suficientemente buenos como para encontrar los pensamientos de alguien más sobre esto.
¡Muchas gracias por cualquier idea sobre cómo abordaría esto!