Foros del Web » Programando para Internet » PHP »

Comunicación http->url externa->https->url externa

Estas en el tema de Comunicación http->url externa->https->url externa en el foro de PHP en Foros del Web. Bueno llevo ya unos días dándole vueltas al tema y no consigo algo que a priori contaba que iban a ser un par de horas. ...
  #1 (permalink)  
Antiguo 24/03/2010, 05:32
 
Fecha de Ingreso: octubre-2008
Mensajes: 58
Antigüedad: 15 años, 6 meses
Puntos: 1
Comunicación http->url externa->https->url externa

Bueno llevo ya unos días dándole vueltas al tema y no consigo algo que a priori contaba que iban a ser un par de horas.

El objetivo es la implantación de una pasarela de pago en mi sitio. Ya me he puesto en contacto con el banco que me proporciona el servicio y en principio la comunicación con el software de éste está muy clara.

Mayormente, desde mi aplicación (en adelante "http") he de llamar a una url que me proporcionan (TPV) pasándole unos parametros por POST. Una vez ellos reciben estos parámetros, llaman a una url (https, pero del mismo domino que http) que les he de proporcionar para verificar que es mi sitio el que está realizando la petición. Desde mi url https les he de responder enviándoles la info que falta para realizar el pago (como por ejemplo el importe).

Es la primera vez que me veo en esto y he tenido que darle un par de vueltas antes de empezar con la comunicación. He encontrado la herramienta curl de php con lo que la llamada a la url del TPV ha sido relativamente fácil. En realidad, dado que todavía ando en testeo, TPV en realidad es un domino mio diferente del de la aplicación principal, que llama a https via curl.

La dificultad ha sido como recuperar información (disponible en http) desde mi url https. He realizado las siguientes pruebas, sin éxito:

1.- Desde https intentar recuperar por POST los valores que previamente he preparado para el TPV desde http. No están disponibles

1.1.-Desde https he realizado una llamada (via curl) a una php en http para ver si ésta sí tenía acceso a POST y me podía devolver los valores (via echo p.ej.). Al ejecutar esta nueva php, tampoco podía acceder a los valores guardados en POST previo a la llamada a TPV.

1.2.- Si desde http hago una llamada vía curl a https pasándole POST sí que recupera la info que le mande. Una vez se llama a la url externa (tpv) cuando ésta llama a la misma https ya no está disponible.


2.- Desde http guardar la info necesaria en una cookie y recuperarla desde https. No la puede leer. He jugado con los parámetros del método setcookie, para ver si encontraba la manera de que https accediera a la cookie (parámetros PATH="/", DOMAIN=".midominio.com", secure=false, httponly=false.....) y tampoco ha habido manera.

2.1.-Desde https he realizado una llamada (via curl) a una php en http para ver si ésta sí tenía acceso a la cookie y me podía devolver los valores (via echo p.ej.). Al ejecutar esta nueva php, tampoco podía acceder a la cookie.

Barajo la opción de, desde http, meter el valor en bd y recuperarlo desde https, pero me encuentro en la dificultad de que, dado el caso de que se produjeran dos peticiones simultaneas (cosa muy improbable, pero que no quiero dejar sin comprobar) no tengo manera desde https, de hacer una mínima distinción del registro de bd que me interesa.

Agradezco cualquier comentario al respecto, sea referente a las pruebas que ya he hecho o proponiendo cualquier otra solución, aunque no tenga nada que ver con las que ya he intentado. Lo único que no puedo modificar es el flujo de la comunicación http->tpv->https->tpv.

Muchas gracias por adelantado!
  #2 (permalink)  
Antiguo 24/03/2010, 07:48
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Comunicación http->url externa->https->url externa

Ok, haz hecho todo ello, pero necesitamos ver el código que usaste para que te puedan indicar. Te sugiero que copies lo que haz hecho en cURL, y por si acaso, si vas a acceder a una dirección https, en cURL, mira este tutorial que posiblemente te ayude a salir de dudas con respecto a lo que no te está saliendo http://unitstep.net/blog/2009/05/05/...otected-sites/
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 24/03/2010, 09:40
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 15 años
Puntos: 19
Respuesta: Comunicación http->url externa->https->url externa

La url que les mandas al TPV se la mandas cada vez o la tienen ellos configurada. Si se la mandas cada vez puedes ponerle una extensión k luego compruebe en una base de datos.

Y luego, por supuesto, pon algo del código.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #4 (permalink)  
Antiguo 24/03/2010, 10:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 58
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Comunicación http->url externa->https->url externa

Hola,

a ver pongo una primera parte para simplificar:


script1.php (En dominio http://www.midominio.com)
setcookie("nombreCookie", "valorCookie", time()+3600);

$url = 'http://www.midominio.com/script2.php';
$c = curl_init($url);
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($c);
echo $page;

script2.php
echo $_COOKIE['nombreCookie'];


Nota: También he probado seteando la cookie como:
setcookie("nombreCookie", "valorCookie", time()+3600, "/", ".midominio.com");

En script2.php no consigo recuperar la cookie.

De momento necesitaría resolver esto, y luego ya intentaré ver como lo puedo hacer si entre script1 y script 2 hay una llamada a un enlace externo que a continuación me devuelve la llamada a un script en https.

Muchas gracias por adelantado
  #5 (permalink)  
Antiguo 24/03/2010, 10:59
 
Fecha de Ingreso: octubre-2008
Mensajes: 58
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Comunicación http->url externa->https->url externa

A ver, más datos:

si ejecuto script1.php tal y como pongo en el post anterior no me muestra el valor de la cookie (leído en script2.php).

Ahora bien, si ahora llamo por la url del navegador a script2.php, sí que lee la cookie.

Por otra parte, si en script1.php añado la línea:
echo $_COOKIE['nombreCookie'];

Justo después de setera la cookie, sí la recupera.

Lo digo por que he visto por ahí que para poder leer la cookie una vez seteada se debe hacer una nueva petición, lo cual explicaría porque script2.php no la muestra, pero entonces no entiendo porque script1.php sí.

Sigo investigando, y pendiente por si alguien puede aportar algo. Muchas gracias
  #6 (permalink)  
Antiguo 24/03/2010, 11:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Comunicación http->url externa->https->url externa

Trataste lo que te indica el enlace que te di.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 24/03/2010, 11:43
 
Fecha de Ingreso: octubre-2008
Mensajes: 58
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Comunicación http->url externa->https->url externa

Si, lo leí, pero no tiene que ver con mi problema. Se refiere a problemas con la autenticación del certificado del sitio y en principio en mi código no se queja en ningún momento de la validez del certificado.

Igualmente en el código concreto que indico en mi segundo post, no aparece ninguna conexión https, por lo que seguro que para este problema no afecta nada relacionado con certificados.

Básicamente, lo que necesito es poder escribir una cookie que sea legible desde la url a la que estoy llamando (que pertenece al mismo dominio desde el que se llama tal y como indico en el código).

En:
http://www.daniweb.com/forums/thread78356.html

Hay un post muy extenso sobre el que estoy trabajando que habla de las opciones de cURL CURLOPT_COOKIEJAR y CURLOPT_COOKIEFILE, que entiendo que me sirve para este tipo de comunicación. De todos modos lo estoy probando para ver si consigo que funcione.

Cualquier ayuda se agradece.

Saludos

Etiquetas: externa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:08.