⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 ISO 8583 with c++ for financial transaction standard
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		 sprintf( szFechaHoraYYMMDDHHMMSS, "%6.6s%6.6s", szTRANDAT, szTRANTIM );		 /* fecha de posting */		 tToday  = time( NULL ) ;		 tmToday = localtime( &tToday );     /*****************************************/     /*** Backup de fecha para 420-REVERSAL ***/     if( 420 != shT200_or_420 )     {	     tTodaySav  = tToday ;  		 tmTodaySav = tmToday;     }     else     {	     tToday  = tTodaySav ;  		 tmToday = tmTodaySav;     };     /*****************************************/     		 strftime( szFechaPosting, sizeof(szFechaPosting), "%m%d", tmToday );		 /* fecha de posting siguiente, NEXT a hoy, 24hs mas, en segundos */		 tToday  = time( NULL ) + (24 * 60 * 60);		 tmToday = localtime( &tToday );		 strftime( szFechaPostingNext, sizeof(szFechaPostingNext), "%m%d", tmToday );	 }	 else	 {		 /* fecha de prestacion */		 tToday  = time( NULL ) ;		 tmToday = localtime( &tToday );          /*****************************************/     /*** Backup de fecha para 420-REVERSAL ***/     if( 420 != shT200_or_420 )     {	     tTodaySav  = tToday ;  		 tmTodaySav = tmToday;     }     else     {	     tToday  = tTodaySav ;  		 tmToday = tmTodaySav;     };     /*****************************************/     		 strftime( szFechaActualYYYYMMDD, sizeof(szFechaActualYYYYMMDD),			 "%Y%m%d", tmToday );		 strftime( szFechaHoraYYMMDDHHMMSS, sizeof(szFechaHoraYYMMDDHHMMSS),			 "%y%m%d%H%M%S", tmToday );		 strftime( szFechaPosting, sizeof(szFechaPosting), "%m%d", tmToday );	 };	 /* iniciamos un numero random para cargar diversos tran-code */	 srand( tToday );	 nRandom = rand();	 /* campo 54 */	 memset( &fld54, ' ', sizeof(fld54));	 if(strncmp(szTranCode,"1B",2)==0)	 {		 strcpy(fld54.stTransferenciaCBU.chCBU, "0265999999999999999999");		 strcpy(fld54.stTransferenciaCBU.chFiller, "TRANSFERENCIA-X-CBU");	 }	 else	 {		 strcpy(fld54.stB24_0200_Def_Data.chAMT, "000000000999");		 fld54.stB24_0200_Def_Data.chTIPO_DEP = 'E';		 strcpy(fld54.stB24_0200_Def_Data.chINVOICES_QTY, "01");		 strcpy(fld54.stB24_0200_Def_Data.chPIN_1, "FFFF");		 strcpy(fld54.stB24_0200_Def_Data.chPIN_2, "FFFF");		 strcpy(fld54.stB24_0200_Def_Data.chFILLER, "----------");	 };	 /* campo 55 */	 memset( &fld55, ' ', sizeof(fld55));	 strncpy(fld55.stInterbancarias.chTrack2, szTrack2, strlen(szTrack2) );	 strncpy(fld55.stInterbancarias.chCA, "00", 2);	 if(szFromAcc)		 strncpy(fld55.stInterbancarias.stFrom_Acct.chAcct_num, szFromAcc, strlen(szFromAcc) );	 if(szToAcc)		 strncpy(fld55.stInterbancarias.stTo_Acct.chAcct_num  , szToAcc, strlen(szToAcc)  );	 fld55.stInterbancarias.filler[0] = 0x00;	 /* field 60 */	 strncpy(fld60.stATMTerm.chTermFIID, szFIID, 4);	 strncpy(fld60.stATMTerm.chTermLNet, szLNET, 4);	 strncpy(fld60.stATMTerm.chTermTimeOffset, "+003", 4);	 fld60.stATMTerm.chReserved[0]=0x00;	 /* field 127 */	 if(NULL == szTIP_EXCH_V)          szTIP_EXCH_V = "00002950";	 strncpy(fld127.stATM.stATM_Dl_Rqst.chCambio_C, szTIP_EXCH_V, 8);	 strncpy(fld127.stATM.stATM_Dl_Rqst.chCambio_V, szTIP_EXCH_V, 8);	 strncpy(fld127.stATM.stATM_Dl_Rqst.chCambio_1, szTIP_EXCH_V, 8);	 strncpy(fld127.stATM.stATM_Dl_Rqst.chCambio_2, szTIP_EXCH_V, 8);	 memset(fld127.stATM.stATM_Dl_Rqst.chFiller, '0', sizeof(fld127.stATM.stATM_Dl_Rqst.chFiller));   fld127.stATM.stATM_Dl_Resp_HISO.chFiller[26] = 0x00;	 /* formateo ISO */	 DPCINITMESSAGE();	 if(200 == shT200_or_420)		 DPCSETMSGTYPEID((LPBYTE)"0200");	 else if(420 == shT200_or_420)		 DPCSETMSGTYPEID((LPBYTE)"0420");	 else		 DPCSETMSGTYPEID((LPBYTE)"0220");	 DPCINSERTFIELD( 2, &(wLen = 19), (PBYTE)szCardNum, 19 );	 /* cargar diversos tran-code */	 DPCINSERTFIELD( 3, &(wLen = 6), (PBYTE)szTranCode, 6 );   /* AMMOUNT-1 */   if(strncmp(szTranCode,"21",2)==0)      DPCINSERTFIELD( 4, &(wLen = 12), (PBYTE)szAmmountDep, 12 );   else      DPCINSERTFIELD( 4, &(wLen = 12), (PBYTE)szAmmount, 12 );   /* AMMOUNT-2 : si es reverso, monto efectivamente reversado */   if( 420 != shT200_or_420 )	    DPCINSERTFIELD( 5, &(wLen = 12), (PBYTE)"000000000000", 12 );   else   {      /* Para reversos, en los pares hacer FULL y los impares hacer PARTIAL por $ 5.00 */  		if( (nCount % 2) == 0)        DPCINSERTFIELD( 5, &(wLen = 12), (PBYTE)"000000000000", 12 );      	  	else                   	          DPCINSERTFIELD( 5, &(wLen = 12), (PBYTE)"000000000500", 12 );      /* Motivo de reversa */  		if( (nCount % 2) == 0)  		  DPCINSERTFIELD( 39, &(wLen = 2), (PBYTE)"68", 2 ); /* TIME OUT */      else        DPCINSERTFIELD( 39, &(wLen = 2), (PBYTE)"32", 2 ); /* HARDWARE ERROR, PARTIAL REV */   };   /* AMMOUNT-3 siempre es CEROS */	 DPCINSERTFIELD( 6, &(wLen = 12), (PBYTE)"000000000000", 12 );	 DPCINSERTFIELD( 7, &(wLen = 10), (PBYTE)szFechaHoraYYMMDDHHMMSS+2, 10 ); // Excluido el ao, mmdd	 DPCINSERTFIELD( 10, &(wLen = 10), (PBYTE)szRateAmmnt, 8 );   if( 420 != shT200_or_420 )   {  	 sprintf(szSeqTran,"%06d", (nRandom % 999971) );     lRandomSav = nRandom ;   }   else     sprintf(szSeqTran,"%06d", (lRandomSav % 999971) );	 if(szSEQNUM)		DPCINSERTFIELD( 11, &(wLen = 6), (PBYTE)szSEQNUM+6 , 6 );  // trace-num cualquiera	 else		DPCINSERTFIELD( 11, &(wLen = 6), (PBYTE)szSeqTran, 6 );  // trace-num cualquiera	 DPCINSERTFIELD( 12, &(wLen = 6), (PBYTE)szFechaHoraYYMMDDHHMMSS+6, 6 ); // hhmmss	 DPCINSERTFIELD( 13, &(wLen = 4), (PBYTE)szFechaHoraYYMMDDHHMMSS+2, 4 ); // mmdd	 DPCINSERTFIELD( 15, &(wLen = 4), (PBYTE)szFechaHoraYYMMDDHHMMSS+2, 4 ); // mmdd	 /* POSTING , si es menor a 5000, es hoy sino maana */	 if(nCount < 5000)		DPCINSERTFIELD( 17, &(wLen = 4), (PBYTE)szFechaPosting    , 4 ); // mmdd	 else		DPCINSERTFIELD( 17, &(wLen = 4), (PBYTE)szFechaPostingNext, 4 ); // mmdd	 DPCINSERTFIELD( 19, &(wLen = 3), (PBYTE)szCountryCode, 3 );	 DPCINSERTFIELD( 24, &(wLen = 4), (PBYTE)szLNET, 4 );	 DPCINSERTFIELD( 32, &(wLen = 4), (PBYTE)szFIID, 4 );	 DPCINSERTFIELD( 35, &(wLen = 37), (PBYTE)szTrack2, 37 );	 DPCINSERTFIELD( 36, &(wLen = 30), (PBYTE)szTrack3, 30 );   /*********************************************************************************/   if( 420 != shT200_or_420 )   {  	 sprintf(szSeqTran,"%012d", (nRandom % 999971) );     lRandomSav = nRandom ;   }   else     sprintf(szSeqTran,"%012d", (lRandomSav % 999971) );   /*********************************************************************************/	 if(szSEQNUM)		DPCINSERTFIELD( 37, &(wLen = 12), (PBYTE)szSEQNUM , 12 );  // nro. de secuencia	 else		DPCINSERTFIELD( 37, &(wLen = 12), (PBYTE)szSeqTran, 12 );	 DPCINSERTFIELD( 41, &(wLen = 16), (PBYTE)szTermID, 16 );   /* descriptivo de reversos */   if( 420 == shT200_or_420 )   {		  strcpy(fld43.stCrdAccptNameLoc.chOwner,"BANCO SIMULADO HOST24  ");		  strcpy(fld43.stCrdAccptNameLoc.chCity,"BUENOS AIRES   ");		  strcpy(fld43.stCrdAccptNameLoc.chState,"BUE");		  strcpy(fld43.stCrdAccptNameLoc.chCountry,"AR");		  strcpy(fld43.stCrdAccptNameLoc.chFiller,"--------");      DPCINSERTFIELD( 43, &(wLen = strlen(fld43.chData)), (PBYTE)&fld43, strlen(fld43.chData) );	 };   	 DPCINSERTFIELD( 49, &(wLen = 3), (PBYTE)szCurrencyCode, 3 );	 DPCINSERTFIELD( 52, &(wLen = 16), (PBYTE)szPIN, 16 );	 DPCINSERTFIELD( 54, &(wLen = strlen(fld54.chData)), (PBYTE)&fld54, strlen(fld54.chData) );	 DPCINSERTFIELD( 55, &(wLen = strlen(fld55.chData)), (PBYTE)&fld55, strlen(fld55.chData) );	 DPCINSERTFIELD( 60, &(wLen = strlen(fld60.chData)), (PBYTE)&fld60, strlen(fld60.chData) );	 if( szFromAcc )		DPCINSERTFIELD( 102, &(wLen = 28), (PBYTE)szFromAcc, 28 );     if( szToAcc )		 DPCINSERTFIELD( 103, &(wLen = 28), (PBYTE)szToAcc, 28 );	 DPCINSERTFIELD( 127, &(wLen = strlen(fld127.chData)), (PBYTE)&fld127, strlen(fld127.chData) );	 return 0;};// Formatear mensaje ISO REVERSO siempre en base a un req. anterior BIEN COMPLETADOint format_rvsl_message(char chReversalForLate_or_generic){	WORD wLen = 0;	FIELD43	fld43;	CONST PCHAR	pTxt="?REVERSAL FOR LATE/UNSOL RESP?";	DPCSETMSGTYPEID((LPBYTE)"0420");	if('R' == chReversalForLate_or_generic) {		strcpy(fld43.stCrdAccptNameLoc.chOwner,"BANCO SIMULADO-HOST24  ");		strcpy(fld43.stCrdAccptNameLoc.chCity,"BUENOS AIRES   ");		strcpy(fld43.stCrdAccptNameLoc.chState,"BUE");		strcpy(fld43.stCrdAccptNameLoc.chCountry,"AR");		strcpy(fld43.stCrdAccptNameLoc.chFiller,"--------");	} else		strcpy(fld43.chData, pTxt);	return DPCINSERTFIELD( 43, &(wLen = strlen(fld43.chData)), (PBYTE)&fld43, strlen(fld43.chData) );};int execute_trx_test(short shT210_or_T420, short nCount){	// Valor de retorno de funcion	int iRetval = 0;	// Cuentas habilitadas para transaccionar  //                           ....:....1....:....2....:...	char *szAccSavings[3]   = { "0000820964                  ", // 28 de longitud , C.A. $              								"0000820988                  ",                              "0000820964                  "}; 	char *szAccCheckings[3] = { "0000300110                  ",	 // 28 de longitud , C.C. $              								"0000300134                  ",							              	"0000300110                  "}; 	char *szSavings   = szAccSavings[0];	char *szCheckings = szAccCheckings[0];	// Enviar todas las transacciones para N cuentas distintas cada vez	for(int i=1; i<= sizeof(szAccCheckings)/sizeof(szAccCheckings[0]); i++)	{		szSavings   = szAccSavings[i-1];		szCheckings = szAccCheckings[i-1];    ////////////////////////////////////////////////////////////////////////////////////		format_message(shT210_or_T420,5,"312000",szCheckings,NULL);	 // consulta cta.cte. $		iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */		format_message(shT210_or_T420,6,"311000",szSavings,NULL);   // consulta c.a. $		iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */        format_message(shT210_or_T420,1,"210010",NULL,szSavings); // deposito c.a. $		iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */        format_message(shT210_or_T420,1,"210020",NULL,szCheckings); // deposito c.c. $		iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */                 		format_message(shT210_or_T420,4,"011000",szSavings,NULL);	 // extraccion c.a. $		iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */    /* reverso simple */    format_message( 420 ,4,"011000",szSavings,NULL);	 // extraccion c.a. $    iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */    /* reverso doble */    format_message( 420 ,4,"011000",szSavings,NULL);	 // extraccion c.a. $    iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */    /* reverso triple */    format_message( 420 ,4+1,"011000",szSavings,NULL);	 // extraccion c.a. $    iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */		format_message(shT210_or_T420,6,"012000",szCheckings,NULL);	 // extraccion cta.cte. $		iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */    /* reverso simple */    format_message( 420 ,6,"012000",szCheckings,NULL);	 // extraccion cta.cte. $    iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */    /* reverso doble */    format_message( 420 ,6,"012000",szCheckings,NULL);	 // extraccion cta.cte. $    iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */    /* reverso triple */    format_message( 420 ,6+1,"012000",szCheckings,NULL);	 // extraccion cta.cte. $    iRetval = DPCSENDREQANDWAITRESP( is_true, _DPC_COMM_TIMEOUT_) ; /* N seg. timeout */	};/*end for */	return iRetval;}///////////////////////////////////////////////////////////////////////////////////////void VerifyPendingOSMessages( void ){}////////////////////////////////////////////////////////////////////////////int main(int argc, char *argv[]){	unsigned short shPort             = 0;	char	         szAddress[256]     = {0x00};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -