Getting a total from this variable:
$myHiddenAmts = $myHiddenAmts . "<input name=\"TotalAmt\" type=\"hidden\" value=\"". $myTotal . "\">\n";
The original script looks like this:
sub CreateHeader
{
my $myHTML = "";
$myHTML = $myHTML . "Content-type: text/html\n\n";
$myHTML = $myHTML . "<html>\n";
$myHTML = $myHTML . "<head>\n";
$myHTML = $myHTML . "<title>GF Trucking Derbies - Registration Payment</title> \n";
$myHTML = $myHTML . "</head>\n";
$myHTML = $myHTML . "<body>\n";
$myHTML = $myHTML . "<form name=\"form1\" method=\"post\" action=\"finalize.cgi\">\n";
$myHTML = $myHTML . "<table align=\"center\">\n";
$myHTML = $myHTML . "<tr>\n";
$myHTML = $myHTML . "<td align=\"center\">\n";
$myHTML = $myHTML . "<font face=\"Humanst521 XBd BT\">\n";
$myHTML = $myHTML . "<span style=\"letter-spacing: 1pt\">\n";
$myHTML = $myHTML . "<span style=\"font-variant: small-caps\">\n";
I changed it to this as per what the payment gateway wanted:
sub CreateHeader
{
my $myHTML = "";
$myHTML = $myHTML . "Content-type: text/html\n\n";
$myHTML = $myHTML . "<html>\n";
$myHTML = $myHTML . "<head>\n";
$myHTML = $myHTML . "<title>GF Trucking Derbies - Registration Payment</title> \n";
$myHTML = $myHTML . "</head>\n";
$myHTML = $myHTML . "<body>\n";
$myHTML = $myHTML . "<form name=\"form1\" method=\"post\" action=\"https://www.payNET.com/process.asp\">\n";
$myHTML = $myHTML . "<input type="hidden" name="ssl_merchant_id" value="46773">\n";
$myHTML = $myHTML . "<input type="hidden" name="ssl_pin" value="FDD3TM">\n";
$myHTML = $myHTML . "<input type="hidden" name="ssl_show_form" value="true">\n";
$myHTML = $myHTML . "<input type="hidden" name="ssl_test_mode" value="false">\n";
$myHTML = $myHTML . "<input type="hidden" name="ssl_amount" value="$myTotal">\n";
$myHTML = $myHTML . "<table align=\"center\">\n";
$myHTML = $myHTML . "<tr>\n";
$myHTML = $myHTML . "<td align=\"center\">\n";
...any help would be appreciated. I'm probably way off base!
If you're unsure, post the line in question. Believe me, I understand how difficult it is to see errors in code that you've been staring at for hours and hours.
$myHTML = $myHTML . "<input type=\"hidden\" name=\"ssl_merchant_id\" value=\"46773\">\n";
This is the error message I got when it went through the gateway:
An Error Occurred
Message : The amount supplied in the authorization request appears invalid.
Here's the code that $myTotal results from:
$myTotal=$myRegAmt
+$myOptionsAmt
+$myCaptainAmt
+$myAngler2Amt
+$myAngler3Amt
+$myAngler4Amt
+$myDonationAmt;
# Return HTML that hides these amounts.
my $myHiddenAmts="";
$myHiddenAmts = "\n";
$myHiddenAmts = $myHiddenAmts . "<input name=\"RegAmt\" type=\"hidden\" value=\"". $myRegAmt . "\">\n";
$myHiddenAmts = $myHiddenAmts . "<input name=\"OptionsAmt\" type=\"hidden\" value=\"". $myOptionsAmt . "\">\n";
$myHiddenAmts = $myHiddenAmts . "<input name=\"CaptainAmt\" type=\"hidden\" value=\"". $myCaptainAmt . "\">\n";
$myHiddenAmts = $myHiddenAmts . "<input name=\"Angler2Amt\" type=\"hidden\" value=\"". $myAngler2Amt . "\">\n";
$myHiddenAmts = $myHiddenAmts . "<input name=\"Angler3Amt\" type=\"hidden\" value=\"". $myAngler3Amt . "\">\n";
$myHiddenAmts = $myHiddenAmts . "<input name=\"Angler4Amt\" type=\"hidden\" value=\"". $myAngler4Amt . "\">\n";
$myHiddenAmts = $myHiddenAmts . "<input name=\"DonationAmt\" type=\"hidden\" value=\"". $myDonationAmt . "\">\n";
$myHiddenAmts = $myHiddenAmts . "<input name=\"TotalAmt\" type=\"hidden\" value=\"". $myTotal . "\">\n";
$myHiddenAmts = $myHiddenAmts . "\n";
return $myHiddenAmts;
}
If it is, then here is my guess: You are in test mode and the gateway only accepts a specific amount in test mode. I've seen that exact message before, can't remember what gateway it is. :-) Check the developer docs.
Really really important is to check out Moltar's comment on qq. Part of your syntax problems are because you're writing way more code than required, having to add backslashes everywhere, and that makes for forehead-wrenching error-prone late nights. Look how much simpler this is, and it's the exact same output:
$myHiddenAmts = qq¦
<input name="RegAmt" type="hidden" value="$myRegAmt">
<input name="OptionsAmt" type="hidden" value="$myOptionsAmt">
<input name="CaptainAmt" type="hidden" value="$myCaptainAmt">
<input name="Angler2Amt" type="hidden" value="$myAngler2Amt">
<input name="Angler3Amt" type="hidden" value="$myAngler3Amt">
<input name="Angler4Amt" type="hidden" value="$myAngler4Amt">
<input name="DonationAmt" type="hidden" value="$myDonationAmt">
<input name="TotalAmt" type="hidden" value="$myTotal">
¦;
Pick a delimiter, any character (I use pipes because they are seldom used in normal text), put it in front and behind your output, and put qq in front. The only thing you'll have to escape are the delimiters inside the text, $, @, and %.