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

📄 isoapp.cpp

📁 ISO 8583 implementation.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			  && 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] , _B24_OPCODE_DEBIT_ORDER_XFER_ , 2) == 0) 
				||
				(memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_CREDIT_ORDER_XFER_, 2) == 0) 
				||
				(memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_QUERY_ORDER_XFER_ , 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], _B24_OPCODE_TRANSFER_CBU_, 2) == 0 
				||
		       memcmp((PBYTE)&chMsg[iOffset],_B24_OPCODE_TRANSFER_CBU_ACH_, 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], _B24_OPCODE_VERIF_ACCT_XFER_, 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], _B24_OPCODE_DEPOSIT_    , 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], _B24_OPCODE_WITHDRAWAL_FASTCASH_, 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], _B24_OPCODE_PAYMENT_TELEPHONY_SRVCS_, 2) == 0) 
				||
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_PAYMENT_W_DEBIT_, 2) == 0) 
				||
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_PAYMENT_W_CASH_ , 2) == 0) 
				||
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_PAYMENT_W_DEBIT_ORDER_, 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], _B24_OPCODE_PAYMENT_W_CASH_, 2) == 0) 
				||
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_PAYMENT_W_DEBIT_ORDER_, 2) == 0) )
			  && IsValidFromAccountType( iOffset )
			  && IsValidToAccountType( iOffset ) 
		   )
		  );
}


EXPORT BOOL APPMSG::IsATMBuying(void)			// Compras y relacionadas
{
	// BASE24-product. Values are :
	// 00-GENERIC Base/Propietary
	// 01-B24 ATM
	// 02-B24 POS
	// 03-B24 Teller
	// 08-From Host Maintenance
	// 11-B24 EMS
	// 12-B24 EFTPOS	
	char chPRODUCT = 0x00;
	int  iOffset   = 0;

	///////////////////////////////////////////////////////////
	// PRECONDITION : CHECK THE PRODUCT CODE : 
	if( isdigit(chMsg[3]) && isdigit( chMsg[4]) )
	{
		// 1ST. OF ALL : CHECK THE PRODUCT CODE : ATM,POS,etc.
		chPRODUCT = ((chMsg[3]-'0') * 10) + (chMsg[4]-'0') ;
		if( _ISO8583_FORMAT_FOR_POS_ != chPRODUCT   )
			return FALSE;
	}
	else
		chPRODUCT = 0x00;
	////////////////////////////////////////////////////////

	// UserTrxCode P-3
	if(!IsValidField(3)) 
		return (FALSE);

	// Offset of the field #3
	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], _B24_OPCODE_BUYING_W_ACCT_DEBIT_, 2) == 0) 
				||
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_BUYING_W_ACCT_DEBIT_CANCEL_, 2) == 0) 
				||			  
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_BUYING_DEVOLUTION_, 2) == 0) 
				||
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_BUYING_DEVOLUTION_CANCEL_, 2) == 0) 
				||
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_BUYING_CASH_BACK_, 2) == 0) 
				||
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_BUYING_CASH_BACK_CANCEL_, 2) == 0) 
				||
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_BUYING_PREAUTH_, 2) == 0) 
				||
			  (memcmp((PBYTE)&chMsg[iOffset], _B24_OPCODE_BUYING_PREAUTH_CANCEL_, 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

⌨️ 快捷键说明

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