📄 main.cpp
字号:
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 + -