Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/01/2012, 13:31
Integer78
 
Fecha de Ingreso: mayo-2003
Mensajes: 523
Antigüedad: 21 años
Puntos: 6
Mensaje Respuesta: DineroMail con PHP

Lo que necesito es que cuando DineroMail me notifique un pago concretado (operacion en estado 2) se actualice un registro en mi base de datos.
Por alguna razón esto no sucede, pego aquí el código del archivo que está configurado para recibir las notificaciones de DineroMail. La mayoría de este código lo obtuve de los propios ejemplos de dineromail:

include("../admin/includes/conex.php");
$url= 'https://argentina.dineromail.com/Vender/Consulta_IPN.asp';
//URL donde realizo las consultas a DineroMail
//Recibe notificaciones automaticas de DineroMail
$notificacion;
$notificacion = $_REQUEST['Notificacion'];
$doc = new SimpleXMLElement($notificacion);
//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>';
foreach ($doc ->OPERACIONES ->OPERACION as $OPERACION)
{
$tipo_operacion= $OPERACION->TIPO;
$id_operacion= $OPERACION->ID;
$data=$data.'<ID>'.$id_operacion.'</ID>';
}
$data=$data.'</OPERACIONES></CONSULTA></DETALLE></REPORTE>';
// 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] : '';
$content=substr($content,5);
$content=substr($content,0,-7);
$doc2 = new SimpleXMLElement($content);
foreach ($doc2 ->DETALLE ->OPERACIONES ->OPERACION as $OPERACION)
{
$id_operacion= $OPERACION->ID;
$estado_operacion=$OPERACION->ESTADO;
//Actualizo el estado de la operacion
if($estado_operacion==2)
{
mysql_query("UPDATE planes_periodos_x_anunciante SET pago_confirmado='S' WHERE ventas_nro_venta='$id_operacion'",$link);
}
}