SERMEPA / REDSYS  

Página 2 / 2
 
Sergio
 Sergio
Reputable Member

Hola estoy ultimando las pruebas de integracion de sermepa y todo me funciona bien excepto el cambio del estado del pedido. He estado mirando el POST con el Firedebug y veo que en el entorno de pruebas (segun video de configuracion sermepa de webempresa) no existen los campos necesarios para cambiar el estado del pedido (notify_sermepa.php)

Ds_signature
Ds_response
etc.....

Esto solo ocurre en el entorno de pruebas.....o en el entorno de pruebas debería cambiar el estado del pedido?

La URL www.pienso24horas.com, usuario de pruebas Contenido solo visible a usuarios registrados

Espero vuestros comentarios al respecto.

Citar
Respondido : 09/01/2012 3:50 pm
Sergio
 Sergio
Reputable Member

Pablo el fichero lo escribe.

En el TPV estoy viendo que me da un error 500. He puesto un fichero solo con las cabeceras de PHP, y obtengo un 200.

Interpreto que el error esta en el notify.

Lo anexo por si ves algo:

initialise();

// load system plugin group
JPluginHelper::importPlugin( 'system' );

// trigger the onBeforeStart events
$mainframe->triggerEvent( 'onBeforeStart' );
$lang =& JFactory::getLanguage();
$mosConfig_lang = $GLOBALS['mosConfig_lang'] = strtolower( $lang->getBackwardLang() );
// Adjust the live site path
$mosConfig_live_site = str_replace('/administrator/components/com_virtuemart', '', JURI::base());
$mosConfig_absolute_path = JPATH_BASE;
} else {
define('_VALID_MOS', '1');
require_once($mosConfig_absolute_path. '/includes/joomla.php');
require_once($mosConfig_absolute_path. '/includes/database.php');
$database = new database( $mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db, $mosConfig_dbprefix );
$mainframe = new mosMainFrame($database, 'com_virtuemart', $mosConfig_absolute_path );
}

// load Joomla Language File
if (file_exists( $mosConfig_absolute_path. '/language/'.$mosConfig_lang.'.php' )) {
require_once( $mosConfig_absolute_path. '/language/'.$mosConfig_lang.'.php' );
}
elseif (file_exists( $mosConfig_absolute_path. '/language/english.php' )) {
require_once( $mosConfig_absolute_path. '/language/english.php' );
}
/*** END of Joomla config ***/ /*** VirtueMart part ***/
require_once($mosConfig_absolute_path.'/administrator/components/com_virtuemart/virtuemart.cfg.php');
include_once( ADMINPATH.'/compat.joomla1.5.php' );
require_once( ADMINPATH. 'global.php' );
require_once( CLASSPATH. 'ps_main.php' );

/* @MWM1: Logging enhancements (file logging & composite logger). */
$vmLogIdentifier = "notify.php";
require_once(CLASSPATH."Log/LogInit.php");

$debug_email_address = $mosConfig_mailfrom;
// restart session
// Constructor initializes the session!
$sess = new ps_session();

/*** END VirtueMart part ***/

//1. Finished Initialization of the notify_servired.php script"

/**
* Read post from Servired system and update order status
**/
$i = 1;

$Ds_Date = trim(stripslashes($_POST['Ds_Date']));
$Ds_Hour = trim(stripslashes($_POST['Ds_Hour']));
$Ds_Amount = trim(stripslashes($_POST['Ds_Amount']));
$Ds_Currency = trim(stripslashes($_POST['Ds_Currency']));
$Ds_Order = trim(stripslashes($_POST['Ds_Order']));

// Can be USD, GBP, EUR, CAD, JPY
$Ds_MerchantCode = trim(stripslashes($_POST['Ds_MerchantCode']));

$Ds_Terminal = trim(stripslashes($_POST['Ds_Terminal']));
$Ds_Signature = trim(stripslashes($_POST['Ds_Signature']));
//respuesta de la transacción valores entre 0000 a 0099 indican que correcto
$Ds_Response = trim(stripslashes($_POST['Ds_Response']));

$Ds_TransactionType = trim(stripslashes($_POST['Ds_TransactionType']));
$Ds_AuthorisationCode = trim(stripslashes($_POST['Ds_AuthorisationCode']));

// Get the Order Details from the database
// Get the Order Details from the database
$qv = "SELECT `order_id`, `order_number`, `user_id`, `order_subtotal`,
`order_total`, `order_currency`, `order_tax`,
`order_shipping_tax`, `coupon_discount`, `order_discount`
FROM `#__{vm}_orders`
WHERE `order_id`='".intval($Ds_Order)."'";
$db = new ps_DB;
$db->query($qv);
$db->next_record();
$order_id = $db->f("order_id");

$d['order_id'] = $order_id;
$d['notify_customer'] = "Y";

$clave='qwertyasdf0123456789'; // Clave de comercio proporcionada por Sermepa.
$name='nombre_negocio'; // Nombre del comercio que sale en la transaccion.
$code='092452770'; // Codigo de comercio proporcionado por Sermepa.
$terminal='1'; // Terminal usado.
$currency='978'; // 978=Euros.
$tipoOperacion='0'; // Tipo de operacion. 0=Autorizacion.
// Calculo del hash para firmar los datos.
$order = '000'.$order_id;
$amount=$db->f("order_total")*100;
$message = $amount.$order.$code.$currency.$Ds_Response.$clave;
$signature = strtoupper(sha1($message));
if($Ds_Signature==$signature){
//-------------------------------------------
// ...read the results of the verification...
// If $Ds_Response esta entre 0000 y 0099 la transacción ha ido bien
//-------------------------------------------
if (intval ( $Ds_Response)>=0 && intval ( $Ds_Response)order_status_update($d);
/*$mail->From = $mosConfig_mailfrom;
$mail->FromName = $mosConfig_fromname;
$mail->AddAddress($debug_email_address);
$mail->Subject = "SERVIRED IPN txn on your site";
$mail->Body = "Hello,nn";
$mail->Body .= "a SERVIRED transaction for you has been made on your website!n";
$mail->Body .= "-----------------------------------------------------------n";
$mail->Body .= "Order ID: $order_idn";
$mail->Body .= "Payment Status returned by SERVIRED: $Ds_Responsen";
$mail->Body .= "Order Status Code: ".$d['order_status'];
$mail->Send();*/
$mailsubject= "SERVIRED IPN txn on your site";
$mailbody= "Hello,nn";
$mailbody .= "a SERVIRED transaction for you has been made on your website!n";
$mailbody .= "-----------------------------------------------------------n";
$mailbody .= "Order ID: $order_idn";
$mailbody .= "Payment Status returned by SERVIRED: $Ds_Responsen";
$mailbody .= "Order Status Code: ".$d['order_status'];
vmMail($mosConfig_mailfrom, $mosConfig_fromname, $debug_email_address, $mailsubject, $mailbody );
}
else {
$d['order_status'] = "X";
require_once ( CLASSPATH . 'ps_order.php' );
$ps_order= new ps_order;
$ps_order->order_status_update($d);
/*$mail->From = $mosConfig_mailfrom;
$mail->FromName = $mosConfig_fromname;
$mail->AddAddress($debug_email_address);
$mail->Subject = "SERVIRED Transaction on your Site";
$mail->Body = "Hello,
An error occured while processing a SERVIRED transaction.
----------------------------------
Order ID: $order_idn
Order Status Code:$Ds_Response";
$mail->Send();*/
$mailsubject= "SERVIRED Transaction on your Site";
$mailbody= "Hello,
An error occured while processing a SERVIRED transaction.
----------------------------------
Order ID: $order_idn
Order Status Code:$Ds_Response";

vmMail($mosConfig_mailfrom, $mosConfig_fromname, $debug_email_address, $mailsubject, $mailbody );
}
}
else{
/*$mail->From = $mosConfig_mailfrom;
$mail->FromName = $mosConfig_fromname;
$mail->AddAddress($debug_email_address);
$mail->Subject = "SERVIRED Transaction on your Site";
$mail->Body = "Hello,
Se ha recibido una transacción de SERVIRED con una firma erronea.
----------------------------------
Order ID: $order_idn
Order Status Code:$Ds_Responsen
Cantidad recibida= $Ds_Amount.
Cantidad pedido: $amount.
order_servired=$Ds_Ordern
Firma recibida=$Ds_Signaturen
Firma generada=$signaturen
";

$mail->Send();*/
$mailsubject= "SERVIRED Transaction on your Site";
$mailbody= "Hello,
Se ha recibido una transacción de SERVIRED con una firma erronea.
----------------------------------
Order ID: $order_idn
Order Status Code:$Ds_Responsen
Cantidad recibida= $Ds_Amount.
Cantidad pedido: $amount.
order_servired=$Ds_Ordern
Firma recibida=$Ds_Signaturen
Firma generada=$signaturen
";

vmMail($mosConfig_mailfrom, $mosConfig_fromname, $debug_email_address, $mailsubject, $mailbody );
}

}
?>

ResponderCitar
Respondido : 29/03/2012 2:14 pm

Cursos Gratuitos WordPress

Sergio
 Sergio
Reputable Member

Pablo en el fichero de test escribe-........

ResponderCitar
Respondido : 29/03/2012 5:50 pm
Pablo Velasco
 Pablo Velasco
Illustrious Member

Hola,

No te acabo de entender si en la prueba que has hecho con lo que te puse se escribió en el archivo test.txt o no. Supongo que sí. De ser así, se está llamando correctamente el archivo.

Te vuelvo a incluir comprimido en un zip el archivo de notificación que he usado en multitud de ocasiones y que me ha funcionado sin problemas, para que lo puedas probar.

Recuerda que tienes que introducir los datos de tu negocio (código de comercio, clave, etc.) a partir de la línea 135.

ResponderCitar
Respondido : 30/03/2012 12:40 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Sergio
 Sergio
Reputable Member

Hola Pablo, despues del quebradero de cabeza compre el modulo TPPV de La caixa. Funciona con todos los Banco de Sermepa. Muy recomendable y muy buen servicio de atencion de incidencias

Lo recomiendo....49€ despues de todo el dia con esto....

Me salvo la vida. Actualiza los pedidos de forma impecable.

ResponderCitar
Respondido : 31/03/2012 4:03 pm
Página 2 / 2