Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/05/2011, 00:10
OverCrash
 
Fecha de Ingreso: enero-2008
Ubicación: Manresa
Mensajes: 24
Antigüedad: 16 años, 3 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!!