Message de rapport:
 

Re: Terminal CB Ingenico ?

Sujet: Re: Terminal CB Ingenico ?
par Anonyme sur 13/5/2006 13:08:35

voila une procedure qui permet d'envoyer la somme au terminal bancaire sagem ( fct tres bien)
le protocol etant standard cela doit marché pour l'ingenico
attention, il faut entrer dans le menu de l'appareil pour regle vitesse ....





PROCEDURE ProcDialogueCarte(ParamMontant)

ii,jj,LRC est un entier
Donnees est une chaîne
ACK,ENQ,STX,ETX sont des chaînes
Reponse sont des chaînes
MontantCentime est un réel=Arrondi( ParamMontant*100)

STX=Caract(2);ETX=Caract(3);ENQ=Caract(5);ACK=Caract(6)

// Si pas d'imprimante alors on retour
NumSerie est un entier=1 // doit etre modifiable
// Ferme le port serie
sFerme(NumSerie)

SI sOuvre(NumSerie, 2000, 2000) ALORS
// Paramétrage de COM1
sFixeParamètre(NumSerie, 9600, 0, 8, 1)
SINON
Erreur("Erreur d'ouverture du port série "+NumSerie+" pour l'e terminal bancaire")
RETOUR
FIN

// Vide le port Serie
SI sDansFileEntrée(NumSerie) > 0 ALORS
Reponse=sLit(NumSerie,sDansFileEntrée(NumSerie))
FIN

// Format le message
Donnees="01"+NumériqueVersChaîne(MontantCentime,"08d")+ETX

// Calcul LRC
LRC=0
POUR ii = 1 A Taille(Donnees)
LRC=OUExclusifBinaire (LRC,Asc(Donnees[[ii]]))
FIN
Donnees=STX+Donnees+Caract(LRC)

SI PAS sEcrit(NumSerie,ENQ) ALORS
Erreur("Impossible d'envoyer l'ENQ")
sFerme(NumSerie)
Ferme
FIN

SI PAS sEcrit(NumSerie,Donnees) ALORS
Erreur("Impossible d'envoyer les données au terminal")
sFerme(NumSerie)
Ferme
FIN

// Attend réponse
Multitâche(10)
SI sDansFileEntrée(NumSerie) > 0 ALORS
Reponse=sLit(NumSerie,sDansFileEntrée(NumSerie))
SI Position(Reponse,ACK)>0 ALORS
Resultat=Vrai
FIN
SINON
Resultat=Faux
FIN

sFerme(NumSerie)
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2