Hola a todos.
Mi pregunta es si alguno tiene experiencia con la implementación de pagos recurrentes/sucesivos con el TPV de servired.
Ya he logrado implementar el primer pago, pero con el cron que debería hacer los pagos sucesivos he tenido infinidad de problemas. Le he dado muchas vueltas al asunto y no he podido llegar a una solución.
El código de mi cron job es el siguiente:
Código PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors',true);
//Funcion que hace el curl
function download_page($url,$fields,$fields_string){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_FAILONERROR,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
//End funcion que hace el curl
//Conexion a BD
$host = 'localhost';
$user = 'username';
$pass = 'password;
$database = 'mydatabase';
$db = new PDO('mysql:host=localhost;dbname=freshvana;charset=utf8', $user, $pass);
//Conexion a BD
$thedate = date('Y-m-d');
foreach($db->query('SELECT * FROM freshcuotas WHERE Fecha_Cuota = "'.$thedate.'" AND Customer_Id = 23') as $row) {
$cuotas_id = $row['cuotas_id'];
$Fecha_Cuota = $row['Fecha_Cuota'];
$Order_Id = $row['Order_Id'];
$Customer_Id = $row['Customer_Id'];
$Valor_Cuota = $row['Valor_Cuota']*100;
$Currency = $row['Currency'];
$Status = $row['Status'];
$Active = $row['Active'];
$Url = $row['Url'];
$Clave_Comercio = $row['Clave_Comercio'];
$Codigo_Comercio = $row['Codigo_Comercio'];
$firma_comercio = sha1($Valor_Cuota.$Order_Id.$Codigo_Comercio.'978'.'6'.$Clave_Comercio);
$xml="
<?xml version='1.0' encoding=\"ISO-8859-1\" ?>
<DATOSENTRADA>
<DS_VERSION>0.1</DS_VERSION>
<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
<DS_MERCHANT_MERCHANTURL>$Url<DS_MERCHANT_MERCHANTURL>
<DS_MERCHANT_TRANSACTIONTYPE>6</DS_MERCHANT_TRANSACTIONTYPE>
<DS_MERCHANT_MERCHANTDATA>Freshvana+Orden+No+$Order_Id</DS_MERCHANT_MERCHANTDATA>
<DS_MERCHANT_AMOUNT>$Valor_Cuota</DS_MERCHANT_AMOUNT>
<DS_MERCHANT_MERCHANTNAME>Freshvana</DS_MERCHANT_MERCHANTNAME>
<DS_MERCHANT_MERCHANTSIGNATURE>$firma_comercio</DS_MERCHANT_MERCHANTSIGNATURE>
<DS_MERCHANT_TERMINAL>1</DS_MERCHANT_TERMINAL>
<DS_MERCHANT_MERCHANTCODE>$Codigo_Comercio</DS_MERCHANT_MERCHANTCODE>
<DS_MERCHANT_ORDER>$Order_Id</DS_MERCHANT_ORDER>
</DATOSENTRADA>";
$url = 'https://sis.sermepa.es/sis/operaciones';
$fields_string = '';
$fields =array('entrada',$xml);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.urlencode($value).'&'; }
rtrim($fields_string, '&');
$sXML = download_page($url,$fields,$fields_string);
$oXML = new SimpleXMLElement($sXML);
//The service response code
echo '<hr>';
echo '<xmp>';
print_r($sXML);
echo '</xmp>';
echo '<hr>';
print_r($oXML);
echo '<hr>';
}//end foreach
?>
Y sin importar que haga el resultado siempre es:
Código:
<?xml version='1.0' encoding="ISO-8859-1" ?><RETORNOXML><CODIGO>SIS0007</CODIGO><RECIBIDO>null</RECIBIDO></RETORNOXML>
Esto me dice que el xml de entrada no pudo ser leído.
He intentado con muchas formas y cambios en el xml pero no puedo hacer que funcione.
Cualquier ayuda, estaría muy agradecido.
La documentación mas reciente que he encontrado esta en:
http://drupal.org/files/GUIACOMERCIOSSISv5.19.pdf