Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] REQUEST dineromail

Estas en el tema de REQUEST dineromail en el foro de PHP en Foros del Web. Hola genios. Tengo un problema y no logro encontrar la solucion. Trate de hablar con dineromail y la respuesta "Es un problema de codigo aca ...
  #1 (permalink)  
Antiguo 08/10/2014, 08:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 224
Antigüedad: 15 años, 11 meses
Puntos: 4
REQUEST dineromail

Hola genios.

Tengo un problema y no logro encontrar la solucion. Trate de hablar con dineromail y la respuesta "Es un problema de codigo aca anda todo bien".

Resulta que si cambio $REQUEST por el esquema del xml funciona todo perfercto pero si pongo como esta y hago la transaccion no pasa nada.

Este es el codigo.

///RECIBO XML
$notificacion = $_REQUEST['NOTIFICACION'];
//TOMO VALORES DE CUENTA
require_once('../dire/conection.php');
mysql_select_db($database_ku, $ku);
mysql_query ("SET NAMES 'utf8'");
$busDato=sprintf("SELECT * FROM configuracion WHERE id_conf=1");
$resultP = mysql_query($busDato, $ku) or die(mysql_error());
if (!$resultP) {
die('Could not query:' . mysql_error());
echo '0';
}else{
$row = mysql_fetch_assoc($resultP);
$cuenta=$row['cuenta'];
$clave=$row['contra'];
}
mysql_free_result($resultP);
///LEO NOTIFICACION
$content = str_replace("<?xml version=''1.0'' encoding=''ISO-8859-1''?>","<?xml version='1.0' encoding='ISO-8859-1'?>",$notificacion);
$doc = new SimpleXMLElement($notificacion);// Parseo el XML
//busco dentro de notificacion
foreach ($doc ->operaciones ->operacion as $OPERACIONC){
$tipo_operacion= $OPERACIONC->tipo;
$id_operacion= $OPERACIONC->id;
////CONSULTO POR CADA ID DE OPERACION
$url = 'http://argentina.dineromail.com/Vender/Consulta_IPN.asp';
$data = 'DATA=<REPORTE><NROCTA>'.$cuenta.'</NROCTA><DETALLE>
<CONSULTA><CLAVE>'.$clave.'</CLAVE><TIPO>1</TIPO><OPERACIONES><ID>'.$id_operacion.'</ID></OPERACIONES></CONSULTA></DETALLE></REPORTE>';
$url = parse_url($url);
// obtiene host y path
$host = $url['host'];
$path = $url['path'];
// abre conexion en puerto 80
$fp = fsockopen($host, 80);
// request
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);

$result = '1.xml';
while(!feof($fp)) {
// resultado del request
$result .= fgets($fp, 128);
}
// cierra conexion
fclose($fp);
// separa el header del content
$result = explode("\r\n\r\n", $result, 2);
$header = isset($result[0]) ? $result[0] : '';
$content2 = isset($result[1]) ? $result[1] : '';
// imprime el content del resultado del request
//print $content2;
//PARSEO XML SEGUNDO
$doc2 = new SimpleXMLElement($content2);
foreach ($doc2 ->DETALLE ->OPERACIONES ->OPERACION as $OPERACIOND){
$id_operacion2 = $OPERACIOND->ID;
$estado_operacion = $OPERACIOND->ESTADO;
//Actualizo el estado de la operacion
if($estado_operacion==1){//pendiente
$actuaAv=sprintf("UPDATE avisos SET pagado=2 WHERE id_aviso='$id_operacion2'");
$resultAv = mysql_query($actuaAv, $ku) or die(mysql_error());
}else if($estado_operacion==2){//pagado
$actuaAv=sprintf("UPDATE avisos SET pagado=1 WHERE id_aviso='$id_operacion2'");
$resultAv = mysql_query($actuaAv, $ku) or die(mysql_error());
}

}//CIERRO FOR2

}//for 1

Le cambie el permiso al archivo a 777 no se si es correcto pero tampoco no funciona.

De antemano gracias !!
  #2 (permalink)  
Antiguo 22/10/2014, 07:33
 
Fecha de Ingreso: mayo-2003
Mensajes: 523
Antigüedad: 20 años, 11 meses
Puntos: 6
Respuesta: REQUEST dineromail

Hola recuerdo que renegué con esto, pero no recuerdo como lo solucioné te pego el código que uso y funciona:

(Es tomado de un sitio en producción tenés que adaptarlo a lo que quieras hacer, no tengo tiempo de limpiarte el código, pero funciona):

<?
include("admin/conex.php");
/*$_REQUEST["Notificacion"]="<?xml version=\'1.0\' encoding=\'ISO-8859-1\'?><notificacion><tiponotificacion>1</tiponotificacion>//<operaciones><operacion><tipo>1</tipo><id>56</id></operacion></operaciones></notificacion>";*/
mail("[email protected]","Notificacion DM",$_REQUEST["Notificacion"],"From:[email protected]");
//Obtiene la fecha actual
$array_fecha=getdate();
$fecha=strval($array_fecha['mday'])."/".strval($array_fecha['mon'])."/".strval($array_fecha['year']);
$url = 'https://argentina.dineromail.com/Vender/Consulta_IPN.asp'; //URL donde realizo las consultas a DineroMail
//Por cada operacion notificada consulto al servidor de DineroMail para obtener los detalles de cada una
//Armo archivo XML con los datos de la consulta
$data = 'DATA=<REPORTE><NROCTA>2048305</NROCTA><DETALLE><CONSULTA><CLAVE>dinero1194</CLAVE><TIPO>1</TIPO><OPERACIONES>';
if(isset($_REQUEST["Notificacion"]))
{
$notificacion = $_REQUEST["Notificacion"];
$notificacion = stripslashes($notificacion);
$Notificacion = simplexml_load_string($notificacion);
//mail("[email protected]","Notificacion DM","Informacion recibida","From:[email protected]");
foreach($Notificacion->operaciones as $operacion)
{
$id_operacion = $operacion->operacion->id;
$data=$data.'<ID>'.$id_operacion.'</ID>';
}
$data=$data.'</OPERACIONES></CONSULTA></DETALLE></REPORTE>';
mail("[email protected]","Consulta DM",$data,"From:[email protected]");
// parsea URL
$url = parse_url($url);
// obtiene host y path
$host = $url['host'];
$path = $url['path'];
// abre conexion en puerto 80
$fp = fsockopen($host, 80);
// request
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);
$result = '';
while(!feof($fp)) {
// resultado del request
$result .= fgets($fp);
}
// cierra conexion
fclose($fp);
// separa el header del content
$result = explode("\r\n\r\n", $result, 2);
$header = isset($result[0]) ? $result[0] : '';
$content = isset($result[1]) ? $result[1] : '';
mail("[email protected]","Respuesta DM antes",$content,"From:[email protected]");
$content=substr($content,5);
$content=substr($content,0,-7);
mail("[email protected]","Respuesta DM despues",$content,"From:[email protected]") ;
$doc2 = new SimpleXMLElement($content);
foreach ($doc2 ->DETALLE ->OPERACIONES ->OPERACION as $OPERACION)
{
$id_operacion= $OPERACION->ID;
$estado_operacion=$OPERACION->ESTADO;
$email_comprador=$OPERACION->COMPRADOR->EMAIL;
//Actualizo el estado de la operacion
//if($estado_operacion==2)
//{
mysql_query("UPDATE ventas SET pagada='S' WHERE id_venta='$id_operacion'",$link);
//Activo el comercio
mysql_query("UPDATE comercios SET abonado='S' WHERE id_comercio IN (SELECT comercios_id_comercio FROM ventas WHERE id_venta='$id_operacion')",$link);
//Busco los datos de la venta
$ventas=mysql_query("SELECT * FROM ventas WHERE id_venta='$id_operacion'",$link);
$venta=mysql_fetch_array($ventas);
//Busco los datos del usuario
$usuarios=mysql_query("SELECT * FROM usuarios WHERE mail='".$venta['usuarios_mail']."'",$link);
$usuario=mysql_fetch_array($usuarios);
//Armo link para verificar cuenta
//$link_armado="<a href=".$url_cliente."/confirmar.php?dg=".$usuario['digito_verificador'].">".$url_cliente."/confirmar.php?dg=".$usuario['digito_verificador']."</a>";
//Envio mail de aviso al cliente
//Leo la estetica desde un archivo html externo
/*$nombre_fichero = "acuse/tmp_compra.html";
$gestor = fopen($nombre_fichero, "r");
$contenido = html_entity_decode(fread($gestor, filesize($nombre_fichero)));
fclose($gestor);
//Cuerpo del email comenzando por el mensaje principal
$campos = array("{FECHA}", "{LINK}");
$reemplazo = array($fecha, $link_armado);
$mensaje =str_replace($campos, $reemplazo,$contenido);
// Se monta la cabecera del mensaje.
$cabeceras = "From: [email protected]\r\nContent-type: text/html\r\n";
$cuerpo = $body_top.$mensaje;
//Envío del email*/
$destino = $email_comprador;
mail($usuario['mail'],"Pago Confirmado","Su pago a www.laguialuxe.com.ar ¡ha sido confirmado!\r\nA partir de este momento su comercio aparecera publicado en www.laguialuxe.com.ar\r\nPara ingresar a su cuenta y comenzar a administrar los datos de su comercio clic aqui: http://www.laguialuxe.com.ar/menu_clientes.php","From:[email protected]");
//}
}
}
?>
  #3 (permalink)  
Antiguo 23/10/2014, 17:25
 
Fecha de Ingreso: mayo-2008
Mensajes: 224
Antigüedad: 15 años, 11 meses
Puntos: 4
Respuesta: REQUEST dineromail

Hola Integer.

Si, veo que hay algunas cosas diferentes. Voy a probarlo y te comento y no te hagas drama por no limpiar el codigo, ya es una manaza que lo hayas compartido.

En cuanto lo pruebe te comento como me fue.


Gracias, gracias, graias !!
  #4 (permalink)  
Antiguo 21/12/2014, 06:38
 
Fecha de Ingreso: mayo-2008
Mensajes: 224
Antigüedad: 15 años, 11 meses
Puntos: 4
Respuesta: REQUEST dineromail

Hola Integer.

Si pudiera hacerte hupa te juro que lo haria.

Me funciono a la perfeccion. No tengo como agradecerte la molestia que te tomastes en leer al pregunta y pegar tu codigo.

El decirte MUCHISIMAS GRACIAS es poco, pero es lo que te puedo alcanzar.

va de nuevo MUUUUUUUUUCHASSSSSSSSS GRACIASSSSSSSSSSSS!!!!.
  #5 (permalink)  
Antiguo 22/12/2014, 07:34
 
Fecha de Ingreso: mayo-2003
Mensajes: 523
Antigüedad: 20 años, 11 meses
Puntos: 6
Respuesta: REQUEST dineromail

De nada!!! Miles de veces me han ayudado a mí en este foro, esta es la una de las pocas en que yo puedo ayudar a alguien, me alegra que te haya servido!

Etiquetas: dineromail, mysql, request, select, sql
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 08:45.