#!/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); use DBI; require "cgi-lib.pl"; # recuperation des donnees du formulaire &ReadParse(*query); $ID_client_el = $query{'ID_client_el'}; $nocmde = $query{'nocomde'}; $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 ""; print "Choix de la carte de paiement"; print ""; print ""; print "identifiant du client : $ID_client_el\n"; $message = ""; # recuperation des donnees relatives a la commande # reprendre le calepin final # se connecter a la base $dbh = DBI->connect("dbi:Pg:dbname=s_marchand", postgres, ) or die $DBI::errstr; # recuperer les produits selectionnes par le client concerne $cursor = $dbh->prepare( "SELECT pa.code_famille, pa.code_produit, pr.denomination, pa.qte, pr.prix_ht " . "FROM produits pr, panier pa " . "WHERE pa.id_client_el like '$ID_client_el' " . "AND pa.code_famille = pr.code_famille " . "AND pa.code_produit= pr.code_produit" ); $cursor->execute; @lgcom = $cursor->fetchrow; if ($lgcom[0] ne ""){ $item1_nb = $lgcom[3]; $item1_label = $lgcom[2]; $item1_price = $lgcom[4]; } @lgcom = $cursor->fetchrow; if ($lgcom[0] ne ""){ $item2_nb = $lgcom[3]; $item2_label = $lgcom[2]; $item2_price = $lgcom[4]; } @lgcom = $cursor->fetchrow; if ($lgcom[0] ne ""){ $item3_nb = $lgcom[3]; $item3_label = $lgcom[3]; $item3_price = $lgcom[4]; } $cursor->finish; # retrouver le client qui effectue la commande $client = $dbh->prepare( "SELECT bc.email, bc.nom, bc.prenom, bc.societe , bc.adr1, bc.adr2, bc.tel, bc.cpt, bc.ville" . "FROM base_clients bc, client_en_ligne cl " . "WHERE cl.id_client_el = '$ID_client_el' " . "AND cl.num_client = bc.num_client " ); $client->execute; @coordonnees = $client->fetchrow; ($email,$nom,$prenom,$societe,$adr1,$adr2,$telephone,$codepostal,$ville) = @coordonnees; $client->finish; # se deconnecter de la base $dbh->disconnect; $adresse = "$adr1" . " , " . "$adr2"; $pays = 'France'; $flaglivraison = 'non' ; #param('flaglivraison'); $livraison = '' ; #param('livraison'); $paiement = $query{'paiement'}; if ($paiement eq "cheque"){ $paiementcheque = 'oui'; }else{ $paiementcheque = 'non'; } $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 = "paiement par carte:
veuillez selectionner votre carte de paiement:"; $phrase5 = "Paiement par cheque:
veuillez envoyer votre cheque à l'ordre d'AIRTRIA à l'adresse suivante:"; } else { $langage = "en"; $phrase1 = "at"; $phrase2 = "BILL"; $phrase3 = "shipment"; $phrase4 = "Pay with card:
please select your credit card:"; $phrase5 = "Pay with cheque:
please send your cheque ordered to AIRTRIA 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 "
$phrase2

\n"; if ($item1_label ne "") { print "$item1_nb $item1_label $phrase1 $item1_price euros
"; } if ($item2_label ne "") { print "$item2_nb $item2_label $phrase2 $item2_price euros
"; } if ($item3_label ne "") { print "$item3_nb $item3_label $phrase3 $item3_price euros
"; } if ($promo ne "") { print "promotion de $promo pour cent soit $montantprom euros
"; } #print "$phrase3: $livraison euros x $nb_article = $livraison_tot euros
"; print "
"; print " TOTAL: $montant2 euros
"; print "
"; print "prenom...........: $prenom
"; print "nom..............: $nom
"; print "email............: $email
"; print "societe..........: $societe
"; print "adresse..........: $adresse
"; print "codepostal.......: $codepostal
"; print "ville............: $ville
"; print "pays.............: $pays
"; print "telephone........: $telephone

"; print "


"; print "$phrase4
"; #Appel du module sips_request avec les parametres : #sips_request # # # Seulement 2 parametres obligatoires : et # 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 "


"; print "

"; print "Erreur d appel "; print "

"; print "Message d Erreur : $sips_error"; print "

"; #exit; } # Affichage de la page html (sips_page) print "
"; print "$sips_page"; #print "$sips_code"; #print "$sips_erreur"; if ($paiementcheque eq "oui") { print "
$phrase5
"; print "

7, avenue Fulgence Bienvenue
22300 LANNION
FRANCE
"; } # Affichage de la fin de page de paiement print ""; print ""; # End of file