Foros del Web » Programando para Internet » PHP »

Pago sucesivo TPV servired?

Estas en el tema de Pago sucesivo TPV servired? en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/11/2012, 08:10
 
Fecha de Ingreso: junio-2008
Ubicación: Armenia- Colombia || El tigre - Venezuela
Mensajes: 34
Antigüedad: 15 años, 10 meses
Puntos: 1
Pago sucesivo TPV servired?

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($chCURLOPT_URL$url);
                
curl_setopt($chCURLOPT_POSTcount($fields));
                
curl_setopt($chCURLOPT_POSTFIELDS$fields_string);
                
curl_setopt($chCURLOPT_FAILONERROR,1);
                
curl_setopt($chCURLOPT_FOLLOWLOCATION,1);
                
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
                
curl_setopt($chCURLOPT_TIMEOUT15);
                
$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

Última edición por Necroside; 30/11/2012 a las 08:12 Razón: Añadir link a documentación.
  #2 (permalink)  
Antiguo 08/12/2012, 10:52
 
Fecha de Ingreso: diciembre-2012
Mensajes: 1
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Pago sucesivo TPV servired?

Buenas Necroside,

Conseguiste solucionar el problema? Yo estoy ante la misma situación.

Un saludo.
  #3 (permalink)  
Antiguo 08/12/2012, 12:32
 
Fecha de Ingreso: junio-2008
Ubicación: Armenia- Colombia || El tigre - Venezuela
Mensajes: 34
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Pago sucesivo TPV servired?

Al parecer el xml se tiene que pasar como esta, sin hacerle ninguna conversión.

Este código es el que me funciona. Lleva una semana en pruebas y puede no ser el mejor código, pero cumple su objetivo.

Código PHP:
<?php

//Funcion que hace el curl
        
function download_page($url,$xml){

                
$url 'https://sis.sermepa.es/sis/operaciones';
                
$ch curl_init();
                
curl_setopt($chCURLOPT_URL$url);
                
curl_setopt($chCURLOPT_POST1);
                
curl_setopt($chCURLOPT_POSTFIELDS"entrada=$xml");
                
curl_setopt($chCURLOPT_FAILONERROR,1);
                
curl_setopt($chCURLOPT_FOLLOWLOCATION,1);
                
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
                
curl_setopt($chCURLOPT_TIMEOUT15);
                
$result curl_exec($ch);
                
curl_close($ch); 
                return 
$result;
        }
//End funcion que hace el curl

//...

$firma_comercio sha1($Valor_Cuota.$Order_Id.$Codigo_Comercio.'978'.'6'.$Clave_Comercio);

        
$xml "<DATOSENTRADA>";
        
$xml .= "<DS_VERSION>0.1</DS_VERSION>";
        
$xml .= "<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>";
        
$xml .= "<DS_MERCHANT_MERCHANTURL>$Url</DS_MERCHANT_MERCHANTURL>";
        
$xml .= "<DS_MERCHANT_TRANSACTIONTYPE>6</DS_MERCHANT_TRANSACTIONTYPE>";
        
$xml .= "<DS_MERCHANT_MERCHANTDATA>Freshvana+Orden+No+$Order_Id</DS_MERCHANT_MERCHANTDATA>";
        
$xml .= "<DS_MERCHANT_AMOUNT>$Valor_Cuota</DS_MERCHANT_AMOUNT>";
        
$xml .= "<DS_MERCHANT_MERCHANTNAME>Freshvana</DS_MERCHANT_MERCHANTNAME>";
        
$xml .= "<DS_MERCHANT_MERCHANTSIGNATURE>$firma_comercio</DS_MERCHANT_MERCHANTSIGNATURE>";
        
$xml .= "<DS_MERCHANT_TERMINAL>1</DS_MERCHANT_TERMINAL>";
        
$xml .= "<DS_MERCHANT_MERCHANTCODE>$Codigo_Comercio</DS_MERCHANT_MERCHANTCODE>";
        
$xml .= "<DS_MERCHANT_ORDER>$Order_Id</DS_MERCHANT_ORDER>";
        
$xml .= "</DATOSENTRADA>";

        
        
$the_string .= "Fecha: ".$thedate."\n";
        
$the_string .= "Hora: ".date('H:i:s')."\n";
        
$the_string .= 'THE XML'."\n";
        
$the_string .= $xml."\n";

        
$url 'https://sis.sermepa.es/sis/operaciones';

        
$sXML download_page($url,$xml);
        
        
$oXML = new SimpleXMLElement($sXML);
        
//The service response code
        
echo '<br><xmp>'.$sXML.'</xmp>';
        
$arryaOxml get_object_vars($oXML);
        
$codigo =  $arryaOxml['CODIGO'];
        
$arrayOperacion get_object_vars($oXML->OPERACION);
        if(isset(
$arrayOperacion['Ds_Response']))
                
$respuesta =  $arrayOperacion['Ds_Response'];
        
        if(isset(
$arrayOperacion['Ds_Response']) && (int)$codigo == && (int)$respuesta == ){
                
$string_to_save 'Operacion exitosa.';
                
$status 1;
        }elseif(isset(
$arrayOperacion['Ds_Response']) && (int)$respuesta == 190){
                
$string_to_save 'Operacion denegada por el banco.';
                
$status 0;
        }else{
                
$string_to_save 'Error en la operacion: '.$codigo;  
                
$status 0;
        }
        


?>
  #4 (permalink)  
Antiguo 27/03/2013, 05:46
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Pago sucesivo TPV servired?

INCREIBLE.

Llevaba meses con este tema y me lo has solucionado, MUCHÍSIMAS GRACIAS.

Un saludo.

Etiquetas: pagos, servired, tpv
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:10.