Foros del Web » Programando para Internet » PHP »

formulario de alta + tpvv

Estas en el tema de formulario de alta + tpvv en el foro de PHP en Foros del Web. Hola compañeros, Tengo un formulario que una vez rellenado, da de alta a los participantes para una btt. Este año quiero implementar el pago de ...
  #1 (permalink)  
Antiguo 04/05/2011, 00:10
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 2 meses
Puntos: 0
formulario de alta + tpvv

Hola compañeros,

Tengo un formulario que una vez rellenado, da de alta a los participantes para una btt.
Este año quiero implementar el pago de las inscripciones mediante un tpvv de La Caixa via sermepa.

Mi duda es la siguiente: ahora, una vez rellenado formulario.php, lo dirijo a alta.php donde se hacen las validaciones e insercion a la bd. Donde y como tendria que incluir la llamada a la pasarela de pago?

Código PHP:
<?php
if( isset($_POST["mail"]) && isset($_POST["nom"]) && isset($_POST["pcog"]) && isset($_POST["scog"]) && isset($_POST["datanaix"]) && isset($_POST["sexe"]) && isset($_POST["nif"]) && isset($_POST["carrer"]) && isset($_POST["cp"]) && isset($_POST["pobl"]) && isset($_POST["talla"]) && isset($_POST["federat"]) && isset($_POST["recorregut"]) && isset($_POST["dormir"]) && isset($_POST["dormir_ac"]) && isset($_POST["acompanyant"]) ){
    
    
$query="SELECT * FROM usuaris WHERE nif='$nif'";
    
$resultat=mysql_query($query);
    
    if(
mysql_affected_rows()==0)
    {
    
        
$query="INSERT INTO usuarios (mail,nom,pcog,scog,datanaix,sexe,nif,carrer,cp,pobl,tel,mbl,talla,federat,recorregut,dormir,dormir_ac,acompanyant,info,any) values ('$mail','$nom','$pcog','$scog','$datanaix','$sexe','$nif','$carrer','$cp','$pobl','$tel','$mbl','$talla','$federat','$recorregut','$dormir','$dormir_ac','$acompanyant','$info','2010')";
        
$resultat=mysql_query($query);
    
        if(!
$resultat)
        {
            echo 
"<p> Hi ha hagut un problema en el proc&eacute;s d'alta de l'usuari.</p> <p>Si us plau, torna-ho a provar en uns minuts</p>";
            
$error=1;
            exit();
        }
        else
        {
            
$error=2;
        }
    }
    else
    {
        echo 
"<h2>Ja existeix un usuari amb el NIF que intentes donar d'alta.</h2><p>Si us plau, torna-ho a provar</p>";
        
$error=1;
    
    }
    
    
    if(
$error==2)
    {
        
        echo 
"<h2>Enhorabona <strong>$nom</strong>, el proc&eacute;s d'alta ha estat satisfactori</h2><p>En breu rebr&agrave;s un correu electr&ograve;nic a l'adre&ccedil;a que ens has facilitat (<strong>$mail</strong>).</p>";
    
        
mailimporta($text,$mail); //mail participant
        
mailimporta($text2,"[email protected]"); //mail administrador
    
}
                                                                                                                                                                                                                                                                                                                                                                                                 }else echo 
"<p> Hi ha hagut un problema en el proc&eacute;s d'alta de l'usuari.</p> <p>Falten dades. Si us plau, torna-ho a provar</p>";
                        
desconectar();
?>
El codigo de ejemplo que me ha facilitado sermepa es el siguiente:

Código PHP:
// else show error page
empty($Formulario) ?                            
      ShowForm($Ds_Merchant_Amount,$Ds_Merchant_Currency,$prod) :
      ShowError();
exit;
?>

<?PHP


function ShowError () {
    echo 
"<html><head><title>Results</title></head><body><table width=100% height=50%><tr><td><p><h2><center>Compruebe que todos los datos del formulario son correctos!!</center></h2></p></td></tr></table></body></html>\n";
# End of function ShowError

function ShowForm ($amount,$currency,$producto) {
// Posted data
global $HTTP_POST_VARS;

// Valores constantes del comercio
$url_tpvv='https://sis-t.sermepa.es:25443/sis/realizarPago';
$clave='qwertyasdf0123456789';
$name='Comercio Pruebas';
$code='999008881';
$terminal='4';
$order=date('ymdHis');
$amount='25';
$currency='978';
$transactionType='0';
$urlMerchant='http://www.sermepa.es';
$producto='Zapatos';

// Now, print the HTML script
echo "<html><head><title>Comercio Simulador</title></head>
<script language=JavaScript>
function calc() { 
vent=window.open('','tpv','width=725,height=600,scrollbars=no,resizable=yes,status=yes,menubar=no,location=no');
document.forms[0].submit();}
</script>
<body bgcolor=white>
<form name=compra action=$url_tpvv method=post target=tpv>
<pre>
<table>
<tr><td>
<h2>Comercio de prueba.</h2>
</td></tr><tr><td>
Comercio: <font color=blue>$name</font>
</td></tr><tr><td>
FUC: <font color=blue>$code</font>
</td></tr><tr><td>
Terminal: <font color=blue>$terminal</font>
</td></tr><tr><td>
Pedido: <font color=blue>$order</font>
</td></tr><tr><td>
Producto: <font color=blue>$producto</font>
</td></tr><tr><td>
Importe: <font color=blue>$amount</font>
</td></tr><tr><td>
Tipo de Operacion: <font color=blue>$transactionType (Autorización)</font>
</td></tr><tr><td>
URL del comercio: <font color=blue>$urlMerchant</font>
</td></tr><tr><td>"
;

// Currency strings 
if ($currency == "978") {
    echo 
"Moneda: <font color=blue>Euros</font>";
}

echo 
"</td>
</tr><tr><td>
<input type=hidden name=Ds_Merchant_Amount value='$amount'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Currency value='$currency'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Order  value='$order'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_MerchantCode value='$code'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Terminal value='$terminal'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_TransactionType value='$transactionType'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_MerchantURL value='$urlMerchant'>
</td></tr><tr><td>"
;

// Compute hash to sign form data
// $signature=sha1_hex($amount,$order,$code,$currency,$clave);
$message $amount.$order.$code.$currency.$transactionType.$urlMerchant.$clave;
$signature strtoupper(sha1($message));

echo 
"<input type=hidden name=Ds_Merchant_MerchantSignature value='$signature'>
</td></tr>
</table>
<center><a href='javascript:calc()'><img src='/tpvirtual.jpg' border=0 ALT='TPV Virtual'></a></center>
</pre>
</form>                                          
</body></html>"
;
# End of function ShowForm
?>
Mis dudas son como implementar esto, a la vez que me gustaria que me quedara un registro en la BD del estado de la transaccin (pagado/ no pagado)

me podriais hechar una mano?

Gracias!!
  #2 (permalink)  
Antiguo 04/05/2011, 02:24
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: formulario de alta + tpvv

Te digo como lo tengo implementado yo en mi web. Primero de todo tengo un formulario donde pido los datos que quiero. Este formulario me envia a una pagina donde muestro a modo informativo los datos que el usuario ha rellenado para que verifique si son correctos. Si quiere puede imprimirlos. Y acto seguido hay un boton que puse para hacer el pago. Ese botón esta en un form donde el action es la variable $url_tpvv; Tambien ese form debe de tener unos campos hidden con nombre DS_Merchant_xxx con el valor de los datos del formulario anterior. Y ya está, creo.

Espero haber-me explicado bien.
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #3 (permalink)  
Antiguo 04/05/2011, 11:20
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario de alta + tpvv

Vallu, ya he solucionado el tema del enlace hacia la pasarela, pero ahora tengo otra duda.

Como hago para que si una vez haya ido correcto el pago, se den de alta los datos del formulario en mi bd?
  #4 (permalink)  
Antiguo 04/05/2011, 11:25
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario de alta + tpvv

o mejor aun, que pueda guardar los datos de la inscripcion+ el numero de autorizacion en la BD
  #5 (permalink)  
Antiguo 05/05/2011, 02:18
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: formulario de alta + tpvv

Eso lo tienes que hacer justo antes de enviarlo a hacer el pago. La pega es que la persona mientras está haciendo el pago puede decidir que no quiere hacerlo y dejar el proceso a medias. Eso significa que no hay manera de saber si la persona que ingresarías en tu bd ha realizado el pago exitosamente.
Solo podrás comprobarlo mirando directamente si te han hecho algún ingreso. Lo siento pero no conozco ninguna manera de poder hacer lo que pides.
Siempre podrías llamarlos para ver si hay alguna manera de que te envien ellos los datos a la pagina que tu les indiques, pero lo más seguro es que digan que no por la política de privacidad y porque sería un vacío en la seguridad.
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #6 (permalink)  
Antiguo 05/05/2011, 13:29
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario de alta + tpvv

a ver, ya lo "medio" tengo... pero tengo otro problemilla....

os cuento el funcionamiento:

Al enviar el formulario con el alta, pasa a una pagina intemedia que graba los datos de la inscripcion en una tabla de la BD y luego lanza la pasarela de pago.
Una vez finalizada la pasarela de pago y ha ido OK, retorna a una pagina que actualiza la bd con los campos que devuelve SERMEPA..... y aqui es donde tengo el problema.
Como recupero estos datos de conformidad?

he provado con

Código PHP:
$Ds_Date $_POST['Ds_Date']; 
y no recupera nada....

alguna indicacion?

gracias

Última edición por OverCrash; 05/05/2011 a las 13:36
  #7 (permalink)  
Antiguo 09/05/2011, 04:23
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: formulario de alta + tpvv

Pero estas seguro de que SERMEPA devuelve esos datos de alguna forma? Porque yo creo que no, aunque espero que me equivoque.
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #8 (permalink)  
Antiguo 09/05/2011, 04:48
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario de alta + tpvv

Si, seguro que estos datos los envian.... es mas, ya los he recuperado, pero configurando el tpvv para que envie los datos en la URL, y entonces los recojo por $_GET... pero claro, queda muy feo que se vean los datos en la barra de direcciones del navegador....
  #9 (permalink)  
Antiguo 09/05/2011, 05:15
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: formulario de alta + tpvv

Y no puedes configurar que se envien por post o hidden?
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #10 (permalink)  
Antiguo 09/05/2011, 05:19
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario de alta + tpvv

yo solo veo la opcio de configurar en envio de campos, no especificar si se puede hacer por POST o por GET, però estoy seguro que los modulos de prestashop, magesto, joomla no recojen los datos por get.....
  #11 (permalink)  
Antiguo 09/05/2011, 16:04
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: formulario de alta + tpvv

Pues el TPVV normalmente trabaja con envios de datos con notificaciones instantanes IPN, para eso antes hacer el codigo debes leerte los manuales tecnico del tpvv.
En dicho manual te especifica los parametros que enviaran via POST (backgound)
o sea que esto sucede sin que el usuario se de cuenta,

normalmente debes enviar un parametro en el formulario con la urls de IPN en otros casos esta urls se configura desde el panel del TPVV.

No recuerdo bien pero servired, debe ser configurado desde el panel del tpvv, alli debes especificar la urls de notificacion, retorno y pago no cancelado.

hacer un receptor de IPN es sencillo, ya que debes tratar los datos como si estuvieras recibiendo un formulario.
con los datos puedes tomar desiciones, acciones etc....

en las ultimas versiones de sistemas virtuales de cobros se estan empleando envio de datos via XML, esto ya es mas complicado de tratar...

saludos!!

PD: debes tener un manual tecnico con los detalles de implementacion. si no lo tienes debes solicitarlo al soporte tecnico del TPVV.

Etiquetas: formulario
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 16:45.