Foros del Web » Programando para Internet » PHP »

Como obtener precios mediante cURL

Estas en el tema de Como obtener precios mediante cURL en el foro de PHP en Foros del Web. Hola! ¿Sabéis cómo puedo hacer para obtener los datos de precio de una tienda online en diferentes divisas? El problema es que quiero obtener los ...
  #1 (permalink)  
Antiguo 19/01/2012, 08:36
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 15 años, 9 meses
Puntos: 11
Como obtener precios mediante cURL

Hola!

¿Sabéis cómo puedo hacer para obtener los datos de precio de una tienda online en diferentes divisas?

El problema es que quiero obtener los precios de una tienda desarrollada en base a opencart y las variables que determinan la divisa la pasan por POST.

Por ejemplo:http://www.opencartstore.com/ultimat...art-module-kit
El precio de este producto está en euros. Si quiero visualizarlo en dólares mediante cURL tendría que hacer una petición POST pero desconozco cómo proceder. He intentado de diversos modos y en lugar de pasar la petición me sale en blanco o me devuelve un valor.

Lo he intentado del siguiente modo:
Código PHP:
//Iniciamos cURL.
$ch curl_init();
//Accedemos a la URL
curl_setopt($chCURLOPT_URL"http://www.opencartstore.com/ultimate-opencart-module-kit");
//Indicamos que vamos a enviar datos por Post.
curl_setopt ($chCURLOPT_POSTtrue);
//Iniciamos una sesion
curl_setopt($chCURLOPT_COOKIE'PHPSESSID=cookie;');
//Indicamos que queremos imprimir el resultado
curl_setopt($chCURLOPT_RETURNTRANSFERfalse);
//Hacemos uso de un User Agent
curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13");
//Enviamos los datos por post
curl_setopt ($chCURLOPT_POSTFIELDS"currency_code=USD");
//Ejecutamos e imprimimos el resultado
echo curl_exec($ch); 
Resulta que de este modo me devuelve "1" :S Quiero me que devuelva la página pero con la divisa en dólares.

¿Me podríais ayudar? Gracias!
  #2 (permalink)  
Antiguo 19/01/2012, 12:44
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Como obtener precios mediante cURL

Le estás enviando POST a la URL equivocada y te falta usar el campo redirect para que vaya a la URL que quieres mostrar. No estás siguiendo las redirecciones con FOLLOWLOCATION y por eso te da en blanco (y al dejar RETURNTRANSFER en false te da como resultado ese 1) . Más o menos el código quedaría funcional así (no revisado al 100%):

Código PHP:
Ver original
  1. <?php
  2. $url = 'http://www.opencartstore.com/ultimate-opencart-module-kit';
  3. $divisa = 'USD'; //USD, GBP o EUR
  4. $ch = curl_init('http://www.opencartstore.com/index.php');
  5. $body = "currency_code=$divisa&redirect=$url";
  6. curl_setopt($ch, CURLOPT_POST, true);
  7. curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
  8. curl_setopt($ch, CURLOPT_COOKIE, 'PHPSESSID=cookie;');
  9. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  10. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  11. curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13");
  12. echo curl_exec($ch);

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 19/01/2012 a las 12:52
  #3 (permalink)  
Antiguo 19/01/2012, 13:19
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Como obtener precios mediante cURL

Hola Andresdzphp,
En primer lugar, muchas gracias por responder.
Resulta que he probado tu código y parece que funciona, al menos parcialmente. Me explico:

Al parecer los productos no los encuentra al hacer la redirección. La divisa cambia pero el producto no es encontrado.
Para que te hagas una idea, prueba con este producto:http://www.templatestock.net/themes/...&product_id=48

Pásalo de dólares a Euros y verás lo que te digo. Te expongo el código con ese enlace ya introducido:
Código PHP:
$url 'http://www.templatestock.net/themes/opencart/Fashionista/index.php?route=product/product&product_id=48';
$divisa 'EUR'//USD, GBP o EUR
$ch curl_init('http://www.templatestock.net/themes/opencart/Fashionista/index.php'); 
$body "currency_code=$divisa&redirect=$url";
curl_setopt($chCURLOPT_POSTtrue);
curl_setopt($chCURLOPT_POSTFIELDS$body);
curl_setopt($chCURLOPT_COOKIE'PHPSESSID=cookie;');
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"); 
echo 
curl_exec($ch);
curl_close($ch); 
Muchas gracias de nuevo y un gran saludo.
  #4 (permalink)  
Antiguo 19/01/2012, 13:44
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Como obtener precios mediante cURL

El problema en ese caso es la URL, tienes que usar funciones como urlencode o rawurlencode

Código PHP:
Ver original
  1. $url = urlencode('http://www.templatestock.net/themes/opencart/Fashionista/index.php?route=product/product&product_id=48');

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: curl, mediante, precios, variables
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 20:02.