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

📄 testiso.cpp

📁 ISO 8583 implementation.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				// Cotizaciones campo 127, respuesta
				fprintf(fOutput,
					"#127-Micr-Data[%i]=[Aplic=%c][CambioC=%.*s][CambioV=%.*s]\n"
					"                   [Cambio1=%.*s][Cambio2=%.*s]\n",
					wFieldLength, 
					stSecRes8.stATM.stATM_Dl_Resp.chCamb_Aplic,
					8,stSecRes8.stATM.stATM_Dl_Resp.chCambio_C, 
					8,stSecRes8.stATM.stATM_Dl_Resp.chCambio_V, 
					8,stSecRes8.stATM.stATM_Dl_Resp.chCambio_1, 
					8,stSecRes8.stATM.stATM_Dl_Resp.chCambio_2		);
			
			}		
		else if(i == 126)
			{
			// Field #126, SecRsrvd7
			szFieldValue[0] = 0x00;
			memset((PBYTE)&stSecRes7, 0, sizeof stSecRes7);
			wFieldLength = sizeof stSecRes7;
			bResult = isoMsg.GetField( 126,
				                    &wFieldLength, 
					                (PBYTE)&stSecRes7,
									sizeof stSecRes7 );

			fprintf(fOutput,"#126-SecRsrv7[%i]=[%s]\n",
				    wFieldLength, stSecRes7.chData);
			

			}
		else if(i == 55)
			{
			// Field#55, AddDataPrvt1
			szFieldValue[0] = 0x00;
			memset((PBYTE)&stRsrvd1, 0, sizeof stRsrvd1);
			wFieldLength = sizeof stRsrvd1;
			bResult = isoMsg.GetField( 55, 
						            &wFieldLength, 
					                (PBYTE)&stRsrvd1, 
									sizeof(stRsrvd1));			
			

			if( strncmp(szTranCode,"39",2)==0 || 
				strncmp(szTranCode,"09",2)==0 ||
				strncmp(szTranCode,"19",2)==0 ||
				strncmp(szTranCode,"29",2)==0 ||
				strncmp(szTranCode,"40",2)==0 )
				fprintf(fOutput,
					"#055-XFER-BANK-DATA[%i]="
					"[Track2=%.*s][CA=%.*s]\n"					
					"  [From Account FIID-TYP-NUM=%.*s-%.*s-%.*s]\n"
					"  [To   Account FIID-TYP-NUM=%.*s-%.*s-%.*s]\n"
					"  [Libre disponibilidad=FromAcct='%c' ToAcct='%c']\n",
					wFieldLength, 
					40,stRsrvd1.stInterbancarias.chTrack2,
					2,stRsrvd1.stInterbancarias.chCA,
					4,stRsrvd1.stInterbancarias.stFrom_Acct.chFiid,
					2,stRsrvd1.stInterbancarias.stFrom_Acct.chTyp,
					19,stRsrvd1.stInterbancarias.stFrom_Acct.chAcct_num,
					4,stRsrvd1.stInterbancarias.stTo_Acct.chFiid,
					2,stRsrvd1.stInterbancarias.stTo_Acct.chTyp,
					19,stRsrvd1.stInterbancarias.stTo_Acct.chAcct_num,
					stRsrvd1.stInterbancarias.chFr_Acct_Typ,
					stRsrvd1.stInterbancarias.chTo_Acct_Typ
					); // arancel de usuario
			else
				bFields?fprintf(fOutput,"#055-PasData[%i]=[%*.*s]\n",	
					wFieldLength, sizeof stRsrvd1.chData, sizeof stRsrvd1.chData,
					(char*)stRsrvd1.chData):0;

			}
		else if(i == 54)
			{

			// Field#54
			szFieldValue[0] = 0x00;
			memset((PBYTE)&stAddAmts, 0, sizeof stAddAmts);
			wFieldLength = sizeof stAddAmts;
			bResult = isoMsg.GetField( 54,
						            &wFieldLength, 
					                (PBYTE)&stAddAmts, 
									sizeof(stAddAmts));
            if(isoMsg.IsATMTransferCBU()) // Transferencia x CBU
			    fprintf(fOutput,
				    "#054-B24-0210-CBU[%i]="
				    "[CBU=%-22.22s]\n",
				    wFieldLength, 
				    pstCBU->stTransferenciaCBU.chCBU ); // CBU
            else
			    fprintf(fOutput,
				    "#054-B24-0210-DEF-DATA[%i]="
				    "[Amt=%.*s]"
				    "[With_adv_avail=%.*s]"
				    "[Int_owe_austral=%.*s]\n"
				    "  [Cash_avail=%.*s]"
				    "[Min_payment=%.*s]"
				    "[Payment_dat=%.*s]"
				    "[Interest_rate=%.*s]\n"
				    "  [Owe_dollar=%.*s]"
				    "[Min_payment_dollar=%.*s]"
				    "[Purchase_dollar=%.*s]"
				    "[Cash_fee=%.*s]\n",
				    wFieldLength, 
				    12,stAddAmts.stB24_0210_Def_Data.chAMT,	 // 12 + reseved 108 bytes
				    2 ,stAddAmts.stB24_0210_Def_Data.chWITH_ADV_AVAIL,	// contador extracciones o adelantos
				    12,stAddAmts.stB24_0210_Def_Data.chINT_OWE_AUSTRAL, // intereses ganados o deuda anterior y LIBRE DISPONIBILIDAD
				    12,stAddAmts.stB24_0210_Def_Data.chCASH_AVAIL, // saldo disponible
				    12,stAddAmts.stB24_0210_Def_Data.chMIN_PAYMENT,
				    6 ,stAddAmts.stB24_0210_Def_Data.chPAYMENT_DAT,
				    6 ,stAddAmts.stB24_0210_Def_Data.chINTEREST_RATE,
				    10,stAddAmts.stB24_0210_Def_Data.chOWE_DOLAR, // deuda en dolares y ACUMULADOR DE EXTRACCIONES
				    10,stAddAmts.stB24_0210_Def_Data.chMIN_PAYMENT_DOLAR,
				    10,stAddAmts.stB24_0210_Def_Data.chPURCHASE_DOLAR,
				    8 ,stAddAmts.stB24_0210_Def_Data.chCASH_FEE); // arancel de usuario
			}
		else
			{
			// Field#i
			szFieldValue[0] = 0x00;
			wFieldLength = sizeof szFieldValue;
			bResult = isoMsg.GetField( i, 
						            &wFieldLength, 
					                szFieldValue, 
									sizeof(szFieldValue));

			// TranCode resguardado
			if(3==i)
			{
				strcpy(szTranCode,(char *)szFieldValue);			

				pszTranCodeDesc = "N/A"; 

				/***********************************************/
				/* CONVERT TO DECIMAL - DO NOT USE STD.LIB. */
				j = (szTranCode[0]-'0')*10 + (szTranCode[1]-'0');
				/***********************************************/
				switch ( j )
				{
				case   B24_OPCODE_WITHDRAWAL				  : 
					pszTranCodeDesc = "WITHDRAWAL"; break;
				case   B24_OPCODE_WITHDRAWAL_FASTCASH		  : 
					pszTranCodeDesc = "WITHDRAWAL_FASTCASH"; break;
				case   B24_OPCODE_WITHDRAWAL_FRGN_CURRENCY	  : 
					pszTranCodeDesc = "WITHDRAWAL_FRGN_CURRENCY / BUYING_W_ACCT_DEBIT_CANCEL"; 
					break;
				case   B24_OPCODE_DEPOSIT                 	  : 
					pszTranCodeDesc = "DEPOSIT"; break;
				case   B24_OPCODE_BALANCE_INQUIRY			  : 
					pszTranCodeDesc = "BALANCE_INQ"; break;
				case   B24_OPCODE_PIN_CHANGE     			  : 
					pszTranCodeDesc = "PIN_CHANGE"; break;
				case   B24_OPCODE_PAYMENT_W_DEBIT 			  : 
					pszTranCodeDesc = "PAYMENT_W_DEBIT"; break;
				case   B24_OPCODE_PAYMENT_W_STATEMENT		  : 
					pszTranCodeDesc = "PAYMENT_W_STATEMENT"; break;
				case   B24_OPCODE_PAYMENT_W_CASH 			  : 
					pszTranCodeDesc = "PAYMENT_W_CASH"; break;
				case   B24_OPCODE_TRANSFER				      : 
					pszTranCodeDesc = "TRANSFER"; break;
				case   B24_OPCODE_TRANSFER_FRGN_CURRENCY	  : 
					pszTranCodeDesc = "TRANSFER_FRGN_CURRENCY"; break;
				case   B24_OPCODE_TRANSFER_CBU                : 
					pszTranCodeDesc = "TRANSFER_CBU"; break;
				case   B24_OPCODE_TRANSFER_CBU_ACH            : 
					pszTranCodeDesc = "TRANSFER_CBU_ACH"; break;
				case   B24_OPCODE_BUYING_W_ACCT_DEBIT         : 
					pszTranCodeDesc = "BUYING_ACCT_DEBIT"; break;
				case   B24_OPCODE_BUYING_DEVOLUTION           : 
					pszTranCodeDesc = "BUYING_DEVOLUTION"; break;
				case   B24_OPCODE_BUYING_DEVOLUTION_CANCEL    : 
					pszTranCodeDesc = "BUYING_DEVOLUTION_CANC"; break;
				case   B24_OPCODE_BUYING_CASH_BACK            : 
					pszTranCodeDesc = "BUYING_CASHBACK"; break;
				case   B24_OPCODE_BUYING_CASH_BACK_CANCEL     : 
					pszTranCodeDesc = "BUYING_CASHBACK_CANC"; break;
				default: pszTranCodeDesc = "ERROR"; break;
				}
				/**************************************/

				bFields?fprintf(fOutput,"#%3.3i%s=[%s]-(%s)\n",
					i, szFieldDesc, szFieldValue, pszTranCodeDesc):0;

			}
			else
			{
				bFields?fprintf(fOutput,"#%3.3i%s=[%s]\n",
					i, szFieldDesc, szFieldValue):0;	
			}

			/*********************************************/

			
		};//switch

	};//for-i

    /////////////////////////////////////////////////////////////////////////
    // Falta campo 39 ?
    if(strncmp((char *)szMsgType,"0420",4)==0 && !isoMsg.IsValidField( 39 ) )
    {
        // Falta campo 39
	    fprintf(fOutput,"\n#Falta campo #39 : Lo correcto deberia ser :\n");	
		bResult = isoMsg.InsertField( 39, 
				            &(wFieldLength=2), 
			                (unsigned char *)"01", 
							wFieldLength=2 );
        isoMsg.GetHeader((PSTR)bBuffer, 32);
        isoMsg.GetBitmaps((PSTR)&bBuffer[16], (PSTR)&bBuffer[32]);
		bResult = isoMsg.GetField( 39, 
				            &(wFieldLength=2), 
			                szFieldValue, 
							sizeof(szFieldValue));
	    // Header [0..31]
	    //printf("\n#Header=[%-32.32s]\n", (PSTR)bBuffer);	
	    bFields?fprintf(fOutput,"\n#Header=[%-32.32s]\n", (PSTR)bBuffer):0;	
	    // Primary Bitmap [16..31]
	    //printf("#PrimaryBitmap=[%-16.16s]\n", (PSTR)&bBuffer[16]);	
	    bFields?fprintf(fOutput,"#PrimaryBitmap=[%-16.16s]\n", (PSTR)&bBuffer[16]):0;	
        strcpy( (PSTR)szFieldDesc, "-RespCode"); 
		bFields?fprintf(fOutput,"#%3.3i%s=[%s]\n",
				39, szFieldDesc, szFieldValue):0;	
    }
    /////////////////////////////////////////////////////////////////////////


	// Cerrar archivo de salida
	fclose( fOutput );
	fOutput = NULL;
	// Ok !
	return (0);		

	}

⌨️ 快捷键说明

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