Pregunta

No sé si esto es posible, me parece que no puede encontrar cualquiera de las otras guías de ayuda así que esto no puede ser posible...

Tengo una página de pago que envía una carga de variables hacia delante a una 3 ª parte procesador de pago (WorldPay).

Quiero saber si es posible poner un script PHP de algún tipo entre medio de las dos páginas para fines de validación.

Por ejemplo, si un elemento de la cesta ha vendido mientras estaban rellenando el formulario, podría coger el cliente antes de que el dinero es tomado.O útil si se alteren los datos del formulario.

Si puedo hacer esto en mi propio sitio podía usar sesiones para pasar los datos de envío hacia adelante, pero como es un sitio web externo, no sé cómo enviar los datos sin hacer otra página HTML con un formulario oculto y actualización, por ejemplo.

Es posible hacer esto 'invisible' - en realidad no muestra una página HTML en el medio?

¿Fue útil?

Solución

Si usted puede hacer que al enganchar en el gancho onsubmit de la forma y el envío de una llamada Ajax como esto (usando jQuery):


$('#myform')[0].onsubmit = function() {
  if (form_check_elements(this.elements)) { /* ««« eg JS validator here */
    data = $('#myform').serialize();
    $.post('/ajax_validator.php', data, function(data, textStatus) {
      $('#myform')[0].submit();  /* ««« check the textStatus before here and
                                        eventually do not submit (wrap it in
                                        an if-clause) */
    });
    return false; /* make the form not post directly */
  } else {
    return false; /* do not post if JS validation fails */
  }
};

utilizar este fragmento de datos del formulario tienda en una sesión antes de fijar a una tercera parte lo que tenemos a mano cuando el 3er grupo regresa a nuestra página.

Editar Tenga en cuenta que esto sólo funciona con JS habilitado, pero es de repliegue de seguridad:. La forma sigue somete sin apoyo JS

Otros consejos

EDITAR:

Ashley dijo:

Bueno, he echado un vistazo a la curvatura manual y escrito esta muy simple script para reenviar los CORREOS de los valores la 3ª parte de pago.Esto sólo muestra el contenido de la caja la página en si.La dirección URL se muestra la secuencia de comandos que se ejecuta actualmente en lugar de el reenvío de la 3ª parte del sitio.También todos sus relativamente gráficos vinculados no va a funcionar.Puede 'true' forwarding se puede lograr utilizando cURL?

La respuesta corta - no.

Con la forma en que se describe su proceso de pago si desea ponerse en medio de el fuera de proceso para hacer las cosas (personalizar html/mensajes, validar datos, etc.) entonces usted necesita para manejar el proceso que cURL les permite hacer.

Con cURL, no "hacia adelante" petición - una especie de "proxy" de la solicitud.Así que el hecho de que la URL del navegador nunca cambia y que la relación de gráficos no está previsto que el trabajo.Con el uso de cURL o algo similar que nunca dejaría que el usuario final el usuario sabe que incluso están tocando una página externa.usted sería el manejo de todas las peticiones a un servidor externo en el servidor y, a continuación, simplemente mostrar la respuesta del servidor externo para el usuario O el análisis de la respuesta de modo que usted puede utilizar los datos de ella en una forma personalizada.

Esencialmente, esto significa que si secure.wp3.rbsworldpay.com/wcc/purchase es la devolución de un formulario que requiere más interacción por parte del usuario tiene que imitar este formulario en su servidor y mostrar en su lugar.A continuación, cuando el usuario envía el formulario de usar cURL de nuevo para hacer una solicitud para el servidor externo - esta vez para publicar la siguiente ronda de los datos enviados por el usuario.Así, por ejemplo digamos que:

  • secure.wp3.rbsworldpay.com/wcc/purchase muestra el carro
  • secure.wp3.rbsworldpay.com/wcc/confirm muestra una confirmación definitiva de que el pago sea hecho
  • secure.wp3.rbsworldpay.com/wcc/success y secure.wp3.rbsworldpay.com/wcc/error mostrar si la operación tuvo éxito o no, respectivamente.

Entonces usted está en realidad va a tener que hacer 2 peticiones externamente como parte del proceso de la transacción, que se podría resumir así:

  1. Usuario de tiendas en su sitio y agrega elementos a la cesta
  2. El usuario hace clic en checkout y validar el conjunto de datos de usuario
  3. Si los datos de #2 era válido paquete de seguridad de los datos y posterior a secure.wp3.rbsworldpay.com/wcc/purchase a través de cURL
  4. Si el bucle de respuesta de #3 fue un éxito a construir su propia confirmar página utilizando los datos de la curva de respuesta y mostrar al usuario.
  5. El usuario envía la confirmación de la compra a su servidor.
  6. Paquete de seguridad de los datos enviados al servidor en el #5, y el envío es a secure.wp3.rbsworldpay.com/wcc/confirm a través de la curvatura.
  7. Si el bucle de respuesta de #6 fue un éxito, a continuación, a analizar para la esperada "error" o "éxito" mensaje devuelto desde un servidor externo y la pantalla o sus propios mensajes de error personalizados.
  8. Aclarar y repetir en caso de error ;-)

Generalmente la mayoría de los procesadores de pago tiene una opción de procesamiento en que se apoya este proceso básico y a menudo volvía fácil analizar los datos como XML, JSON, o Texto sin formato en lugar de HTML.Es posible que desee buscar en este.Un montón de veces, suelen tener bibliotecas construidas para varios lenguajes de programación para ayudar a facilitar el proceso de integración.


Sí, seguro que es...yo normalmente uso el curl la extensión de hacer cosas como esta, o un cliente http clase que utiliza curl.Puede que desee hacer un poco más fácil en ti mismo y use una de estas bibliotecas de clase - por ejemplo Zend_Http_Client.Se apoya no sólo el curl pero también sockets y apoderados.

me gusta más el paquete HTTP_Request2 de PEAR, que básicamente envuelve Curl y / o zócalos en algunos objetos simples. Publicación funciona muy bien. Puede usarlo para hacer rebotar la solicitud POST para su validación verifica la información, luego en el procesador de pagos.

Yo sugeriría usted para ir de esta manera:

Antes de dirigir a un usuario para el formulario, compruebe (a través de consultas SQL) si el elemento de la cesta se ha agotado. Si se ha vendido, redirigir al usuario a otra página diciendo que este artículo ha sido vendido lo contrario le dejó ir a la forma para la nueva compra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top