2009-06-12 23 views
53

¿Se puede redirigir utilizando un método POST?
¿O deberían los redireccionamientos hacerse siempre con GET?redirigir_a usar POST en raíles

El uso de esto se encuentra en los pasos finales de un proceso de pedido para un sitio de comercio electrónico, para enviar los datos al procesador de pagos, sin introducir un paso adicional para el usuario.

Respuesta

73

La redirección no es posible con las solicitudes POST: es part of the HTTP/1.1 protocol.

Puede introducir otro paso que contenga los datos del formulario para enviarlo al procesador de pagos, o puede enviar la publicación desde su aplicación (algo que he hecho al trabajar con PROTX).

14

"solucioné" el problema al mostrar una página de resumen con todos los productos y cargos de entrega, etc., con el típico mensaje "para confirmar y pagar sus compras, haga clic en el botón Continuar a continuación". El botón Continuar hace que el sitio PUBLIQUE los datos del producto y todo en el procesador de pagos.

La respuesta corta - hay es otro paso para el usuario. Sin embargo, la clave es hacer que parezca tan natural y parte de la experiencia de pago como sea posible. De esta manera, no aparece demasiado como "solo otro paso".

Sin embargo, si haces venir a través de una mejor manera, voy a estar muy interesado en escuchar lo que era :)

+1

En su lugar, solo puede mostrar el "marcador de orden de procesamiento ..." y enviar de nuevo el formulario con los campos ocultos. Si la página funciona lo suficientemente rápido, el usuario ni siquiera verá esta página la mayor parte del tiempo ... – mdrozdziel

+1

Eso es más o menos lo mismo que el método de Alsciende a continuación. Perfectamente bien, pero dependerá de JavaScript y, como tal, querrá algún tipo de respaldo para el caso (aunque es poco probable en la actualidad, pero posible) donde JS no está disponible. –

+0

Sí, pero esto es muy trivial. Solo poner el submit dentro de noscript debería ser el truco ... – mdrozdziel

11

Con una simple línea de JavaScript, puede hacer que el formulario de puesto en puesto en sí (form.submit()). A continuación, puede ocultar el formulario y mostrar un mensaje simple "espere mientras ..." al usuario mientras el formulario se envía al procesador de pagos.

+0

¿Y volver al manual "presionar el botón de enviar" donde JS está deshabilitado? Esa no es una mala idea en realidad ... –