www.webdeveloper.com
Results 1 to 3 of 3

Thread: Problem with fields in payment order processing

  1. #1
    Join Date
    Jan 2014
    Posts
    7

    Problem with fields in payment order processing

    Hi.

    I am trying to implement a form to process payments in my online shop.

    Everything seems to work fine but for an error in the "total" field.

    I have tried diverse solutions with no result.

    "Total" is "Importe" (It is in Spanish, sorry).

    The coding in the form page:

    Code:
    <!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.formulariotpv.Num_operacion.value = a;
    
    </script>
    </div>
    </body>
    </html>
    
    I would appreciate some comment.
    Thus, it contains the javascript that generates a random number for "Operation Number" ("Num_operacion") and a series of fields with the payment options 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;"/>

    The value to process: 968 (9,68 euros).

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

    Code:
    <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 value ("Importe").

    Or perhaps comercio.php does not receive or process them properly.

    I am not sure.

    In any case, I am unable to get the total value ("Importe") processed:

    (document.formulario.Importe.value)

    Thanks very much for any comment on this.

  2. #2
    Join Date
    May 2006
    Location
    Somewhere behind your screen
    Posts
    1,633
    your 'submit' button sends to comercio.php the second form (see your script below w/o the commented part)

    Code:
    function aceptar(){
    document.formulariotpv.submit();
    }
    both forms have the same fields with name="Importe", but the second form which is sent by 'submit' has hidden Importe field w/o any value. if you change your code, for example, to

    Code:
    <form name="formulariotpv" action="comercio.php" method="post" target="_blank">
            <input type="hidden" name="Num_operacion" /> 
            <input type="hidden" name="Importe" value="test" /> 
          </form>
    then your comercio.php will get the value of this Importe
    xxx: Guess Buddhist riddle: "What is the sound of one hand clapping?"
    yyy: facepalm

  3. #3
    Join Date
    Jan 2014
    Posts
    7
    Solved!!

    Thanks.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles