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