|
Débuté par francoise, 09 avr. 2009 19:56 - 89 réponses |
| |
| | | |
|
| |
Posté le 09 avril 2009 - 19:56 |
Bonjour, Quelqu'un aurait-il déjà programmé des interfaces avec les tpe de carte bancaire. Si oui pouvez vous me donner quelques indications ou exemples. D'avance Merci. |
| |
| |
| | | |
|
| | |
| |
Posté le 10 avril 2009 - 11:34 |
bonjour, il y a le protocole CONCERT, sinon par exemple pour le TPE WYNID il y a une Dll ou activeX, en gros cela dépend du matériel que tu veux piloter; chaque constructeur possède un moyen de piloter ces matèriels |
| |
| |
| | | |
|
| | |
| |
Posté le 10 avril 2009 - 12:42 |
Bonjour, j'essaye moi aussi de programmer la liaison très difficile de trouver une doc sur le protocole concert j ai réussi a en trouver une si cela vous intéresse laisser moi votre mail pour vous la transmettre
Cordialement, |
| |
| |
| | | |
|
| | |
| |
Posté le 23 avril 2009 - 20:25 |
Bonjour, Je suis également à la recherche d'une documentation du protocole Concert. Pourrais tu m'envoyer cette documentation ? Merci d'avance pour votre aide
xbourdon@cylande.com |
| |
| |
| | | |
|
| | |
| |
Posté le 24 avril 2009 - 12:31 |
La documentation sur le protocole concert m'interesserait aussi. Merci beaucoup
okjetente@hotmail.fr |
| |
| |
| | | |
|
| | |
| |
Posté le 17 décembre 2009 - 17:54 |
Bonjour,
Je suis interessé par votre documentation sur le protocole concert. Pourriez vous me l'envoyer par mail ?
Salutations
Rives a écrit dans le message de news <a7f1da635f3733c66f5152c9150e4cbe@news.pcsoft> :
Bonjour, j'essaye moi aussi de programmer la liaison très difficile de trouver une doc sur le protocole concert j ai réussi a en trouver une si cela vous intéresse laisser moi votre mail pour vous la transmettre
Cordialement,
|
| |
| |
| | | |
|
| | |
| |
Posté le 12 janvier 2010 - 16:43 |
Bonjour Rives,
Votre documentation sur le protocole concert m'interresse également. Pourriez vous me l'envoyer par mail lbg@sasi.fr ?
Salutations |
| |
| |
| | | |
|
| | |
| |
Posté le 25 février 2010 - 11:47 |
Bonjour David
voila mon pb si tu peux m'aider
Nous devons intégrer dans notre logiciel de Magasin la liaison série ou USB avec le TPE pour l'envoi du montant. Nous avons fait des tests sur les Sagem, mais cela ne marche pas, erreur 79 à la transmission des datas (STX+DATA+ETX+LRC). Sagem semble être out et ne sait pas.
Aurais tu une idée (DLL) et un document sur les codes erreur
Réalisé:
On envoi ENQ Réponse ACK ok du TPE
On envoi (STX+DATA+ETX+LRC). et le sagem nous répond 79 et affiche "Fonction impossible"
Merci
Salutations, PY OGER 06 86 42 22 91 |
| |
| |
| | | |
|
| | |
| |
Posté le 25 février 2010 - 12:10 |
Bonjour,
Merci de m'envoyer la doc si tu peux Voila mon PB si tu as une idee
Nous devons intégrer dans notre logiciel de Magasin (www.isctuto.eu) la liaison série ou USB avec le TPE pour l'envoi du montant.
Nous avons fait des tests sur les Sagem, mais cela ne marche pas, erreur 79 à la transmission des datas (STX+DATA+ETX+LRC). Sagem semble être out et ne sait pas.
Auriez-vous une idée (DLL) et un document sur les codes erreur
Réalisé:
On envoi ENQ Réponse ACK ok du TPE
On envoi (STX+DATA+ETX+LRC). et le sagem nous répond 79 et affiche "Fonction impossible"
Merci
Salutations, PY OGER 06 86 42 22 91 |
| |
| |
| | | |
|
| | |
| |
Posté le 25 février 2010 - 12:11 |
Bonjour Francoise
Si tu as avancé sur ton projet peut-être peux tu m'aider, merci Voila mon PB
Nous devons intégrer dans notre logiciel de Magasin (www.isctuto.eu) la liaison série ou USB avec le TPE pour l'envoi du montant.
Nous avons fait des tests sur les Sagem, mais cela ne marche pas, erreur 79 à la transmission des datas (STX+DATA+ETX+LRC). Sagem semble être out et ne sait pas.
Aurais tu une idée (DLL) et un document sur les codes erreur
Réalisé:
On envoi ENQ Réponse ACK ok du TPE
On envoi (STX+DATA+ETX+LRC). et le sagem nous répond 79 et affiche "Fonction impossible"
Merci
Salutations, PY OGER 06 86 42 22 91 |
| |
| |
| | | |
|
| | |
| |
Posté le 25 février 2010 - 12:43 |
Bonjour,
Merci de m'envoyer la doc si tu peux Voila mon PB si tu as une idee
Nous devons intégrer dans notre logiciel de Magasin (www.isctuto.eu) la liaison série ou USB avec le TPE pour l'envoi du montant.
Nous avons fait des tests sur les Sagem, mais cela ne marche pas, erreur 79 à la transmission des datas (STX+DATA+ETX+LRC). Sagem semble être out et ne sait pas.
Auriez-vous une idée (DLL) et un document sur les codes erreur
Réalisé:
On envoi ENQ Réponse ACK ok du TPE
On envoi (STX+DATA+ETX+LRC). et le sagem nous répond 79 et affiche "Fonction impossible"
Merci
Salutations, PY OGER 06 86 42 22 91 |
| |
| |
| | | |
|
| | |
| |
Posté le 25 mai 2010 - 13:25 |
Bonjour,
Je suis également intéressé par votre documentation sur le protocole concert. Ça serait très sympa si vous pouvez me l'envoyer par mail.
Merci d'avance,
Salutations
contact@glinfo.fr |
| |
| |
| | | |
|
| | |
| |
Posté le 25 mai 2010 - 20:06 |
Bonjour,
Je suis également intéressé par votre documentation sur le protocole concert. Pourriez vous me la faire parvenir par mail. Dans l'attente de vous lire.
Salutations
rvincent@club-internet.fr |
| |
| |
| | | |
|
| | |
| |
Posté le 26 mai 2010 - 00:45 |
Je suis aussi interressé par votre documentation sur le protocole CONCERT.
Merci d'avance.
thierry@ispro.fr |
| |
| |
| | | |
|
| | |
| |
Posté le 26 septembre 2010 - 00:57 |
Bonsoir peux tu m'nvoyer la dll ou l'activex pour les tpe wyngx |
| |
| |
| | | |
|
| | |
| |
Posté le 27 septembre 2010 - 16:57 |
Bonjour,
POURQUOI NE PAS SIMPLEMENT METTRE CE DOCUMENT DANS LE DEPOT EN EN LIGNE?
C'est le quatrième lien en début de la page web du forum
Marc |
| |
| |
| | | |
|
| | |
| |
Posté le 27 septembre 2010 - 19:05 |
extrait http://www.wdforge.org/modules/newbb/viewtopic.php… merci à toto pour le code
par contre, je recherche le schema de cablage serie-tpe merci
Procedure ProcDialogueCarte(ParamMontant)
ii,jj,LRC est un entier Données 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)
NumSerie est un entier=1
sFerme(NumSerie)
SI sOuvre(NumSerie, 2000, 2000) ALORS
sFixeParamètre(NumSerie, 9600, 0, 8, 1) SINON Erreur("Erreur d'ouverture du port série "+NumSerie+" pour l'e terminal bancaire") RETOUR FIN
SI sDansFileEntrée(NumSerie) > 0 ALORS Reponse=sLit(NumSerie,sDansFileEntrée(NumSerie)) FIN
Données="01"+NumériqueVersChaîne(MontantCentime,"08d")+ETX
LRC=0 POUR ii = 1 A Taille(Données) LRC=OUExclusifBinaire (LRC,Asc(Données[[ii]])) FIN Données=STX+Données+Caract(LRC)
SI PAS sEcrit(NumSerie,ENQ) ALORS Erreur("Impossible d'envoyer l'ENQ") sFerme(NumSerie) Ferme FIN
SI PAS sEcrit(NumSerie,Données) ALORS Erreur("Impossible d'envoyer les données au terminal") sFerme(NumSerie) Ferme FIN
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) |
| |
| |
| | | |
|
| | |
| |
Posté le 19 octobre 2010 - 20:07 |
Je viens de terminer un dialogue entre Windev et un TPE Comme j'ai perdu beaucoup de temps à trouver les bonnes informations, je vous fais profiter de cette expérience pour vous éviter de perdre le votre.
1) Connectique = câble USB entre un PC (sous Vista) et un TPE SAGEM EFT930S. Il faut installer le driver SAGEM pour que ce port USB soit vu comme un port COMx.
2) paramétrer le TPE pour qu'il accepte de répondre au PC. Sur le TPE : Touche F TELIUM MANAGER Initialisation Paramètres Connexion Caisse Active (choix entre Active et Inactive) Liaison série : USB (choix entre COM0 et USB)
3)(facultatif) obtenir documentation sur le protocole CONCERT auprès de votre fournisseur de TPE pour essayer de comprendre le dialogue. NB: j'ai trouvé des différences entre la théorie de la doc et la réalité de fonctionnement de mon TPE.
4) voici un code qui fonctionne :
Procedure TPE_Cnx(p_Mnt,p_MRG="0",p_TYP="0",p_Niveau=0)
TraceFin()
sENQ est une chaîne=Caract(5) sACK est une chaîne=Caract(6) sNAK est une chaîne=Caract(15) sSTX est une chaîne=Caract(2) sETX est une chaîne=Caract(3) sEOT est une chaîne=Caract(4)
sReponse est une chaîne
sFerme(gnTPEPort) SI sOuvre(gnTPEPort, gnTPETailBuffEntr,gnTPETailBuffSort)=Vrai ALORS
sFixeParamètre(gnTPEPort,gnTPETauxTrf,gnTPEParite,gnTPENbBitsData,gnTPENbBitsStop)
SINON Erreur("LA CONNEXION AVEC LE TPE EST IMPOSSIBLE","sur le port série "+gnTPEPort) RENVOYER(Faux) FIN
SI sDansFileEntrée(gnTPEPort) > 0 ALORS sReponse=sLit(gnTPEPort,sDansFileEntrée(gnTPEPort)) FIN
sECR est une chaîne="01" sMNT est une chaîne=NumériqueVersChaîne(Arrondi(p_Mnt*100),"08d") sIND est une chaîne="1" sMRG est une chaîne=p_MRG
sTYP est une chaîne=p_TYP sDEV est une chaîne="978" sPRIV est une chaîne=" "
sMessage est une chaîne=sECR+sMNT+sIND+sMRG+sTYP+sDEV+sETX
nLRC est un entier=0 i est un entier POUR i = 1 _A_ Taille(sMessage) nLRC=OUExclusifBinaire(nLRC,Asc(sMessage[[i]])) FIN
sMessage=sSTX+sMessage+Caract(nLRC)
Trace("Demande ouverture session avec le TPE") SI PAS sEcrit(gnTPEPort,sENQ) ALORS Erreur("Impossible d'ouvrir une session avec le TPE") sFerme(gnTPEPort) RENVOYER(Faux) FIN
Multitâche(50) sReponse=sLit(gnTPEPort,sDansFileEntrée(gnTPEPort)) SI Position(sReponse,sACK,1)>0 ALORS
Trace("TPE: Ouverture de session acceptée") SINON SI Position(sReponse,sNAK,1)>0 ALORS Trace("Réponse TPE=NAK :"+sReponse) SINON Trace("Réponse TPE-->"+sReponse) FIN Erreur("TPE: Ouverture de session REFUSEE") sFerme(gnTPEPort) RENVOYER(Faux) FIN
Trace("Envoi données au TPE") SI PAS sEcrit(gnTPEPort,sMessage) ALORS Erreur("Impossible d'envoyer les Données au TPE") sFerme(gnTPEPort) RENVOYER(Faux) FIN
Multitâche(50) sReponse=sLit(gnTPEPort,sDansFileEntrée(gnTPEPort)) SI Position(sReponse,sACK,1)>0 ALORS
Trace("TPE: Données reçues") SINON SI Position(sReponse,sNAK,1)>0 ALORS Trace("Réponse TPE=NAK:"+sReponse) SINON Trace("Réponse TPE-->"+sReponse) FIN Erreur("Données refusées par le TPE") sFerme(gnTPEPort) RENVOYER(Faux) FIN
Trace("Attente réponse du TPE") SI PAS sEcrit(gnTPEPort,sEOT) ALORS Erreur("Impossible d'envoyer la demande de réponse au TPE") sFerme(gnTPEPort) RENVOYER(Faux) FIN
SI p_Niveau>0 ALORS
nbrep est un entier = 0 BOUCLE nbrep=nbrep+1 Multitâche(100) sReponse=sLit(gnTPEPort,sDansFileEntrée(gnTPEPort))
SI Position(sReponse,sACK,1)>0 ALORS Trace(nbrep+"Réponse TPE=ACK :"+sReponse) SI Position(sReponse,sNAK,1)>0 ALORS Trace(nbrep+"Réponse TPE=NAK :"+sReponse)
SI Position(sReponse,sENQ,1)>0 ALORS
Trace("TPE: Envoi réponse")
SI PAS sEcrit(gnTPEPort,sACK) ALORS Erreur("Impossible de recevoir la réponse du TPE") sFerme(gnTPEPort) RENVOYER(Faux) FIN SINON SI Position(sReponse,sSTX,1)>0 ALORS
Trace("TPE: REPONSE: Caisse="+sReponse[[2 A 3]]+" Stat="+sReponse[[4 A 4]]+" Mnt="+sReponse[[5 A 12]]+" Mode="+sReponse[[13 A 13]]) SI sReponse[[4 A 4]]="0" ALORS Trace("TPE: Transaction acceptée") SINON Trace("TPE: Transaction REFUSEE") FIN
SI PAS sEcrit(gnTPEPort,sACK) ALORS Erreur("Impossible de valider la réponse du TPE") sFerme(gnTPEPort) RENVOYER(Faux) FIN FIN SI Position(sReponse,sEOT,1)>0 ALORS
Trace("TPE: Fin de session") SORTIR FIN
FIN FIN
FIN
sFerme(gnTPEPort)
TraceFin() RENVOYER(Vrai)
Si vous améliorez ce code, n'hésitez pas à m'en faire part. Bon dev. |
| |
| |
| | | |
|
| | |
| |
Posté le 10 décembre 2010 - 14:25 |
J'ai suivi à la lettre la procédure écrite par Philippe MAUGIN mais mon tpe refuse de répondre dans la phase de dialogue avec le tpe. J'envoie une demande d'ouverture de session (ENQ) au tpe. La demande est partie sans erreur. Par contre j'attends la réponse ACK ou NAK du tpe, il n'y a ni ACK ni NACK. Il y a rien du tout. Qu'est ce qui peut faire que le TPE ne réponde pas ? Merci de votre aide. Txoovlis |
| |
| |
| | | |
|
| | |
| |
Posté le 05 janvier 2011 - 14:23 |
Bonjour,
Je suis également en train de travailler sur le racordement d'un tpe sagem à un système de caisse. Où puis-je me procurer le driver USB qui simule un port COM. Par avance merci.
Séb. |
| |
| |
| | | |
|
| | |
| |
Posté le 05 janvier 2011 - 15:37 |
| |
| |
| | | |
|
| | |
| |
Posté le 10 janvier 2011 - 00:42 |
Bonsoir,
Merci pour votre réponse, mais je ne le trouve pas. Je n'ai pas pu l'obtenir par le fournisseur, car l'appareil est loué auprès d'une banque. Vous serez t-il possible de me le transmettre sur le mail ci dessous. Par avance merci de votre aide. choucas05@free.fr |
| |
| |
| | | |
|
| | |
| |
Posté le 30 mai 2011 - 18:46 |
Salut philippe, saurais - tu où l'on peut trouver le pilote usb pour le tpe? j'ai chercher en vain et je n'ai rien trouvé! Merci |
| |
| |
| | | |
|
| | |
| |
Posté le 30 mai 2011 - 19:43 |
| |
| |
| | | |
|
| | |
| |
Posté le 31 mai 2011 - 13:00 |
Si quelqu'un a réussi à trouver le pilote, n'hésitez pas à me l'envoyer. @: durjeau.thomas@hotmail.fr
Merci |
| |
| |
| | | |
|
| | |
| |
Posté le 12 août 2011 - 08:56 |
Bonjour,
Aurais tu un example de message STX + ECR + MNT + IND + MRG + TYPE + DEV + PRIV [+ DELAI + AUTO] + ETX + LRC
en hexadecimal (je crois) avec le lrc pour que je puisse vérifier si je n'ai pas un pb de checksumm ou autre chose car mon TPS m'indique a chaque fois fontion impossible....
Merci beaucoup par avance |
| |
| |
| | | |
|
| | |
| |
Posté le 12 août 2011 - 10:34 |
Non, je n'ai pas d'autre exemple que le code affiché précédement. Désolé ... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 message |
|
Posté le 29 août 2011 - 13:17 |
Bonjour
Merci pour ce moreceau de code
quelles sont les valeurs à utiliser pour :
gnTPETailBuffEntr est un entier gnTPETailBuffSort est un entier |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 22 messages |
|
Posté le 03 avril 2012 - 11:54 |
bonjour,
je teste ton programme mais la liaison ne veux vraiement pas se faire.
j'ai un appareil ict250 que je racorde avec un série/rj6.
pourrais tu m'aider stp? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 22 messages |
|
Posté le 04 avril 2012 - 15:59 |
Bonjour,
J'ai un soucis avec un terminal ICT250. Je lui envoi le ENQ mais je n'ai aucun ACK en retour... Mon câble est bon car je recois un NAK (ascii 21). on dirait que ma tpe ne veut pas communiquer avec mon logiciel. Serait tu m'aider? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 22 messages |
|
Posté le 04 avril 2012 - 16:11 |
J'ai exactement le meme probleme, que faire?
Txoovlis wrote in news message <b94f77abbb2424637917a548ed58470c@news.pcsoft>:
J'ai suivi à la lettre la procédure écrite par Philippe MAUGIN mais mon tpe refuse de répondre dans la phase de dialogue avec le tpe. J'envoie une demande d'ouverture de session (ENQ) au tpe. La demande est partie sans erreur. Par contre j'attends la réponse ACK ou NAK du tpe, il n'y a ni ACK ni NACK. Il y a rien du tout. Qu'est ce qui peut faire que le TPE ne réponde pas ? Merci de votre aide. Txoovlis |
| |
| |
| | | |
|
| | |
| |
Posté le 04 avril 2012 - 16:58 |
Bonjour, Devant le trou noir sans fond et aucune aide trouvée, j'ai abandonné. Désolé de ne pas pouvoir t'aider. Cdlt Txooblis |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 22 messages |
|
Posté le 04 avril 2012 - 17:18 |
Tout ce que je voulais pas lire lol. Juste une question, tu utilisais quoi comme câble?
Merci de ta réponse en tout cas. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 22 messages |
|
Posté le 05 avril 2012 - 11:58 |
Tout ce que je voulais pas lire lol. Juste une question, tu utilisais quoi comme câble? et quel type de tpe?? Merci de ta réponse en tout cas.
txoovlis a écrit dans le message de news <14ab10f5cd56c1695e115e1601d6a813@news.pcsoft> :
Bonjour, Devant le trou noir sans fond et aucune aide trouvée, j'ai abandonné. Désolé de ne pas pouvoir t'aider. Cdlt Txooblis |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 22 messages |
|
Posté le 05 avril 2012 - 12:21 |
Tout ce que je voulais pas lire lol. Juste une question, tu utilisais quoi comme câble? et quel type de tpe?? Merci de ta réponse en tout cas.
txoovlis a écrit dans le message de news <14ab10f5cd56c1695e115e1601d6a813@news.pcsoft> :
Bonjour, Devant le trou noir sans fond et aucune aide trouvée, j'ai abandonné. Désolé de ne pas pouvoir t'aider. Cdlt Txooblis |
| |
| |
| | | |
|
| | |
| |
Posté le 12 mars 2013 - 23:37 |
bravo pour cette source c'est le protocole 'concert' et il marche parfaitement |
| |
| |
| | | |
|
| | |
| |
Posté le 20 mars 2013 - 15:40 |
Bonjour,
J'ai utilisé votre code source mais je me trouve confrontée à un problème lors de la réponse du TPE dans la phase d'attente d'accord de la banque. Mon TPE me renvoit bien ENQ, j'envoie ACK, mais ensuite je suis censée recevoir un texte contenant la réponse de la banque et ce que je reçois est complètement incohérent : ‚0±000000±00±9·¸²00±00300±5 ou ‚0±000000±00±9·¸²0±·00²00±3 ...
Avez-vous déjà rencontré ce phénomène ?
Merci pour votre aide.
Cordialement,
Delphine PIN |
| |
| |
| | | |
|
| | |
| |
Posté le 25 avril 2013 - 11:07 |
Salut tout le monde
J'ai trouvé cette page sur Google. Je ne développe pas sur le même langage, mais la problématique semble être exactement la même.
Je suis en train de me battre avec un TPE ingenico ICT250. Et j'ai quelques soucis.
1/ Le premier souci est la configuration de ce TPE : visiblement les codes postés sur Internet font part d'une configuration différente de celle indiquée par le constructeur.
Ingénico dit : 9600 , 7 bits , partity even, , start 1 , end 1 , flow control → rien
C'est bien cela ?
2 / Le deuxième souci est que je n'arrive pas a communiquer correctement avec ce TPE. Quand je lui envoie 05H , il me répond bien 06H mais en même temps il affiche « opération impossible » , se réinitialise, et refuse ensuite de communiquer. Il faut débrancher et rebrancher le câble USB pour qu'il recommence a répondre (mais de manière identique, avec le reset visible sur l’écran).
3/ Enfin, dans la doc sur le protocole Concert, il y a un scénario d'échange d'informations entre la caisse et le TPE. Et suite a la chaîne hexadécimale, il y a écris LRC.
02 30 31 30 30 30 30 35 36 30 30 31 31 30 39 37 38 20 20 20 20 20 20 20 20 20 20 03 LRC
Afin de pouvoir valider mon mode de calcul., qu'elle est la valeur de ce LRC dans cette chaîne d'exemple ?
Je vous remercie beaucoup de votre aide, car la je suis un peu bloqué. |
| |
| |
| | | |
|
| | |
| |
Posté le 17 juin 2014 - 17:08 |
Rives a écrit :
Bonjour, j'essaye moi aussi de programmer la liaison très difficile de trouver une doc sur le protocole concert j ai réussi a en trouver une si cela vous intéresse laisser moi votre mail pour vous la transmettre
Cordialement, |
| |
| |
| | | |
|
| | |
| |
Posté le 17 juin 2014 - 17:10 |
Bonjour,
Je serais TRES interessé par cette documentation.
D'avance Merci. |
| |
| |
| | | |
|
| | |
| |
Posté le 25 juin 2014 - 17:47 |
Je suis ennuyé avec une connexion TPE via Citix : Pb aléatoires ... Pb Time out ???
Merci pour la documentation.
Michel |
| |
| |
| | | |
|
| | |
| |
Posté le 25 juin 2014 - 18:05 |
Bonjour, Je rencontre également des Pb de connexion et traitement TPE via Citrix.
Merci de me transmettre votre documentation.
Michel |
| |
| |
| | | |
|
| | |
| |
Posté le 25 août 2014 - 11:41 |
Rives a écrit :
Bonjour, j'essaye moi aussi de programmer la liaison très difficile de trouver une doc sur le protocole concert j ai réussi a en trouver une si cela vous intéresse laisser moi votre mail pour vous la transmettre
Cordialement, |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 messages |
|
Posté le 03 octobre 2014 - 10:13 |
Bonjour,
Si l'un d'entre vous pouvez me faire passer la doc, je serais un homme heureux
Merci
Cordialement, |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 21 octobre 2014 - 13:21 |
Pour ma part, j'ai beau faire j'ai toujours le message "FONCTION IMPOSSIBLE" et aucun retour de l'ICT250
Suis en port série.
-- Concepteur du logiciel Gesticlean |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 22 octobre 2014 - 16:48 |
Enfin réussi avec un ict250 le mode opératoire fourni est totalement obsolète au niveau du protocole (document en date du 11/08/2011 en provenance de ingenico... grrrr)
Voici un code qui fonctionne
// Résumé : <indiquez ici ce que fait la procédure> // Syntaxe : //[ <Résultat> = ] Paiement ( [<ValAPayer> est numérique]) // // Paramètres : // ValAPayer (numérique - valeur par défaut=0) : <indiquez ici le rôle de ValAPayer> // Valeur de retour : // booléen : // Aucune // // Exemple : // Indiquez ici un exemple d'utilisation. // PROCEDURE Paiement(ValAPayer est un numérique=0) // chaine contenant la valeur à transmettre sEnvoi est une chaîne // constitution de la chaine // N° de caisse 2 car > id poste sEnvoi=NumériqueVersChaîne(ini_poste,"02d") // Montant 8 car sans les virgules complété à 0 sEnvoi+=NumériqueVersChaîne(Arrondi(ValAPayer,2)*100,"08d") // IND 1 car > 1 sEnvoi+="1" // mode 1 car > 1 sEnvoi+="1" // Type 1 car > 0 pour achat > 1 pour remboursement SI ValAPayer<0 ALORS sEnvoi+="1" SINON sEnvoi+="0" FIN // dev 3 car > 978 pour euro sEnvoi+="978" // priv 10 car à 0 sEnvoi+=Complète("",10,"0")
bValRetour est un booléen=Faux ChaineLRC est un entier j est un entier TailleAsc est un entier=Taille(sEnvoi) nNBEssai est un entier=0 ucCaratere est un entier sEnvoiParam est une chaîne
sMessageAttente est une chaîne=ChargeParam("T_MessageAttenteCb","Attente de réponse du tpv") sMessageEnvoi est une chaîne=ChargeParam("T_MessageEnvoiCb","Transaction en cours") sMessageValide est une chaîne=ChargeParam("T_MessageValideCb","Transaction valide") sMessageEchec est une chaîne=ChargeParam("T_MessageEchecCb","Transaction échouée") sMessageTempo est une chaîne=ChargeParam("T_MessageTempoCb","..................") // a voir en fonction des premiers tests nTempo est un entier = ChargeParamètre("TempoCB",10) nTempoMessage est un entier nTTempo est un entier=ChargeParamètre("TempoCBBoucle",10)
A_STX est une chaîne=Caract(2) A_ETX est une chaîne=Caract(3) A_EOT est une chaîne=Caract(4) A_ENQ est une chaîne=Caract(5) A_ACK est une chaîne=Caract(6) sA_NAK est une chaîne=Caract(15)
TraceDébut(trFichier,ini_repertoire+"\tracecb"+DateSys()+".txt")
// Ouverture de COM1 nPORT_cb est un entier = ouvre_port_param(Val(ini_cb_port),i_tpv_baud,i_tpv_parite,i_tpv_bit,i_tpv_stop,i_tpv_dtr,i_tpv_rts,i_tpv_Xon,i_tpv_Bufe,i_tpv_Bufs,i_tpv_Tap) SI nPORT_cb ALORS //Calcul du LRC ChaineLRC=0 POUR j =1 A TailleAsc ucCaratere = Asc(Milieu(sEnvoi,j,1)) ChaineLRC=OUExclusifBinaire(ChaineLRC,ucCaratere) FIN ChaineLRC=OUExclusifBinaire(ChaineLRC,3) RetChaine est une chaîne="" // Vide le port Serie SI sDansFileEntrée(1) >0 ALORS RetChaine=sLit(ini_cb_port,sDansFileEntrée(ini_cb_port)) FIN //Construction Trame sEnvoiParam=A_STX sEnvoiParam+=sEnvoi sEnvoiParam+=A_ETX sEnvoiParam+=Caract(ChaineLRC) //Envoi Trame sEcrit(nPORT_cb,A_ENQ+sEnvoiParam) Trace(sEnvoiParam) ToastAffiche(sMessageEnvoi,toastCourt,cvHaut,chCentre,iVertFoncé) // attente de l'accusé de réception nTempoMessage=0 BOUCLE Multitâche(nTTempo) SI ToucheEnfoncée(teEchap) ALORS SI OuiNon(ChargeParam("T_IntrerruptionDuTraitement","Interruption du traitement")) ALORS bValRetour=Faux GOTO fintraitement FIN FIN nTempoMessage++ SI nTempoMessage=nTempo ToastAffiche(sMessageTempo,toastCourt,cvHaut,chCentre,iBleuFoncé) nTempoMessage=0 FIN RetChaine=sLit(nPORT_cb,sDansFileEntrée(nPORT_cb)) A FAIRE TANTQUE RetChaine="" //Réponse > si présence d'un ack alors on continue SI Position(RetChaine,A_ACK,1)>0 ALORS //Attente Réponse TPE nTempoMessage=0 DebutBoucle: SI sDansFileEntrée(1) >0 ALORS RetChaine=sLit(ini_cb_port,sDansFileEntrée(ini_cb_port)) FIN // première boucle de lecture > on attends un message du terminal BOUCLE Multitâche(nTTempo) SI ToucheEnfoncée(teEchap) ALORS SI OuiNon(ChargeParam("T_IntrerruptionDuTraitement","Interruption du traitement")) ALORS bValRetour=Faux GOTO fintraitement FIN FIN nTempoMessage++ SI nTempoMessage=nTempo ToastAffiche(sMessageTempo,toastCourt,cvHaut,chCentre,iBleuFoncé) nTempoMessage=0 FIN RetChaine=sLit(nPORT_cb,sDansFileEntrée(nPORT_cb)) A FAIRE TANTQUE RetChaine="" // nous avons reçu un message // premier cas c'est un enq cela signifie que le terminal veut nous parler il faut lui transmettre un ack et reprendre l'écoute SI RetChaine[[1]]=A_ENQ ALORS //le terminal veut nous envoyer un message il faut ack et attendre un retour Trace("TPV réception ENQ : début dialogue") sEnvoiParam=A_ACK sEcrit(nPORT_cb,sEnvoiParam) GOTO DebutBoucle // reprise de la boucle de lecture FIN //Réponse OK SI RetChaine[[5]]="0" ALORS //Fin de Transmission sEnvoiParam=A_EOT sEcrit(nPORT_cb,sEnvoiParam) Trace("Ok") bValRetour=Vrai ToastAffiche(sMessageValide,toastCourt,cvMilieu,chCentre,iVertFoncé) SINON //Fin de Transmission sEnvoiParam=A_EOT sEcrit(nPORT_cb,sEnvoiParam) Trace("KO") bValRetour=Faux ToastAffiche(sMessageEchec,toastLong,cvMilieu,chCentre,iRougeFoncé) FIN SINON Trace("NO REPONSE") bValRetour=Faux ToastAffiche(sMessageEchec,toastLong,cvMilieu,chCentre,iRougeFoncé) FIN SINON Trace("NO CONNECTION") Erreur("Erreur d'ouverture de COM1") bValRetour=Faux ToastAffiche(sMessageEchec,toastLong,cvMilieu,chCentre,iRougeFoncé) FIN
fintraitement:
Trace("FIN") //Fermeture du port sFerme(nPORT_cb)
RENVOYER bValRetour
-- Concepteur du logiciel Gesticlean |
| |
| |
| | | |
|
| | |
| |
Posté le 12 novembre 2014 - 15:41 |
Bonjour a tous,
Pas que je veuille faire ma pub ici (je ne développe pas sous WinDev), mais j'ai développé un KIT pour ce protocole. Il comprend : - 1 DLL classique - 1 ActiveX pour VB, ou Internet Explorer - 1 Plug'in pour FireFox
Il permet d'envoyer le montant sans attendre la réponse du terminal ou d'attendre la réponse de ce dernier.
voici un lien ou vous pourrez télécharger une demo
http://www.deventik.com/download.htm |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 12 novembre 2014 - 16:12 |
Bon à savoir.
En attendant voici la dernière version de notre code permettant un dialogue opérationnel
// Résumé : <indiquez ici ce que fait la procédure> // Syntaxe : //[ <Résultat> = ] Paiement ( [<ValAPayer> est numérique]) // // Paramètres : // ValAPayer (numérique - valeur par défaut=0) : <indiquez ici le rôle de ValAPayer> // Valeur de retour : // booléen : // Aucune // // Exemple : // Indiquez ici un exemple d'utilisation. // PROCEDURE Paiement(ValAPayer est un numérique=0) // chaine contenant la valeur à transmettre sEnvoi est une chaîne // constitution de la chaine // N° de caisse 2 car > id poste sEnvoi=NumériqueVersChaîne(ini_poste,"02d") // Montant 8 car sans les virgules complété à 0 sEnvoi+=NumériqueVersChaîne(Arrondi(ValAPayer,2)*100,"08d") // IND 1 car > 1 sEnvoi+="1" // mode 1 car > 1 sEnvoi+="1" // Type 1 car > 0 pour achat > 1 pour remboursement SI ValAPayer<0 ALORS sEnvoi+="1" SINON sEnvoi+="0" FIN // dev 3 car > 978 pour euro sEnvoi+="978" // priv 10 car à 0 sEnvoi+=Complète("",10,"0")
bValRetour est un booléen=Faux ChaineLRC est un entier j est un entier TailleAsc est un entier=Taille(sEnvoi) nNBEssai est un entier=0 ucCaratere est un entier sEnvoiParam est une chaîne
sMessageAttente est une chaîne=ChargeParam("T_MessageAttenteCb","Attente de réponse du tpv") sMessageEnvoi est une chaîne=ChargeParam("T_MessageEnvoiCb","Transaction en cours") sMessageValide est une chaîne=ChargeParam("T_MessageValideCb","Transaction valide") sMessageEchec est une chaîne=ChargeParam("T_MessageEchecCb","Transaction échouée") sMessageTempo est une chaîne=ChargeParam("T_MessageTempoCb","..................") // a voir en fonction des premiers tests nTempo est un entier = ChargeParamètre("TempoCB",10) nTempoMessage est un entier nTTempo est un entier=ChargeParamètre("TempoCBBoucle",10) nBoucleMax est un entier = ChargeParamètre("NbIterationsAttenteMax",1200) // 300 par minute i est un entier
A_STX est une chaîne=Caract(2) A_ETX est une chaîne=Caract(3) A_EOT est une chaîne=Caract(4) A_ENQ est une chaîne=Caract(5) A_ACK est une chaîne=Caract(6) sA_NAK est une chaîne=Caract(15)
TraceDébut(trFichier,ini_repertoire+"\tracecb"+DateSys()+".txt")
// Ouverture de COM1 nPORT_cb est un entier = ouvre_port_param(Val(ini_cb_port),i_tpv_baud,i_tpv_parite,i_tpv_bit,i_tpv_stop,i_tpv_dtr,i_tpv_rts,i_tpv_Xon,i_tpv_Bufe,i_tpv_Bufs,i_tpv_Tap) SI nPORT_cb ALORS //Calcul du LRC ChaineLRC=0 POUR j =1 A TailleAsc ucCaratere = Asc(Milieu(sEnvoi,j,1)) ChaineLRC=OUExclusifBinaire(ChaineLRC,ucCaratere) FIN ChaineLRC=OUExclusifBinaire(ChaineLRC,3) RetChaine est une chaîne="" // Vide le port Serie SI sDansFileEntrée(1) >0 ALORS RetChaine=sLit(ini_cb_port,sDansFileEntrée(ini_cb_port)) FIN //Construction Trame sEnvoiParam=A_STX sEnvoiParam+=sEnvoi sEnvoiParam+=A_ETX sEnvoiParam+=Caract(ChaineLRC) //Envoi Trame sEcrit(nPORT_cb,A_ENQ+sEnvoiParam) Trace(sEnvoiParam) ToastAffiche(sMessageEnvoi,toastCourt,cvHaut,chCentre,iVertFoncé) // attente de l'accusé de réception // cette boucle peut être interompue automatiquement si rtien ne se passe avant un laps de temps paramétrable // terminal pas prêt // client non décidé et terminal tactile sans clavier nTempoMessage=0 BOUCLE Multitâche(nTTempo) SI ToucheEnfoncée(teEchap) ALORS SI OuiNon(ChargeParam("T_IntrerruptionDuTraitement","Interruption du traitement")) ALORS bValRetour=Faux GOTO fintraitement FIN FIN i++ nTempoMessage++ SI nTempoMessage=nTempo ToastAffiche(sMessageTempo,toastCourt,cvHaut,chCentre,iBleuFoncé) nTempoMessage=0 FIN RetChaine=sLit(nPORT_cb,sDansFileEntrée(nPORT_cb)) //si i>nBoucleMax alors sortir A FAIRE TANTQUE RetChaine="" i=1 Trace("Réponse 1> "+RetChaine) //Réponse > si présence d'un ack alors on continue SI Position(RetChaine,A_ACK,1)>0 ALORS //Attente Réponse TPE nTempoMessage=0 DebutBoucle: SI sDansFileEntrée(1) >0 ALORS RetChaine=sLit(ini_cb_port,sDansFileEntrée(ini_cb_port)) FIN // première boucle de lecture > on attends un message du terminal BOUCLE Multitâche(nTTempo) SI ToucheEnfoncée(teEchap) ALORS SI OuiNon(ChargeParam("T_IntrerruptionDuTraitement","Interruption du traitement")) ALORS bValRetour=Faux GOTO fintraitement FIN FIN i++ //trace(i,nBoucleMax) nTempoMessage++ SI nTempoMessage=nTempo ToastAffiche(sMessageTempo,toastCourt,cvHaut,chCentre,iBleuFoncé) nTempoMessage=0 FIN SI i>nBoucleMax ALORS SORTIR RetChaine=sLit(nPORT_cb,sDansFileEntrée(nPORT_cb)) A FAIRE TANTQUE RetChaine="" Trace("Réponse2 > "+RetChaine) // nous avons reçu un message // premier cas c'est un enq cela signifie que le terminal veut nous parler il faut lui transmettre un ack et reprendre l'écoute SI RetChaine[[1]]=A_ENQ ALORS //le terminal veut nous envoyer un message il faut ack et attendre un retour Trace("TPV réception ENQ : début dialogue") sEnvoiParam=A_ACK sEcrit(nPORT_cb,sEnvoiParam) Trace("Relance boucle 1") GOTO DebutBoucle // reprise de la boucle de lecture FIN // on nettoye la valeur retournée pour ne prendre que les éléments présents après le stx RetChaine=ExtraitChaîne(RetChaine,2,A_STX) //Réponse OK SI RetChaine[[3]]="0" ALORS //Fin de Transmission sEnvoiParam=A_EOT sEcrit(nPORT_cb,sEnvoiParam) Trace("Ok") bValRetour=Vrai ToastAffiche(sMessageValide,toastCourt,cvMilieu,chCentre,iVertFoncé) SINON //Fin de Transmission sEnvoiParam=A_EOT sEcrit(nPORT_cb,sEnvoiParam) Trace("KO") bValRetour=Faux ToastAffiche(sMessageEchec,toastLong,cvMilieu,chCentre,iRougeFoncé) FIN SINON Trace("NO REPONSE") bValRetour=Faux ToastAffiche(sMessageEchec,toastLong,cvMilieu,chCentre,iRougeFoncé) FIN SINON Trace("NO CONNECTION") Erreur("Erreur d'ouverture de COM1") bValRetour=Faux ToastAffiche(sMessageEchec,toastLong,cvMilieu,chCentre,iRougeFoncé) FIN
fintraitement:
Trace("FIN") //Fermeture du port sFerme(nPORT_cb) // il faut traiter le fait que l'appareil peut être tomber en panne donc si le retour est négatif on pose la question du forçage éventuel du paiement SI bValRetour=Faux ALORS SI Ouvre(question,ChargeParamT("T_QuestionErreurCB","Le paiement via le TPE à échoué, Forçage du paiement en CB malgré tout ?"),ChargeParam("T_Forcage","Forçage"),ChargeParam("T_Annulation","Annulation")) ALORS bValRetour=Vrai FIN FIN RENVOYER bValRetour
-- Concepteur du logiciel Gesticlean |
| |
| |
| | | |
|
| | |
| |
Posté le 06 février 2015 - 10:31 |
Bonjour, j'ai vraiment besoin d'une doc sur le protocole concert, je développe en C# une liaison, j'arrive même pas envoyer le ENQ car j'ai fonction impossible.
Merci pour votre aide |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 06 février 2015 - 16:37 |
| |
| |
| | | |
|
| | |
| |
Posté le 13 juillet 2015 - 10:00 |
Merci pour ce lien très utiles. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 298 messages Popularité : +20 (72 votes) |
|
Posté le 25 février 2016 - 12:50 |
| |
| |
| | | |
|
| | |
| |
Posté le 26 février 2016 - 14:58 |
OGER a écrit :
Bonjour David
voila mon pb si tu peux m'aider
Nous devons intégrer dans notre logiciel de Magasin la liaison série ou USB avec le TPE pour l'envoi du montant. Nous avons fait des tests sur les Sagem, mais cela ne marche pas, erreur 79 à la transmission des datas (STX+DATA+ETX+LRC). Sagem semble être out et ne sait pas.
Aurais tu une idée (DLL) et un document sur les codes erreur
Réalisé:
On envoi ENQ Réponse ACK ok du TPE
On envoi (STX+DATA+ETX+LRC). et le sagem nous répond 79 et affiche "Fonction impossible"
Merci
Salutations, PY OGER 06 86 42 22 91
Bonjour,
Avez-vous pu trouver une solution car nous avons essayé tous les codes possibles et rien ne fonctionne, nous avons également fonction impossible sur le tpe dès le début.
Merci
Marlène |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 24 messages |
|
Posté le 04 mars 2016 - 11:00 |
Bonjour,
J'aurai dû lire ce poste avant de me lancer dans l'affaire, j'aurais gagné du temps. Merci à ceux qui ont partagé leur code.
Malèle, voici quelques pistes.
As tu testé ton câble de connexion et ton TPE avec une caisse en place ?
As tu bien programmé ton port com : 1 start, 7bits de données, parité paire, 1 stop , half duplex.
Vérifie aussi que tes délais d'attente de remplissage des buffer sont suffisants. (le temps d'émission d'un EOT peut aller jusqu'à 700ms d'après la doc Ingénico).
Le LRC ne concerne que la trame d'envoi des données, et n'inclut pas le STX
-- ---------------- www.florys.com Développement de solutions de fidélisation client |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 298 messages Popularité : +20 (72 votes) |
|
Posté le 04 mars 2016 - 12:16 |
| |
| |
| | | |
|
| | |
| |
Posté le 12 mai 2016 - 13:45 |
Bonjour,
Je tiens à remercier les différentes intervenants sur ce sujet, particulièrement ceux qui ont partagés leur code source. Merci à vous.
Lilian |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 298 messages Popularité : +20 (72 votes) |
|
Posté le 12 mai 2016 - 20:50 |
| |
| |
| | | |
|
| | |
| |
Posté le 09 septembre 2016 - 10:02 |
Bonjour Merci pour le Code TPE à Philippe MAUGIN ! Cela marche super bien.
Vous m'avez fait économise des jour de DEV et recherche |
| |
| |
| | | |
|
| | |
| |
Posté le 04 octobre 2016 - 12:26 |
Bonjour,
Je programme actuellement l'envoi vers un tpe ingenico eft930b, seulement malgré tous mes essais cela ne fonctionne pas. Aussi je souhaitais savoir si vous aviez bien un cable RS232 vers un COM. De plus, je n'ai pas de driver, et ne sais pas s'il le faut vraiement et où le trouver, je n'ai que ce cable et l'alimentation électrique est-ce que cela peut suffir pour les tests. Pouvez-vous m'apporter des précisions à ce sujet. Merci pour votre aide. |
| |
| |
| | | |
|
| | |
| |
Posté le 04 janvier 2017 - 11:09 |
Bonjour,
Pouvez vous me faire parvenir la doc sur le protocole Concert.
Merci d'avance.
Cordialement,
y.auderset@hotmail.fr |
| |
| |
| | | |
|
| | |
| |
Posté le 02 mai 2017 - 18:07 |
Bonjour,
Je développe en vb.net et j'ai le même problème que certains d'entre vous : j'envoie au TPE une requète ENQ, il me renvoie bien ACK mais en même temps le terminal m'affiche 'fonction impossible'.
Je m'arrache les cheveux depuis 2 semaines, je n'arrive pas à trouver la solution.
Ceux parmi vous qui ont eu ce problème, avez-vous pu le résoudre ? Est-ce un problème de configuration du port série ?
Je vous remercie d'avance !!!!!
Cordialement |
| |
| |
| | | |
|
| | |
| |
Posté le 04 mai 2017 - 10:59 |
Bonjour,
J'ai fianlement résolu mon problème. Au cas où d'autres personnes le rencontrent, voici ma solution :
En fait, Le TPE récupérait bien mon ENQ, mais m'affichait fonction impossible parce que je n'envoyait pas assez tôt la requète suivante qaund je mettais un point d'arret, et sans point d'arret, le calcul du checksum n'était pas bon.
Voici mon code en VB.NET :
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click Try With SerialPort1 .PortName = "COM5" .Handshake = IO.Ports.Handshake.XOnXOff .BaudRate = 9600 .DataBits = 7 .Parity = IO.Ports.Parity.Even .StopBits = IO.Ports.StopBits.One .ReadTimeout = 1000000 .Encoding = Encoding.ASCII .Open() End With
Catch ex As Exception MsgBox(ex.Message) End Try
Etat = 1 SerialPort1.Write(Chr(5))
End Sub
Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Dim Buffer(SerialPort1.BytesToRead - 1) As Byte SerialPort1.Read(Buffer, 0, SerialPort1.BytesToRead) If SerialPort1.Encoding.GetString(Buffer) = Chr(vbACK) Then If Etat = 1 Then Dim checksum As Integer = 0 Dim St_MontantCent As String = CInt(Montant * 100).ToString.PadLeft(8, "0")
'Dans la partie "constante : 1 indique que le champ REP sera dans la réponse du TPE, et le 0 indique un traitmeent de débit Dim ChaineEvoi As String = Nocaisse & St_MontantCent & "1" & If(PaiementCheque, "C", "1") & "0978 " & Chr(3) Dim byteChecksum As Byte Dim strChar As Char For Each strChar In ChaineEvoi byteChecksum = byteChecksum Xor Convert.ToByte(strChar) Next ChaineEvoi = Chr(2) & ChaineEvoi & Convert.ToChar(byteChecksum) SerialPort1.Write(ChaineEvoi) Etat = 2 Else Dim tot As String = "" End If Else If SerialPort1.Encoding.GetString(Buffer) = Chr(15) Then
End If End If SerialPort1.Close() End Sub
Bon courage ! |
| |
| |
| | | |
|
| | |
| |
Posté le 11 mai 2017 - 10:34 |
Rives a écrit :
Bonjour, j'essaye moi aussi de programmer la liaison très difficile de trouver une doc sur le protocole concert j ai réussi a en trouver une si cela vous intéresse laisser moi votre mail pour vous la transmettre
Cordialement,
avec plaisir : idlog@wanadoo.fr et merci d'avance |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 26 messages Popularité : +1 (1 vote) |
|
Posté le 12 mai 2017 - 11:53 |
| |
| |
| | | |
|
| | |
| |
Posté le 15 novembre 2017 - 12:25 |
Pascal BERARDOZZI wrote:
Bon à savoir.
En attendant voici la dernière version de notre code permettant un dialogue opérationnel
// Résumé : <indiquez ici ce que fait la procédure> // Syntaxe : //[ <Résultat> = ] Paiement ( [<ValAPayer> est numérique]) // // Paramètres : // ValAPayer (numérique - valeur par défaut=0) : <indiquez ici le rôle de ValAPayer> // Valeur de retour : // booléen : // Aucune // // Exemple : // Indiquez ici un exemple d'utilisation. // PROCEDURE Paiement(ValAPayer est un numérique=0) // chaine contenant la valeur à transmettre sEnvoi est une chaîne // constitution de la chaine // N° de caisse 2 car > id poste sEnvoi=NumériqueVersChaîne(ini_poste,"02d") // Montant 8 car sans les virgules complété à 0 sEnvoi+=NumériqueVersChaîne(Arrondi(ValAPayer,2)*100,"08d") // IND 1 car > 1 sEnvoi+="1" // mode 1 car > 1 sEnvoi+="1" // Type 1 car > 0 pour achat > 1 pour remboursement SI ValAPayer<0 ALORS sEnvoi+="1" SINON sEnvoi+="0" FIN // dev 3 car > 978 pour euro sEnvoi+="978" // priv 10 car à 0 sEnvoi+=Complète("",10,"0")
bValRetour est un booléen=Faux ChaineLRC est un entier j est un entier TailleAsc est un entier=Taille(sEnvoi) nNBEssai est un entier=0 ucCaratere est un entier sEnvoiParam est une chaîne
sMessageAttente est une chaîne=ChargeParam("T_MessageAttenteCb","Attente de réponse du tpv") sMessageEnvoi est une chaîne=ChargeParam("T_MessageEnvoiCb","Transaction en cours") sMessageValide est une chaîne=ChargeParam("T_MessageValideCb","Transaction valide") sMessageEchec est une chaîne=ChargeParam("T_MessageEchecCb","Transaction échouée") sMessageTempo est une chaîne=ChargeParam("T_MessageTempoCb","..................") // a voir en fonction des premiers tests nTempo est un entier = ChargeParamètre("TempoCB",10) nTempoMessage est un entier nTTempo est un entier=ChargeParamètre("TempoCBBoucle",10) nBoucleMax est un entier = ChargeParamètre("NbIterationsAttenteMax",1200) // 300 par minute i est un entier
A_STX est une chaîne=Caract(2) A_ETX est une chaîne=Caract(3) A_EOT est une chaîne=Caract(4) A_ENQ est une chaîne=Caract(5) A_ACK est une chaîne=Caract(6) sA_NAK est une chaîne=Caract(15)
TraceDébut(trFichier,ini_repertoire+"\tracecb"+DateSys()+".txt")
// Ouverture de COM1 nPORT_cb est un entier = ouvre_port_param(Val(ini_cb_port),i_tpv_baud,i_tpv_parite,i_tpv_bit,i_tpv_stop,i_tpv_dtr,i_tpv_rts,i_tpv_Xon,i_tpv_Bufe,i_tpv_Bufs,i_tpv_Tap) SI nPORT_cb ALORS //Calcul du LRC ChaineLRC=0 POUR j =1 A TailleAsc ucCaratere = Asc(Milieu(sEnvoi,j,1)) ChaineLRC=OUExclusifBinaire(ChaineLRC,ucCaratere) FIN ChaineLRC=OUExclusifBinaire(ChaineLRC,3) RetChaine est une chaîne="" // Vide le port Serie SI sDansFileEntrée(1) >0 ALORS RetChaine=sLit(ini_cb_port,sDansFileEntrée(ini_cb_port)) FIN //Construction Trame sEnvoiParam=A_STX sEnvoiParam+=sEnvoi sEnvoiParam+=A_ETX sEnvoiParam+=Caract(ChaineLRC) //Envoi Trame sEcrit(nPORT_cb,A_ENQ+sEnvoiParam) Trace(sEnvoiParam) ToastAffiche(sMessageEnvoi,toastCourt,cvHaut,chCentre,iVertFoncé) // attente de l'accusé de réception // cette boucle peut être interompue automatiquement si rtien ne se passe avant un laps de temps paramétrable // terminal pas prêt // client non décidé et terminal tactile sans clavier nTempoMessage=0 BOUCLE Multitâche(nTTempo) SI ToucheEnfoncée(teEchap) ALORS SI OuiNon(ChargeParam("T_IntrerruptionDuTraitement","Interruption du traitement")) ALORS bValRetour=Faux GOTO fintraitement FIN FIN i++ nTempoMessage++ SI nTempoMessage=nTempo ToastAffiche(sMessageTempo,toastCourt,cvHaut,chCentre,iBleuFoncé) nTempoMessage=0 FIN RetChaine=sLit(nPORT_cb,sDansFileEntrée(nPORT_cb)) //si i>nBoucleMax alors sortir A FAIRE TANTQUE RetChaine="" i=1 Trace("Réponse 1> "+RetChaine) //Réponse > si présence d'un ack alors on continue SI Position(RetChaine,A_ACK,1)>0 ALORS //Attente Réponse TPE nTempoMessage=0 DebutBoucle: SI sDansFileEntrée(1) >0 ALORS RetChaine=sLit(ini_cb_port,sDansFileEntrée(ini_cb_port)) FIN // première boucle de lecture > on attends un message du terminal BOUCLE Multitâche(nTTempo) SI ToucheEnfoncée(teEchap) ALORS SI OuiNon(ChargeParam("T_IntrerruptionDuTraitement","Interruption du traitement")) ALORS bValRetour=Faux GOTO fintraitement FIN FIN i++ //trace(i,nBoucleMax) nTempoMessage++ SI nTempoMessage=nTempo ToastAffiche(sMessageTempo,toastCourt,cvHaut,chCentre,iBleuFoncé) nTempoMessage=0 FIN SI i>nBoucleMax ALORS SORTIR RetChaine=sLit(nPORT_cb,sDansFileEntrée(nPORT_cb)) A FAIRE TANTQUE RetChaine="" Trace("Réponse2 > "+RetChaine) // nous avons reçu un message // premier cas c'est un enq cela signifie que le terminal veut nous parler il faut lui transmettre un ack et reprendre l'écoute SI RetChaine[[1]]=A_ENQ ALORS //le terminal veut nous envoyer un message il faut ack et attendre un retour Trace("TPV réception ENQ : début dialogue") sEnvoiParam=A_ACK sEcrit(nPORT_cb,sEnvoiParam) Trace("Relance boucle 1") GOTO DebutBoucle // reprise de la boucle de lecture FIN // on nettoye la valeur retournée pour ne prendre que les éléments présents après le stx RetChaine=ExtraitChaîne(RetChaine,2,A_STX) //Réponse OK SI RetChaine[[3]]="0" ALORS //Fin de Transmission sEnvoiParam=A_EOT sEcrit(nPORT_cb,sEnvoiParam) Trace("Ok") bValRetour=Vrai ToastAffiche(sMessageValide,toastCourt,cvMilieu,chCentre,iVertFoncé) SINON //Fin de Transmission sEnvoiParam=A_EOT sEcrit(nPORT_cb,sEnvoiParam) Trace("KO") bValRetour=Faux ToastAffiche(sMessageEchec,toastLong,cvMilieu,chCentre,iRougeFoncé) FIN SINON Trace("NO REPONSE") bValRetour=Faux ToastAffiche(sMessageEchec,toastLong,cvMilieu,chCentre,iRougeFoncé) FIN SINON Trace("NO CONNECTION") Erreur("Erreur d'ouverture de COM1") bValRetour=Faux ToastAffiche(sMessageEchec,toastLong,cvMilieu,chCentre,iRougeFoncé) FIN
fintraitement:
Trace("FIN") //Fermeture du port sFerme(nPORT_cb) // il faut traiter le fait que l'appareil peut être tomber en panne donc si le retour est négatif on pose la question du forçage éventuel du paiement SI bValRetour=Faux ALORS SI Ouvre(question,ChargeParamT("T_QuestionErreurCB","Le paiement via le TPE à échoué, Forçage du paiement en CB malgré tout ?"),ChargeParam("T_Forcage","Forçage"),ChargeParam("T_Annulation","Annulation")) ALORS bValRetour=Vrai FIN FIN RENVOYER bValRetour
-- Concepteur du logiciel Gesticlean
Bonjour,
Pourriez-vous rajouter le code des procédures : ChargeParam Ouvre_Port_Param
Merci par avance. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 15 novembre 2017 - 16:09 |
Quels sont les paramètre à indiquer pour : i_tpv_baud i_tpv_parite i_tpv_bit i_tpv_stop i_tpv_dtr i_tpv_rts i_tpv_Xon i_tpv_Bufe i_tpv_Bufs i_tpv_Tap
Je suppose que ouvre_port_param utilise souvre et sfixeparametre ...
Merci de votre aide. |
| |
| |
| | | |
|
| | |
| |
Posté le 15 novembre 2017 - 17:16 |
Bonjour,
pour ma part j'ai simplifié le code, nos clients utilisent cet interface depuis 6 mois sans problème :
Procedure Paiement_ICT220_250(ValAPayer)
sEnvoi est une chaîne
sEnvoi = NumériqueVersChaîne(Val(NumCaisseOpen),"02d")
sEnvoi += NumériqueVersChaîne(Arrondi(ValAPayer,2)*100,"08d")
sEnvoi += "1"
sEnvoi += "1"
SI ValAPayer < 0 ALORS sEnvoi += "1" SINON sEnvoi += "0" FIN
sEnvoi += "978"
sEnvoi += Complete("",10,"0")
bValRetour est un booléen=Faux ChaineLRC est un entier j est un entier TailleAsc est un entier=Taille(sEnvoi) nNBEssai est un entier=0 ucCaratere est un entier sEnvoiParam est une chaîne
sMessageAttente est une chaîne = "Initialisation TPE" LIB_ETAT = sMessageAttente LIB_ETAT..CouleurFond = RVB(255, 215, 215)
sMessageEnvoi est une chaîne = "Transaction en cours" sMessageValide est une chaîne = "Transaction valide" sMessageEchec est une chaîne = "Transaction échouée" sMessageTempo est une chaîne = ".................."
nTempo est un entier = 10 nTempoMessage est un entier
nTTempo est un entier = Val(INILit("TPE", "TEMPO", "10", ComplèteRep(RepFichier) + "WDCaisse.ini")) nBoucleMax est un entier = 600 i est un entier
A_STX est une chaîne = Caract(2) A_ETX est une chaîne = Caract(3) A_EOT est une chaîne = Caract(4) A_ENQ est une chaîne = Caract(5) A_ACK est une chaîne = Caract(6) sA_NAK est une chaîne= Caract(15)
RetChaine est une chaîne="" nPORT_cb est un entier = nTPE_Port
SI PAS sOuvre(nPORT_cb, 9600, 9600, sTimeoutDéfaut, Faux) ALORS Erreur("Connexion au TPE impossible !", "Veuillez vérifier s'il est sous tension et bien connecté à la caisse.", "", ErreurInfo(errMessage)) LIB_ETAT = "" bValRetour=Faux GOTO FinTraitement FIN SI nPORT_cb > 0 ALORS SI gbFinForcée ALORS bValRetour = Vrai GOTO FinTraitement FIN ChaineLRC=0 POUR j =1 A TailleAsc ucCaratere = Asc(Milieu(sEnvoi,j,1)) ChaineLRC=OUExclusifBinaire(ChaineLRC,ucCaratere) FIN ChaineLRC=OUExclusifBinaire(ChaineLRC,3) SI sDansFileEntrée(1) >0 ALORS RetChaine=sLit(nPORT_cb, sDansFileEntrée(nPORT_cb)) FIN sEnvoiParam=A_STX sEnvoiParam+=sEnvoi sEnvoiParam+=A_ETX sEnvoiParam+=Caract(ChaineLRC) sEcrit(nPORT_cb,A_ENQ+sEnvoiParam) LIB_ETAT = "Attente paiement client" LIB_ETAT..CouleurFond = RVB(252, 224, 91) SI gbFinForcée ALORS bValRetour = Vrai GOTO FinTraitement FIN nTempoMessage=0 BOUCLE Multitâche(nTTempo) SI ToucheEnfoncée(teEchap) ALORS SI OuiNon("Interruption du traitement ?") = Oui ALORS bValRetour=Faux GOTO FinTraitement FIN FIN SI gbFinForcée ALORS bValRetour = Vrai GOTO FinTraitement FIN i++ nTempoMessage++ RetChaine=sLit(nPORT_cb,sDansFileEntrée(nPORT_cb)) SI i>nBoucleMax ALORS SORTIR A FAIRE TANTQUE RetChaine="" i=1 SI Position(RetChaine,A_ACK,1)>0 ALORS nTempoMessage=0 DebutBoucle: SI sDansFileEntrée(1) >0 ALORS RetChaine=sLit(nPORT_cb, sDansFileEntrée(nPORT_cb)) FIN BOUCLE Multitâche(nTTempo) SI ToucheEnfoncée(teEchap) ALORS SI OuiNon("Interruption du traitement ?") = Oui ALORS bValRetour=Faux GOTO FinTraitement FIN FIN SI gbFinForcée ALORS bValRetour = Vrai GOTO FinTraitement FIN i++ nTempoMessage++ SI i>nBoucleMax ALORS SORTIR RetChaine=sLit(nPORT_cb,sDansFileEntrée(nPORT_cb)) A FAIRE TANTQUE RetChaine="" SI RetChaine[[1]]=A_ENQ ALORS sEnvoiParam=A_ACK sEcrit(nPORT_cb,sEnvoiParam) GOTO DebutBoucle FIN RetChaine=ExtraitChaîne(RetChaine,2,A_STX) SI RetChaine[[3]]="0" ALORS sEnvoiParam=A_EOT sEcrit(nPORT_cb,sEnvoiParam) LIB_ETAT = "Paiement client effectué !" LIB_ETAT..CouleurFond = VertFoncé bValRetour=Vrai SINON sEnvoiParam=A_EOT sEcrit(nPORT_cb,sEnvoiParam) LIB_ETAT = "Echec paiement client !" LIB_ETAT..CouleurFond = RougeClair bValRetour=Faux FIN SINON bValRetour=Faux LIB_ETAT = "Echec paiement client !" LIB_ETAT..CouleurFond = RougeClair FIN SINON LIB_ETAT = "" LIB_ETAT..CouleurFond = Transparent Erreur("Erreur d'ouverture de COM" + nPORT_cb) bValRetour=Faux FIN
FinTraitement:
sFerme(nPORT_cb) SI bValRetour=Faux ALORS SI Dialogue("Le paiement via le TPE a échoué !") = 1 bValRetour=Vrai FIN SINON FIN RENVOYER bValRetour
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 19 messages |
|
Posté le 17 novembre 2017 - 17:36 |
Je vais tester les deux procédures Mais dans celle proposé par J. Fernandez,je ne comprends pas gbFinForcée ... Quelle valeur a-t-il et quelle est son utilité exact ?
Merci du retour. |
| |
| |
| | | |
|
| | |
| |
Posté le 20 novembre 2017 - 08:19 |
Bonjour,
j'ai oublié de supprimer le code utilisant cette variable, cette variable et son code n'ont plus lieu d'être n'en tenez pas compte |
| |
| |
| | | |
|
| | |
| |
Posté le 22 novembre 2017 - 11:52 |
Bonjour à tous,
Je recherche un ninja de la monétique pour integrer une superbe boite ( psp ) . Si quelqu'un est intéressé !!!
Merci |
| |
| |
| | | |
|
| | |
| |
Posté le 11 janvier 2018 - 13:52 |
Bonjour à tous,
J'ai implémenté et testé plusieurs procédures fournies sur le forum dans mon logiciel (celle de Eric et J. FERNANDEZ), mais je suis confronté au même problème...
En postulat, le sfixeparamètre place bien le paramétrage du port COM comme requis par le protocole CONCERT.
Le montant est bien envoyé au TPE. Si la transaction est annulée ou refusée, j'obtiens bien le code de retour du TPE.
En revanche, je n'arrive pas à récupérer l'acceptation du TPE.
Auriez-vous quelques suggestions, voire solutions ?
Merci par avance, Thierry |
| |
| |
| | | |
|
| | |
| |
Posté le 14 janvier 2018 - 17:23 |
Bonjour,
Je rencontre le même problème et ne trouve pas de solution. Cordialement, Eric |
| |
| |
| | | |
|
| | |
| |
Posté le 15 janvier 2018 - 11:45 |
Désolé pour le retard dans ma réponse. Un peu surchargé avec la mise au norme des logiciels d'encaissement.
Voici le code de ouvre_port_param
PROCEDURE ouvre_port_param(Ppport,Pbaud,Pparite,Pbit,Pstop,PDTR,PRTS,Pxon,Pbufe,Pbufs,Ptap) resultat est un booléen sFerme(Ppport) resultat=sOuvre ( Ppport , Pbufe , Pbufs , Ptap ) SI resultat ALORS resultat=sFixeParamètre ( Ppport , Val(Pbaud) , Val(Pparite) , Val(Pbit) , Val(Pstop) , PDTR , PRTS , Pxon ) SI resultat=Faux ALORS //info("erreur sur les paramètres!") FIN SINON Ppport=0 FIN
RENVOYER Ppport |
| |
| |
| | | |
|
| | |
| |
Posté le 18 avril 2018 - 11:53 |
Posté le 25 mai 2010 - 13:25 Bonjour,
Je suis également intéressé par votre documentation sur le protocole concert. Ça serait très sympa si vous pouvez me l'envoyer par mail.
Merci d'avance,
Salutations
data.object@yahoo.fr |
| |
| |
| | | |
|
| | |
| |
Posté le 06 juin 2018 - 10:51 |
Bonjour,
J'arrive bien à envoyer le montant mais le tpe ne me donne pas de réponse sur le paiement ou non par le client. Je reçois le ENQ puis j'envoie le ACK mais je n'ai aucun retour du tpe ict220. (j'ai testé les codes publiés sur le forum sans succès) Est ce quelqu'un a eu le même genre de problème ? Merci de votre aide. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 message |
|
Posté le 17 juillet 2018 - 14:24 |
Bonour à tous,
J'ai personnellement réussi à envoyer la transaction et à réceptionner la réponse mais ma question est la suivante : Comment annuler la transaction en cours ? Quel message envoyer ?
merci d'avance |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 messages |
|
Posté le 23 octobre 2018 - 08:50 |
Cancel request : AN Response : An
01 |
| |
| |
| | | |
|
| | |
| |
Posté le 28 novembre 2018 - 09:09 |
Bonjour,
Est ce que le fonctionnement est le même sur les TPE de la gamme Tetra comme le desk 5000 ?
Merci d'avance. |
| |
| |
| | | |
|
| | |
| |
Posté le 23 mai 2019 - 23:29 |
Bonjour Si tu as trouvé une doc sur le protocol concert, je suis preneur, car je n'ai pas encore trouvé Merci d'avance Michel |
| |
| |
| | | |
|
| | |
| |
Posté le 24 mai 2019 - 09:26 |
Voici le seul document que nous avons pu trouvé. Il date de 2011
https://drive.google.com/open…
Nos développements sont basés sur ce document et dans le fil de la discussion il y a des codes utilisables et fonctionnels |
| |
| |
| | | |
|
| | |
| |
Posté le 24 mai 2019 - 09:54 |
Bonjour,
Je suis également intéressé par votre documentation sur le protocole concert. Ça serait très sympa si vous pouvez me l'envoyer par mail.
Merci d'avance,
go24 at yopmail.com |
| |
| |
| | | |
|
| | |
| |
Posté le 25 mai 2019 - 08:21 |
Dans ma réponse précédente il y a un lien de téléchargement |
| |
| |
| | | |
|
| | |
| |
Posté le 29 octobre 2019 - 12:16 |
Bonjour, Je rejoins Franck pour sa question concernant les nouveaux modèles utilisant Telium TETRA (et CONCERT 3.1 si on en croit ce lien: https://www.ingenico.fr/media/avis-experts/ingenico-insights-11.html)
J'ai réussi a mettre en place une solution pour les TPE iCT 250 mais certains problèmes persistent: - Est-il possible de remplacer un montant déjà présent sur le TPE (ex: le client a tapé 5.00€ et le logiciel de caisse essaye d'envoyer 25.00€)
De plus quand on communique avec le MOVE 5000 un autre problème émerge: - Le TPE semble se mettre en veille après X temps sans utilisation et si notre logiciel de caisse essaye d'envoyer un montant à ce moment là le TPE se bloque et un redémarrage de celui-ci est nécessaire (cela prend 3 à 5 minutes, pas top pour le client)
Quelqu'un aurait-il rencontré les mêmes problèmes ? Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Posté le 16 novembre 2019 - 07:19 |
Bonjour, Christopher RICHARD est-ce-que vous pouvez partager la code pour ceci " J'ai réussi a mettre en place une solution pour les TPE iCT 250 mais certains problèmes persistent " svp.
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 491 messages Popularité : +24 (30 votes) |
|
Posté le 30 novembre 2019 - 13:26 |
Salut, je vais devoir m'attaquer aussi aux TPE, mais ils sont tous en reseau. comment communiquer avec tel ou tel? sachant qu'il y en a au moins 7.
merci d'avance
-- José |
| |
| |
| | | |
|
| | |
| |
Posté le 30 juillet 2020 - 07:44 |
Bonjour
Si il y'a des ames charitables qui ont développé le protocole concert 3.1, elles pourront surement répondre à mes questions. Nous avons la doc, cette doc parle du format des messages d'envoi et de reception avec les tag TLV. Le format n'est pas compliqué en lui même. Par contre la documentation ne parle plus du tout de la partie encapsulation avec STX...LRC ni du dialogue ACK, ENQ.... Qu'en est il ? C'est toujours le même principe ?
Nous n'avons pas encore développé de dialogue en réseau non plus ; je suppose que je vais utiliser les fonctions de dialogue socket que j'utilise deja sur mes imprimantes ticket en reseau. Mais comment fonctionne le dialogue ? On continue avec ACk, ENQ etc etc ou on a juste a faire un envoi et lire le contenu de la reception. |
| |
| |
| | | |
|
| | |
| |
Posté le 20 juin 2023 - 07:19 |
Bonjour,
@werewolf7160 (ou quelqu'un d'autre), as-tu trouvé la solution pour annuler la transaction en cours ?
Sur la doc du protocole je ne trouve aucune commande pour faire cette annulation... Exemple : -> Envoi du montant 10€ sur le TPE -> le client paye finalement en espèce => QUELLE COMMANDE ENVOYER POUR ANNULER L'ENVOI DES 10€
Merci |
| |
| |
| | | |
|
| | |
| |
Posté le 20 juin 2023 - 11:15 |
bonjour si l'envoi est effectif, pourquoi ne pas envoyer -10 € ? titou44 |
| |
| |
| | | |
|
| | |
| |
Posté le 20 juin 2023 - 14:51 |
@Titou44 : Je me suis peut être mal exprimé..
Je souhaite annuler le montant que je viens d'envoyer et qui est toujours affiché sur mon TPE. Le client n'a pas sa carte donc la transaction n'a pas été validée sur le TPE et ne le sera pas. Pour éviter d'avoir à annuler le montant en pressant le bouton rouge du TPE, je souhaiterais connaitre la commande qui me permet de faire une "initialisation" du TPE et annulation du dialogue en cours.
C'est la même problématique également de @Christopher Richard, qui souhaite remplacer le montant affiché sur le TPE.
Espérant être plus clair....
Merci |
| |
| |
| | | |
|
| | |
| |
Posté le 31 août 2023 - 14:51 |
Bonjour, j'essaye moi aussi de programmer la liaison très difficile de trouver une doc sur le protocole concert, je me permets donc de vous contacter, car il semble que vous l'ayez Pouvez-vous me le transmettre svp. D'avance merci pour votre aide.
Cordialement, |
| |
| |
| | | |
|
| | | | |
| | |
|