Problem with fields in TPV form

Hi.

I am trying to implement a tpv form.

Everything seems to work fine but for an error in two fields: opeation number and total.

I have tried diverse solutions with no result.

“Operation Number” is “Num_operacion”
“Total” is “Importe”

The coding in the form page:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Credit Card - Payment Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta content="MSHTML 6.00.6000.16481" name="GENERATOR"/>


<script type="text/javascript">
<!--
function aceptar(){
/*	var a,b,c;
	a = document.formulariotpv.Num_operacion.value;
	b = document.formulariotpv.Importe.value;



		c = "comercio.php?Num_operacion=";
		c = c + a + "&Importe=" + b;
//	alert(c);
	document.formulariotpv.redirect.value = c;

//	alert(document.formulario.redirect.value);
*/

	document.formulariotpv.submit();
}
function Aleatorio()
	{
    var numero = "" + Math.random();
	if(numero[1] == ".")
		{
		numero = numero.substring(1,numero.length);
		}
	numero = numero.replace (".", "");
	while(numero[0] == "0")
		{
		numero = numero.substring(1,numero.length);
		}
	return(numero)	
	}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
-->
</script>

</head>
<body>
<div id="contenido"> 

  <div id="cuatro">

    <div id="form">
      <form name="formulario" action="http://cgi.thewebsite.com/FormMail.pl" method="post">
        <input type="hidden" value="968" name="Importe"/> 
        <input type="hidden" name="redirect"/> 
        <input type="hidden" value="tienda@thewebsite.com" name="recipient"/> 
        <input type="hidden" value="Purchase Attempt" name="subject"/> 
      <h3>opcion<input type="radio" name="Service Option" value="Opcion" onclick="document.formulario.Importe.value=968;"/></h3>
  
        <div id="fzaq"><p>Processing Operation Code</p><input name="Num_operacion"/></div>
        <div id="controls">
          <div id="fza"><input onclick="Javascript:aceptar()" type="button" value="SUBMIT" name="Send"/></div>
          <div id="fzb"><input type="reset" class="Button" value="ERASE"/></div>
        </div>
      </form>
      <form name="formulariotpv" action="comercio.php" method=post target=_blank">
        <input type="hidden" name="Num_operacion"/> 
        <input type="hidden" name="Importe"/> 
      </form>
    </div>
  </div>
<script type="text/javascript">

var a = Aleatorio();
document.formulario.Num_operacion.value = a;

</script>
</div>
</body>
</html>

I would appreciate some comment.

Thanks very much.

Hi there,

What is a tpv form?

There aren’t any apparent errors on your page (from a brief glance), but it would help if you could tell us what you are trying to accomplish, what you have tried and what is not working.

Hi Pullo.

Thanks for replying.

It is an online payment system for credit card.

The coding in the first post contains the javascript that generates a random number for “Operation Number” is “Num_operacion”) a series of fields with the payment option for each product in the shop. In this case, just one for the example.

<input type=“radio” name=“Service Option” value=“Opcion” onclick=“document.formulario.Importe.value=968;”/>

This page gets and processes the data to comercio.php, which is exactly this:


<html> 
<head> 
<title>Example with  sha-1 firm</title> 

<script language=javascript>
function lanzar()
{
document.forms[0].submit();
}
</script>
</head> 
  <body> 
<br>
<br>

<font face="Verdana" size="3" color="#0f0084">
<center><b>
Operation in process. <br>
Sending data to bank.<br>


<br><br><br>
Please wait a moment...
</center>
<?php
//
$Num_operacion=$_POST["Num_operacion"];
$Importe=$_POST["Importe"];

//Shop information
$Clave = "xxxxxxxxxxxxxx";
$MerchantID = "xxxxxxxxxxxxxx";
$AcquirerBIN = "xxxxxxxxxxxxxx";
$TerminalID = "xxxxxxxxxxxxxx";
$Referencia = "";
$Tipomoneda = "978";
$Exponente = "2";
//
$URL_OK = "http://www.ceca.es";
$URL_NOK = "http://www.ceca.es";

$string = $Clave.$MerchantID.$AcquirerBIN.$TerminalID.$Num_operacion.$Importe.$Tipomoneda.$Exponente."SHA1".$URL_OK.$URL_NOK;
$resultado = sha1($string);
/*
echo 'CADENA '+$string;
echo '<br>';
echo 'FIRMA '+$resultado;
*/		
?>
<br> 
  <form action="https://pgw.ceca.es/cgi-bin/tpv" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded">
    <input name="MerchantID" type=hidden value=<?php echo $MerchantID ?>>
    <input name="AcquirerBIN" type=hidden value=<?php echo $AcquirerBIN ?>>
    <input name="TerminalID" type=hidden value=<?php echo $TerminalID ?>>
    <input name="Num_operacion" type=hidden value=<?php echo $Num_operacion ?>>
    <input name="Importe" type=hidden value=<?php echo $Importe ?>>
    <input name="TipoMoneda" type=hidden value=<?php echo $Tipomoneda ?>>
    <input name="Exponente" type=hidden value=<?php echo $Exponente ?>>
    <input name="URL_OK" type=hidden value=<?php echo $URL_OK ?>>
    <input name="URL_NOK" type=hidden value=<?php echo $URL_NOK ?>>
    <input name="Firma" type=hidden value=<?php echo $resultado ?>>
    <input name="Idioma" type=hidden value=1>
    <input name="Pago_soportado" type=hidden value=SSL>
    <input name="Descripcion" type=hidden value="">
    <input name="Cifrado" type=hidden value="SHA1">
<script language=javascript>
lanzar();
</script>
  </form> 
  </body> 
</html> 

This coding, as you see, send the data to https://pgw.ceca.es/cgi-bin/tpv to process the payment to the bank.

I have changed the data for security, but they are ok:

$Clave = “xxxxxxxxxxxxxx”;
$MerchantID = “xxxxxxxxxxxxxx”;
$AcquirerBIN = “xxxxxxxxxxxxxx”;
$TerminalID = “xxxxxxxxxxxxxx”;

For some reason, the first page does not process the operation number (Num_operacion) and the value (“Importe”). Or perhaps comercio.php does not receive or process them properly.

I am not sure.

Thanks.

Hi again.

I have solved the “Num_operation” issue by changing the last js coding:

<script type="text/javascript">
<!--        
var a = Aleatorio();
document.formulariotpv.Num_operacion.value = a;
-->
</script>

But I am unable to get the total value (“Importe”) processed:


document.formulario.Importe.value

The 968.

Well it seems that you are currently expecting Importe to be present in $_POST:

$Importe=$_POST["Importe"];

Could you verify that this is the case by (for example) echoing it to the screen:

$Importe=$_POST["Importe"];
echo $Importe

or maybe just inspect what post contains on page load:

print_r($_POST);

and let me know the results$Importe=$_POST[“Importe”];
echo $Importe