1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#define ip "62.39.109.164"
#define port "5757"
#define diff "001"
typedef struct
{
char version_tc[5];
char dateq_tc[14];
char type_tc[5];
char numquestion_tc[10];
char site_tc[7];
char rang_tc[2];
char cle_tc[8];
char identifiant_tc[10];
char montant_tc[10];
char devise_tc[3];
char reference_tc[250];
char porteur_tc[19];
char dateval_tc[4];
char cvv_tc[3];
char activite_tc[4];
char archivage_tc[12];
char numappel_tc[10];
char numtrans_tc[10];
char autorisation_tc[10];
char codereponse_tc[5];
char commentaire_tc[100];
char serveurip_tc[13];
char serveurport_tc[4];
char differe_tc[3];
char Reference_abonne_tc[250];
}trameppps;
/* d?claration de toutes les fonctions propres ? l'objet. Seule la fonction "appel_ppps()" sera utilis?e dans cet exemple */
extern char * code_ppps_abonne(char* psTrameToCode,int* piReturnCode);
extern int decode_ppps_abonne(char* psTrameToCode,trameppps * questrep_st);
extern int appel_ppps_abonne(trameppps* questrep_st);
/* ce programme va r?cup?rer les donn?es dynamiques en param?tre, remplir la structure et appeler la fonction appel_ppps()
pour afficher les donn?es retourn?es par Paybox sur la sortie standard */
int main(int argc, char *argv[])
{
/*cr?ation d'une structure nomm?e "structtrames" */
trameppps structtrames;
/* d?claration de diff?rentes variables */
int i,resultat;
char reponse[256];
// int taill_numappel,taill_numtrans,taill_auto;
if(argc!=8)
{
printf("erreur parametres(fonction,date 14,numquestion 10,montant 10,reference 250,porteur 19,dateval 4,cvv 3)\n");
return 0;
}
//questrep_st=(trameppps*)malloc(sizeof(trameppps));
// initialisation de la structure ? vide
memset(structtrames.version_tc,0,sizeof(structtrames));
//remplissage de la structure (tous les champs de la trame question)
strncpy(structtrames.version_tc,"00103",5);
strncpy(structtrames.dateq_tc,argv[1],14); // premier argument du programme : Date et heure
strncpy(structtrames.type_tc,"00003",5);
strncpy(structtrames.numquestion_tc,argv[2],10); // Second argument du programme : Num de question
strncpy(structtrames.site_tc,"1999888",7);
strncpy(structtrames.rang_tc,"92",2);
strncpy(structtrames.cle_tc,"LMFENRJB",8);
strncpy(structtrames.identifiant_tc,"",10);
strncpy(structtrames.montant_tc,argv[3],10); // troisi?me argument : Montant
strncpy(structtrames.devise_tc,"978",3);
strncpy(structtrames.reference_tc,argv[4],250); // Quatri?me argument : R?f?rence Commande
strncpy(structtrames.porteur_tc,argv[5],19); //Cinqui?me argument : Num de la carte
strncpy(structtrames.dateval_tc,argv[6],4); //Sixi?me argument : Date de fin de validit? de la carte
strncpy(structtrames.cvv_tc,argv[7],3); // Septi?me argument : Valeur du cryptogramme visuelle
strncpy(structtrames.activite_tc,"024",3);
strncpy(structtrames.archivage_tc,"boutiquetest",12);
strncpy(structtrames.numtrans_tc,"",10);
strncpy(structtrames.numappel_tc,"",10);
strncpy(structtrames.serveurip_tc,ip,13);//ip
strncpy(structtrames.serveurport_tc,port,4);//port
strncpy(structtrames.differe_tc,diff,4);
//c="00103&09122005181020&00003&0000000012&1999888&99&1999888I&1206548523&0000001250&978&bhfr4323&0000000000000123152&0206&023&024";
printf("l'adresse ip et le port a l'envoi:\n");
printf("Adresse ip:%-10.13s\n",structtrames.serveurip_tc);
printf("Le port est:%-10.4s\n",structtrames.serveurport_tc);
printf("Le differe_tc est :%-10.3s\n",structtrames.differe_tc);
// appel de la fonction "appel_ppps()" de l'objet payboxpppsclient.o
//printf("%s",code_ppps_abonne(c,0));
/*
printf("%s\n",questrep_st->montant_tc);
printf("%s\n",questrep_st->devise_tc);
printf("%s\n",questrep_st->reference_tc);
printf("%s\n",questrep_st->porteur_tc);
printf("%s\n",questrep_st->dateval_tc);
printf("%s\n",questrep_st->cvv_tc);
printf("%s\n",questrep_st->activite_tc);
printf("%s\n",questrep_st->archivage_tc);
printf("%s\n",questrep_st->numtrans_tc);
printf("%s\n",questrep_st->archivage_tc);
printf("%s\n",questrep_st->numtrans_tc);
printf("%s\n",questrep_st->numappel_tc);
printf("%s\n",questrep_st->serveurip_tc);//ip
printf("%s\n",questrep_st->serveurport_tc);//port
printf("%s\n",questrep_st->differe_tc); */
/*appel de la fonction appel_ppps */
resultat=appel_ppps_abonne(&structtrames);
// initialisation du tableau de caract?res reponse ? vide
memset(reponse,0,sizeof(reponse));
/* renvoi du r?sultat d'appel_ppps(),numquestion,numappel,numtrans,autorisation,codereponse,commentaire.
toutes ces donn?es sont s?par?es par des tirets */
sprintf(reponse,"%d-%-10.10s-%-10.10s-%-10.10s-%.*s-%-5.5s-%.*s\0",resultat,structtrames.numquestion_tc,structtrames.numappel_tc,structtrames.numtrans_tc,strlen(structtrames.autorisation_tc),structtrames.autorisation_tc,structtrames.codereponse_tc,strlen(structtrames.commentaire_tc),structtrames.commentaire_tc);
printf("%s\n",reponse);
return 1;
} |