Hola que tal gente, mi problema es el siguiente tengo un metodo que cambia el status de la compra segun lo que paypal me arroje

el método es asi

Dante Cervantes escribió:

Código PHP :

function ActualizaStatus($status)
$conexion = new ConexionBD();
$sql='update set status="'.$status.'" from orden where idorden='.$this->idorden;
$conexion->ejecutarsentecia(Sql);


y tambien tengo el ipn de paypal

que es asi

Código PHP :

<?php
include_once('orden.php');
include_once('ConexionBaseDatos.php');
include_once('pp.php');
$req='cmd=_notify-validate';

foreach($_POST as $key=>$value)
{
   $value=urlencode(stripslashes($value));
   $req.="&$key=$value";
}
//$header='';
$header .="POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .="Content-Type: application/x-www-form-urlencoded\r\n";
$header .="Content-Length: ".strlen($req)."\r\n\r\n";

$fp=fsockopen('ssl://www.sandbox.paypal.com',443,$errno,$errstr,30);


$item_name= $_POST['item_name'];
$item_name1= $_POST['item_name'];
$item_number= $_POST['item_number'];
$item_number1= $_POST['item_number1'];
$payment_status= $_POST['payment_status'];
$payment_amount= $_POST['mc_gross'];
$payment_currency= $_POST['mc_currency'];
$txn_id= $_POST['txn_id'];
$receiver_email= $_POST['receiver_email'];
$payer_email= $_POST['payer_email'];
$invoice_id= $_POST['invoice_id'];

  $paypal=new Paypal('',$item_name,$item_number,$payment_status,$payment_amount,$payment_currency,$txn_id,$receiver_email,$payer_email,$invoice_id,$res);
$paypal->insertar_paypal();

if(!$fp){
   echo 'error, contacte al administrador';
}else
{
   fputs($fp,$header.$req);
   while(!feof($fp))
   {

       $res = fgets($fp,1024);

         if(strcmp($res,"VERIFIED")==0)
         {
         
         /*$conexion = new ConexionBD();
         $sql='insert into paypal (mensaje) values('.$payment_status.')';
         return $conexion->ejecutarsentencia($sql);*/
         
            switch($payment_status)
            {
               case 'Completed':
               $orden = new Orden($idorden,0,'',0,0,0);
               $orden->ActualizaStatus(1);
               break;
               
               case 'Pending':
               $orden = new Orden($idorden,0,'',0,0,0);
               $orden->ActualizaStatus(2);
               break;
               
               case 'Reserved':
               $orden = new Orden($idorden,0,'',0,0,0);
               $orden->ActualizaStatus(3);
               break;
            }
         }
            
      else if(strcmp($res,"INVALID")==0)
      {
         $orden=new Orden($idorden,0,'',4,0,0,0);
         $orden->ActualizaStatus(0);
      }
   }
   fclose($fp);
}
?>


El problema esque no entra nunca al switch (según lo que mande paypal), lo que si se es que por medio de sandbox si inserta los datos de compra, pero el status de la orden no cambia siempre se queda en 0, no se actualiza a 1(completed), 2(Pending) o 3(Reserved).

Les agradecería mucho su ayuda

PD

los includes de la conexionbd y orden son otras clases y otros metodos que no se utilizan aca