/    Sign up×
Community /Pin to ProfileBookmark

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=”[email protected]” 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.
[/CODE]

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>
[/CODE]

This coding, as you see, send the data to [url]https://pgw.ceca.es/cgi-bin/tpv[/url] 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.

to post a comment
JavaScript

2 Comments(s)

Copy linkTweet thisAlerts:
@PadonakJan 22.2014 — your 'submit' button sends to comercio.php the second form (see your script below w/o the commented part)

<i>
</i>
function aceptar(){
document.[B][COLOR="#FF0000"]formulariotpv[/COLOR][/B].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

<i>
</i>
&lt;form name="formulariotpv" action="comercio.php" method="post" target="_blank"&gt;
&lt;input type="hidden" name="Num_operacion" /&gt;
&lt;input type="hidden" name="Importe" [B][COLOR="#008080"]value="test"[/COLOR][/B] /&gt;
&lt;/form&gt;



then your comercio.php will get the value of this Importe
Copy linkTweet thisAlerts:
@andresbauthorJan 22.2014 — Solved!!

Thanks.
×

Success!

Help @andresb spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 6.16,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @nearjob,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,
)...