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

📄 isoapp.cpp

📁 ISO 8583 with c++ for financial transaction standard
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}
EXPORT BOOL APPMSG::IsATMTransfer(void)			// Transferencia en cuentas relacionadas
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
		   &&		  
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( (memcmp((PBYTE)&chMsg[iOffset], "40", 2) == 0) 
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}

EXPORT BOOL APPMSG::IsATMTransferInterbank(void)			// Transferencia interbancaria
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
		   &&		  
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( ( (memcmp((PBYTE)&chMsg[iOffset], "09", 2) == 0)  ||
				(memcmp((PBYTE)&chMsg[iOffset], "19", 2) == 0) ||
				(memcmp((PBYTE)&chMsg[iOffset], "29", 2) == 0) )
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}

EXPORT BOOL APPMSG::IsATMTransferCBU(void)			// Transferencia minorista x CBU
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
		   &&		  
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( ( memcmp((PBYTE)&chMsg[iOffset], "1B", 2) == 0) 
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}

EXPORT BOOL APPMSG::IsATMAccountVerification(void)			// Verificacion cuenta destino x transferencia
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
		   &&		  
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( (memcmp((PBYTE)&chMsg[iOffset], "39", 2) == 0) 
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}

EXPORT BOOL APPMSG::IsATMDeposit(void)			// Deposito
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
		   &&		  
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( ( (memcmp((PBYTE)&chMsg[iOffset], "21", 2) == 0) ||
		       (memcmp((PBYTE)&chMsg[iOffset], "22", 2) == 0))
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}

EXPORT BOOL APPMSG::IsATMFastCash(void)			// Fast Cash o compra
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
		   &&		  
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( (memcmp((PBYTE)&chMsg[iOffset], "11", 2) == 0)		       
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}


EXPORT BOOL APPMSG::IsATMPayment(void)			// Pagos
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
		   &&		  
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( ((memcmp((PBYTE)&chMsg[iOffset], "17", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "50", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "51", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "90", 2) == 0) )
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}

EXPORT BOOL APPMSG::IsATMPaymentCashCheck(void)			// Pagos  Efec.
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
		   &&		  
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( ((memcmp((PBYTE)&chMsg[iOffset], "51", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "90", 2) == 0) )
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}


EXPORT BOOL APPMSG::IsATMBuying(void)			// Compras y relacionadas
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
		   &&		  
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( ((memcmp((PBYTE)&chMsg[iOffset], "71", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "72", 2) == 0) ||			  
			  (memcmp((PBYTE)&chMsg[iOffset], "74", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "75", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "76", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "77", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "78", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "79", 2) == 0) 
		     )
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}

EXPORT BOOL APPMSG::IsATMAutServicePayment(void)			// Pagos automaticos serv.
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
		   &&		  
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( ((memcmp((PBYTE)&chMsg[iOffset], "80", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "81", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "82", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "83", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "84", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "85", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "86", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "87", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "88", 2) == 0) ||
			  (memcmp((PBYTE)&chMsg[iOffset], "89", 2) == 0) 			  
		     )
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}

EXPORT BOOL APPMSG::IsATMOthersMsgs(void)			// Otros mensajes
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return(((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL, 4) == 0)       ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_REVERSAL_REP, 4) == 0)   ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV, 4) == 0)  ||
			(memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_ADV_REP, 4) == 0) )
			&&
		   // UserTrxCode [xxyyzz=6] : xx=trx_code,yy=from_acct_type,zz=to_acct_type
		   ( ((memcmp((PBYTE)&chMsg[iOffset], "91", 2) == 0) 
		      ||
		      (memcmp((PBYTE)&chMsg[iOffset], "93", 2) == 0)) 
		      && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}

EXPORT BOOL APPMSG::IsValidReversal(void) // Reverso ?
{
	return ( IsValid420() || IsValid421() );  
}


EXPORT BOOL APPMSG::IsATMLastMovInquiry(void)
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) 
		   &&		  
		   // UserTrxCode [x..y=6]
	       ((memcmp((PBYTE)&chMsg[iOffset], "94", 2) == 0)    
		      && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
			)
		  );
}

EXPORT BOOL APPMSG::IsATMPinChange(void)
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) 
		   &&		  
		   // UserTrxCode [x..y=6]
	       ((memcmp((PBYTE)&chMsg[iOffset], "320000", 6) == 0)    
		      && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
			)
		  );
}

EXPORT BOOL APPMSG::IsATMAssignHomeBankUser(void)
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) 
		   &&		  
		   // UserTrxCode [x..y=6]
	       ((memcmp((PBYTE)&chMsg[iOffset], "340000", 6) == 0)    
		      && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
			)
		  );
}

EXPORT BOOL APPMSG::IsATMExchangeRateInquiry(void)
{
	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	int iOffset = FieldOffset(3);
	// Message-Type-Identifier [12..15=4]    	
	return((memcmp((PBYTE)&chMsg[12], CISO_MSGTYPE_FINANCIAL_RQST, 4) == 0) 
		   &&		  
		   // UserTrxCode [x..y=6]
	       ((memcmp((PBYTE)&chMsg[iOffset], "350000", 6) == 0)    
		      && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
			)
		  );
}

EXPORT BOOL APPMSG::IsFinancialAdvice(void)	  // Forzado (0220,0221)
{
	return ( IsValid220() || IsValid221() );
}

EXPORT BOOL APPMSG::IsReversalOrAdviceRepeat(void)	  // Repeticion de Forzado-Reverso (0221,0421)
{
	return ( IsValid221() || IsValid421() );
}

⌨️ 快捷键说明

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