249 lines
8.5 KiB
Perl
Executable File
249 lines
8.5 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
# La ligne precedente doit obligatoirement se trouver sur la premiere ligne du programme
|
|
# Elle indique le chemin du module interpreteur Perl
|
|
|
|
#=================================================================#
|
|
# #
|
|
# call_request : Appel du module d appel a paiement #
|
|
# #
|
|
# (langage Perl, environnement UNIX, V4 Plug-in) #
|
|
# #
|
|
#=================================================================#
|
|
|
|
# utilisation du module CGI.pm standard (lecture des parametres d'entree)
|
|
use CGI qw(:standard);
|
|
|
|
$prom05_code = "prom05";
|
|
$prom05 = 5;
|
|
$prom10_code = "prom10";
|
|
$prom10 = 10;
|
|
$prom15_code = "prom15";
|
|
$prom15 = 15;
|
|
$prom20_code = "prom20";
|
|
$prom20 = 20;
|
|
|
|
|
|
# On fixe le numero de commerce dans une variable
|
|
# Pour l'instant, c'est le numero de test
|
|
$id_commercant="029800266211111";
|
|
|
|
|
|
# initialisation variables
|
|
# Chemin d'acces aux modules a parametrer (UNIX)
|
|
# NOUVEAU CHEMIN DU REPERTOIRE bin
|
|
$dir_bin="/ctt/usr/fela/Proj_Site_Marchand/citelis_tar/apipayment/bin";
|
|
|
|
#chemin des fichiers transactions
|
|
$dir_transactions = "/ctt/usr/fela/Proj_Site_Marchand/Site_Pages/Version2/transactions";
|
|
|
|
# affichage du debut du code HTML
|
|
print "Content-type: text/html\n\n";
|
|
print "<HTML><HEAD>";
|
|
print "<TITLE>Choix de la carte de paiement</TITLE>";
|
|
print "</HEAD>";
|
|
print "<BODY BGCOLOR=#FFFFFF text=#000000>";
|
|
|
|
|
|
$message = "";
|
|
|
|
# recuperation des donnees recues dans le formulaire
|
|
|
|
$item1_nb = 1 ; #param('item1_nb');
|
|
$item1_label = "produit 1"; #param('item1_label');
|
|
$item1_price = 10 ; #param('item1_price');
|
|
$item2_nb = 1 ;# param('item2_nb');
|
|
$item2_label = "produit 2"; # param('item2_label');
|
|
$item2_price = 11 ;# param('item2_price');
|
|
$item3_nb = 1 ; #param('item3_nb');
|
|
$item3_label = "produit 3" ; #param('item3_label');
|
|
$item3_price = 12 ; #param('item3_price');
|
|
$item4_nb = 1 ; #param('item4_nb');
|
|
$item4_label = "produit 4" ; #param('item4_label');
|
|
$item4_price = 13 ; #param('item4_price');
|
|
$item5_nb = 1 ; #param('item5_nb');
|
|
$item5_label = "produit 5" ; #param('item5_label');
|
|
$item5_price = 14 ; #param('item5_price');
|
|
$item6_nb = 1 ; #param('item6_nb');
|
|
$item6_label = "produit 6" ; #param('item6_label');
|
|
$item6_price = 15 ; #param('item6_price');
|
|
$item7_nb = 1 ; #param('item7_nb');
|
|
$item7_label = "produit 7" ; #param('item7_label');
|
|
$item7_price = 16 ; #param('item7_price');
|
|
|
|
$email = 'j.bertrand@airtria.fr' ; #param('email');
|
|
$nom = 'BERTRAND' ; #param('nom');
|
|
$prenom = 'Joseph' ; #param('prenom');
|
|
$societe = 'Airtria' ; #param('societe');
|
|
$adresse = '7 av Fulgence' ; #param('adresse');
|
|
$telephone = '02 96 48 92 72' ; #param('telephone');
|
|
$codepostal = '22300' ; #param('codepostal');
|
|
$ville = 'Lannion' ; #param('ville');
|
|
$pays = 'France' ; #param('pays');
|
|
|
|
$flaglivraison = 'non' ; #param('flaglivraison');
|
|
$livraison = '' ; #param('livraison');
|
|
$paiementcheque = 'non' ; #param('paiementcheque');
|
|
$langage = 'fr' ; #param('langage');
|
|
$promo = '' ;#param('promo');
|
|
|
|
# langue (permet d'afficher la page en francais ou anglais)
|
|
if ($langage eq "fr") {
|
|
$phrase1 = "a";
|
|
$phrase2 = "Commande";
|
|
$phrase3 = "frais de livraison";
|
|
$phrase4 = "<font size=\"\+2\"><b>paiement par carte:</b></font><br> veuillez selectionner votre carte de paiement:";
|
|
$phrase5 = "<font size=\"\+2\"><b>Paiement par cheque:</b></font><br> veuillez envoyer votre cheque a l'adresse suivante:";
|
|
}
|
|
else {
|
|
$langage = "en";
|
|
$phrase1 = "at";
|
|
$phrase2 = "BILL";
|
|
$phrase3 = "shipment";
|
|
$phrase4 = "<font size=\"\+2\"><b>Pay with card:</b></font><br> please select your credit card:";
|
|
$phrase5 = "<font size=\"\+2\"><b>Pay with cheque:</b></font><br> please send your cheque to:";
|
|
}
|
|
|
|
# calcul du prix de livraison
|
|
$nb_article = $item1_nb + $item2_nb + $item3_nb + $item4_nb + $item5_nb + $item6_nb + $item7_nb;
|
|
$livraison_tot = $livraison * $nb_article;
|
|
if ($flaglivraison eq 'non'){
|
|
$livraison_tot = 0;
|
|
}
|
|
|
|
$montant2 = $item1_nb * $item1_price;
|
|
$montant2 = $montant2 + $item2_nb * $item2_price;
|
|
$montant2 = $montant2 + $item3_nb * $item3_price;
|
|
$montant2 = $montant2 + $item4_nb * $item4_price;
|
|
$montant2 = $montant2 + $item5_nb * $item5_price;
|
|
$montant2 = $montant2 + $item6_nb * $item6_price;
|
|
$montant2 = $montant2 + $item7_nb * $item7_price;
|
|
|
|
$montant2 = $montant2 + $livraison_tot;
|
|
|
|
# calcul des promotions
|
|
if ($promo ne "")
|
|
{
|
|
if ($promo eq $prom05_code) {
|
|
$promo = $prom05;
|
|
}
|
|
if ($promo eq $prom10_code) {
|
|
$promo = $prom10;
|
|
}
|
|
if ($promo eq $prom15_code) {
|
|
$promo = $prom15;
|
|
}
|
|
if ($promo eq $prom20_code) {
|
|
$promo = $prom20;
|
|
}
|
|
$montantprom = $montant2 * $promo / 100;
|
|
$montantprom = sprintf("%.2f",$montantprom);
|
|
$montant2 = $montant2 - $montantprom;
|
|
}
|
|
|
|
# calcul du montant en centime;
|
|
$montant = $montant2 * 100;
|
|
|
|
$numero = sprintf("%04d%#02d%#02d-%#02d%#02d%#02d",(localtime)[5]+1900,(localtime)[4]+1,(localtime)[3],(localtime)[2],(localtime)[1],(localtime)[0]);
|
|
|
|
$fichier_transactions="$dir_transactions/transac.$numero";
|
|
open(FILE,">> $fichier_transactions") || print "Pb d'ouverture";
|
|
|
|
print FILE "prenom...........: $prenom \n";
|
|
print FILE "nom..............: $nom\n";
|
|
print FILE "email............: $email\n";
|
|
print FILE "societe..........: $societe\n";
|
|
print FILE "adresse..........: $adresse\n";
|
|
print FILE "codepostal.......: $codepostal\n";
|
|
print FILE "ville............: $ville\n";
|
|
print FILE "pays.............: $pays\n";
|
|
print FILE "telephone........: $telephone\n\n";
|
|
|
|
print FILE "----------- COMMANDE ----------------\n";
|
|
print FILE "$item1_nb $item1_label a $item1_price \n";
|
|
print FILE "$item2_nb $item2_label a $item2_price \n";
|
|
print FILE "$item3_nb $item3_label a $item3_price \n";
|
|
print FILE "$item4_nb $item4_label a $item4_price \n";
|
|
print FILE "$item5_nb $item5_label a $item5_price \n";
|
|
print FILE "$item6_nb $item6_label a $item6_price \n";
|
|
print FILE "$item7_nb $item7_label a $item7_price \n";
|
|
print FILE "---------------------------------------\n";
|
|
print FILE "Frais de port..........: $livraison_tot\n";
|
|
print FILE "montant total..........: $montant2\n";
|
|
print FILE "\n\n";
|
|
close (FILE);
|
|
|
|
print "<CENTER><font size=\"\+2\"><b>$phrase2</b></font><br><BR>";
|
|
print "$item1_nb $item1_label $phrase1 $item1_price euros<BR>";
|
|
print "$item2_nb $item2_label $phrase1 $item2_price euros<BR>";
|
|
print "$item3_nb $item3_label $phrase1 $item3_price euros<BR>";
|
|
print "$item4_nb $item4_label $phrase1 $item4_price euros<BR>";
|
|
print "$item5_nb $item5_label $phrase1 $item5_price euros<BR>";
|
|
print "$item6_nb $item6_label $phrase1 $item6_price euros<BR>";
|
|
print "$item7_nb $item7_label $phrase1 $item7_price euros<BR>";
|
|
|
|
if ($promo ne "")
|
|
{
|
|
print "promotion de $promo pour cent soit $montantprom euros<BR>";
|
|
}
|
|
print "$phrase3: $livraison euros x $nb_article = $livraison_tot euros<BR>";
|
|
print "<br>";
|
|
print " TOTAL: $montant2 euros<br>";
|
|
print "<hr>";
|
|
print "prenom...........: $prenom <br>";
|
|
print "nom..............: $nom<br>";
|
|
print "email............: $email<br>";
|
|
print "societe..........: $societe<br>";
|
|
print "adresse..........: $adresse<br>";
|
|
print "codepostal.......: $codepostal<br>";
|
|
print "ville............: $ville<br>";
|
|
print "pays.............: $pays<br>";
|
|
print "telephone........: $telephone<br><br>";
|
|
print "</CENTER><BR><hr>";
|
|
|
|
print "$phrase4<br>";
|
|
#Appel du module sips_request avec les parametres :
|
|
#sips_request <merchant_id> <montant> <currency_code> <language_code>
|
|
# <return_context> <receip_complement> <caddie> <data>
|
|
#
|
|
# Seulement 2 parametres obligatoires : <merchant_id> et <amount>
|
|
# Pour les parametres optionnels, si non renseignes placer la valeur NULL
|
|
|
|
$sips_result=`$dir_bin/sips_request $id_commercant $montant NULL $langage $numero NULL NULL NULL`;
|
|
|
|
# Lecture des parametres de sortie :
|
|
# On decoupe sips_result (fonction split, le separateur entre chaque champ etant un !)
|
|
# puis on place chaque partie dans un tableau @param
|
|
# Consulter la doc pour connaitre la place des parametres de sortie de sips_request
|
|
|
|
@param=split(/!/, $sips_result);
|
|
$sips_code=$param[1];
|
|
$sips_error=$param[2];
|
|
$sips_page=$param[3];
|
|
|
|
# En cas d erreur, affichage du message d erreur dans la page HTML
|
|
if ("$sips_code" == "-1") {
|
|
print "<br><hr><br>";
|
|
print "<center><b><h3>";
|
|
print "Erreur d appel ";
|
|
print "<br><br>";
|
|
print "Message d Erreur : $sips_error";
|
|
print "</h3></b></center>";
|
|
#exit;
|
|
}
|
|
|
|
# Affichage de la page html (sips_page)
|
|
print "<br>";
|
|
print "$sips_page";
|
|
#print "$sips_code";
|
|
#print "$sips_erreur";
|
|
|
|
if ($paiementcheque eq "oui") {
|
|
print "<hr>$phrase5<br>";
|
|
print "<center>monsite<br>7, avenue Fulgence Bienvenue<br>22300 LANNION<br>FRANCE</center>";
|
|
}
|
|
# Affichage de la fin de page de paiement
|
|
print "</BODY>";
|
|
print "</HTML>";
|
|
|
|
# End of file
|