To generate the payment request form using Perl please see the code below:
#!/usr/bin/perl -w
use strict;
# Prerequisites
# In order to be able to calculate the HMAC MD5 digest, we use a function hmac_md5_hex below.
#
# 1. Install Digest::MD5 from http://cpan.uwinnipeg.ca/dist/Digest-Perl-MD5
# 2. Install Digest::HMAC_MD5 from http://theoryx5.uwinnipeg.ca/pub/CPAN/authors/id/G/GA/GAAS/Digest-HMAC-1.01.tar.gz
# Other perl packages may be available
#
# With CPAN :
#
# (sudo) perl -MCPAN -e shell;
# install Digest::MD5
# install Digest::HMAC_MD5
# install Digest::SHA1
# exit
#
# Note: Digest::SHA1
# this will also install Digest::HMAC_SHA1
use Digest::HMAC_SHA1 qw(hmac_sha1_hex);
print "content-type: text/html\n\n";
print <<END_HEADER;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>
Hosted Checkout: Sample Perl Payment Form with SHA-1
</title>
<style type="text/css">
label {
display: block;
margin: 5px 0px;
color: #AAA;
}
input {
display: block;
}
input[type=submit] {
margin-top: 20px;
}
</style>
</head>
<body>
<h1>
Hosted Checkout: Sample Perl Payment Form with SHA-1
</h1>
<form action="https://checkout.e-xact.com/pay" method="POST">
END_HEADER
my $x_amount = "595.99";
my $x_login = "WSP-#####-##"; # Take from Payment Page ID in Payment Pages interface
my $transaction_key = "###############"; # Take from Payment Pages configuration interface
my $x_currency_code = "CAD"; # Needs to agree with the currency of the payment page
my $x_fp_sequence = int(rand 5000) + 1000;
my $x_fp_timestamp = time; # needs to be in UTC. Make sure webserver produces UTC
# The values that contribute to x_fp_hash
my $hmac_data = $x_login . "^" . $x_fp_sequence . "^" . $x_fp_timestamp . "^" . $x_amount . "^" . $x_currency_code;
my $x_fp_hash = hmac_sha1_hex($hmac_data, $transaction_key);
print('<label>x_login</label> <input name="x_login" value="' . $x_login . '">' );
print('<label>x_amount</label> <input name="x_amount" value="' . $x_amount . '">' );
print('<label>x_fp_sequence</label> <input name="x_fp_sequence" value="' . $x_fp_sequence . '">' );
print('<label>x_fp_timestamp</label> <input name="x_fp_timestamp" value="' . $x_fp_timestamp . '">' );
print('<label>x_fp_hash (with SHA-1)</label> <input name="x_fp_hash" value="' . $x_fp_hash . '" size="50">' );
print('<label>x_currency_code</label> <input type="hidden" name="x_currency_code" value="' . $x_currency_code . '">');
print <<END_REST
<input type="hidden" name="x_show_form" value="PAYMENT_FORM">
<input type="hidden" name="x_test_request" value="TRUE">
<input type="submit" value="Pay with Hosted Checkout">
</form>
</body>
</html>
END_REST
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article