📄 isoapp.cpp
字号:
//
// IT24 Sistemas S.A.
// Application ISO-8583 Messages as released by RED LINK S.A.
//
// Libreria Propietaria de Mensajes ISO Aplicados
//
// Tarea Fecha Autor Observaciones
// (Inicial) 1998.06.23 mdc Base. PAS y ULTMOV.
// (Alfa) 1998.07.02 mdc Base. AFJP.
// (Beta) 1998.07.23 mdc Extensiones SOAT. Logon.
// (Beta) 1998.07.27 mdc Extensiones SOAT. Logoff.
// (Beta) 1998.07.31 mdc Public-Protected-Private revisado
// (Beta) 1998.08.04 mdc CheckExternParameters
// (Beta) 1998.08.11 mdc SOAT: GenericRequest/Inquiry/Update/Delete/Insert
// (Beta) 1998.10.13 mdc SOAT: GenericRequest/Inqueiry/Update/Delete/Insert Tarj
// (Beta) 1998.10.15 mdc SOATSystemCmd
// (Beta) 1998.10.20 mdc Mas transacciones SOAT
// (Beta) 1998.10.27 mdc Reversos contemplados en trxs SOAT
// (Beta) 1998.11.05 mdc TranCodes genericos de 6 digitos numericos
// (Beta) 1999.03.31 mdc SOATLogonPassword();
// (Beta) 2000.02.15 mdc CheckExternParameters() ampliada.
// (Beta) 2001.12.31 mdc ATM Messages y BOOL IsControlCenterCommand(void).
//
// Header propio
#include <qusrinc/isoapp.h>
// Header formatos ISO8583 RED LINK
#include <qusrinc/isoredef.h>
// Header ANSI C/C++
#include <memory.h>
// Header Types ANSI
#include <ctype.h>
// Header STRING
#include <string.h>
// Archivo de inicializacion por deafult ISO8583
#define ISO8583_PROFILE_NAME "ISO8583.INI"
// Network Management Request
EXPORT BOOL APPMSG::IsNetworkMgmtRequest(void)
{
// Network request?
return( ISO8583MSG::IsNetworkMgmtRequest() );
}
// Network Management Response
EXPORT BOOL APPMSG::IsNetworkMgmtResponse(void)
{
// Network response?
return( ISO8583MSG::IsNetworkMgmtResponse() );
}
// Control Center Command
EXPORT BOOL APPMSG::IsControlCenterCommand(void)
{
// Control Center Command ?
if (strncmp( (char *)chMsg, "CCC", 3) == 0)
{
#ifdef _H24CCC_H_
//-----------------------1...:....1....:....2....:
// 0 0
if ( (strcmp( (char *)chMsg+3, CCC_SHUTDOWN_COMM) == 0) ||
(strcmp( (char *)chMsg+3, CCC_STARTUP_COMM) == 0) ||
(strcmp( (char *)chMsg+3, CCC_HOST_UNAVAIL) == 0) ||
(strcmp( (char *)chMsg+3, CCC_HOST_READY) == 0) ||
(strcmp( (char *)chMsg+3, CCC_STOP_HOST) == 0)
)
return ( TRUE );
else
return( FALSE );
#else
return ( FALSE );
#endif
}
else
return( FALSE );
}
// PAS?
EXPORT BOOL APPMSG::IsPASTransaction(void)
{
// El Tipo de Trx esta alguno Ok?
if( IsPASSuscription() || // Adhesion
IsPASSuscriptionRvrsl() || // Reversa Adhesion
IsPASInquiry() || // Consulta
IsPASPayment() || // Pago
IsPASPaymentResponse() || // Rta. a Pago
IsPASPaymentRvrsl() ) // Reversa Pago
return (TRUE);
// Tipo Trx invalido
return (FALSE);
}
// ULTMOV?
EXPORT BOOL APPMSG::IsULTMOVTransaction(void)
{
// El Tipo de Trx esta alguno Ok?
if( IsULTMOVInquiry() ) // Consulta
return (TRUE);
// Tipo Trx invalido
return (FALSE);
}
// AFJP?
EXPORT BOOL APPMSG::IsAFJPTransaction(void)
{
// El Tipo de Trx esta alguno Ok?
if( IsAFJPInquiry() || // Consulta
IsAFJPCuilInquiry() || // Consulta CUIL
IsAFJPPayment() || // Pago
IsAFJPMessageToInst() ) // Mensaje a Institucion
return (TRUE);
// Tipo Trx invalido
return (FALSE);
}
// SOAT?
EXPORT BOOL APPMSG::IsSOATTransaction(void)
{
// El Tipo de Trx esta alguno Ok?
if( IsSOATDuplicatedLogon() || // Logon de Usuario en Terminal duplicado?
IsSOATLogon() || // Logon de Usuario en Terminal?
IsSOATLogoff() || // Logoff de Usuario en Terminal?
IsSOATGenericInquiry() || // Consulta?
IsSOATGenericInsertion() || // Insercion?
IsSOATGenericDeletion() || // Borrado?
IsSOATGenericUpdate() || // Modificacion?
IsSOATGenericRequest() || // Requerimiento-Pedido generico?
IsSOATSystemCmd() // Comando del Sistema
)
// Ok
return (TRUE);
// Tipo Trx invalido
return (FALSE);
}
// Es valida la adhesion/suscripcion?
EXPORT BOOL APPMSG::IsPASSuscription(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], "890000", 6) == 0) ||
(memcmp((PBYTE)&chMsg[iOffset], "800000", 6) == 0) )
);
}
// Es valido el reverso de adhesion?
EXPORT BOOL APPMSG::IsPASSuscriptionRvrsl(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_REVERSAL, 4) == 0)
||
(memcmp((PBYTE)&chMsg[12], "0421", 4) == 0))
&&
// UserTrxCode [x..y=6]
(memcmp((PBYTE)&chMsg[iOffset], "800000", 6) == 0) // Adhesion
);
}
// Es valida la consulta?
EXPORT BOOL APPMSG::IsPASInquiry(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], "830000", 6) == 0)
);
}
// Es valido el pago?
EXPORT BOOL APPMSG::IsPASPayment(void)
{
// UserTrxCode P-3
if(!IsValidField(3))
return (FALSE);
int iOffset = FieldOffset(3);
// Message-Type-Identifier [12..15=4]
return(((memcmp((PBYTE)&chMsg[12], "0220", 4) == 0)
||
(memcmp((PBYTE)&chMsg[12], "0221", 4) == 0))
&&
// UserTrxCode [x..y=6]
( ((memcmp((PBYTE)&chMsg[iOffset], "881000", 6) == 0) || // Pago s/fact
(memcmp((PBYTE)&chMsg[iOffset], "882000", 6) == 0) )
||
(memcmp((PBYTE)&chMsg[iOffset], "88", 2) == 0) // Pago s/usu
||
((memcmp((PBYTE)&chMsg[iOffset], "81", 2) == 0) || // Default
(memcmp((PBYTE)&chMsg[iOffset], "86", 2) == 0) )
)
);
}
// Es valido el reverso de pago?
EXPORT BOOL APPMSG::IsPASPaymentRvrsl(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_REVERSAL, 4) == 0)
||
(memcmp((PBYTE)&chMsg[12], "0421", 4) == 0))
&&
// UserTrxCode [x..y=6]
( ((memcmp((PBYTE)&chMsg[iOffset], "881000", 6) == 0) || // Pago s/fact
(memcmp((PBYTE)&chMsg[iOffset], "882000", 6) == 0) )
||
(memcmp((PBYTE)&chMsg[iOffset], "88", 2) == 0) // Pago s/usu
||
((memcmp((PBYTE)&chMsg[iOffset], "81", 2) == 0) || // Default
(memcmp((PBYTE)&chMsg[iOffset], "86", 2) == 0) )
)
);
}
// Es valida la respuesta al pago?
EXPORT BOOL APPMSG::IsPASPaymentResponse(void)
{
// UserTrxCode P-3
if(!IsValidField(3))
return (FALSE);
int iOffset = FieldOffset(3);
// Message-Type-Identifier [12..15=4]
return((memcmp((PBYTE)&chMsg[12], "0230", 4) == 0)
&&
// UserTrxCode [x..y=6]
( ((memcmp((PBYTE)&chMsg[iOffset], "881000", 6) == 0) || // Pago s/fact
(memcmp((PBYTE)&chMsg[iOffset], "882000", 6) == 0) )
||
(memcmp((PBYTE)&chMsg[iOffset], "88", 2) == 0) // Pago s/usu
||
((memcmp((PBYTE)&chMsg[iOffset], "81", 2) == 0) || // Default
(memcmp((PBYTE)&chMsg[iOffset], "86", 2) == 0) )
)
);
}
// Es valido el pago desde un host y terminal POS Teller?
EXPORT BOOL APPMSG::IsPASPaymentFromPOSTerminal(void)
{
// UserTrxCode P-3
if(!IsValidField(3))
return (FALSE);
// Track2 P-35
if(!IsValidField(35))
return (FALSE);
int iOffTrxCde = FieldOffset(3) +FieldType(3) ,
iOffTrk2 = FieldOffset(35)+FieldType(35);
// Message-Type-Identifier [12..15=4]
return(((memcmp((PBYTE)&chMsg[12], (PBYTE)"0220", 4) == 0)
||
(memcmp((PBYTE)&chMsg[12], (PBYTE)"0221", 4) == 0))
&&
(memcmp((PBYTE)&chMsg[iOffTrxCde], (PBYTE)"86", 2) == 0)
&&
(memcmp((PBYTE)&chMsg[iOffTrk2], (PBYTE)"00", 2) == 0)
);
}
// Es valida la consulta?
EXPORT BOOL APPMSG::IsULTMOVInquiry(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], "942000", 6) == 0) || //CtaCte$
(memcmp((PBYTE)&chMsg[iOffset], "940700", 6) == 0) || //CtaCteUS$
(memcmp((PBYTE)&chMsg[iOffset], "941000", 6) == 0) || //CajAh$
(memcmp((PBYTE)&chMsg[iOffset], "941500", 6) == 0) || //CajAhUS$
(memcmp((PBYTE)&chMsg[iOffset], "941400", 6) == 0) || //CajAhBono
(memcmp((PBYTE)&chMsg[iOffset], "943000", 6) == 0)) //TCred
);
}
// Es valida la consulta?
EXPORT BOOL APPMSG::IsAFJPInquiry(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], "941300", 6) == 0)
);
}
// Es valida la consulta de CUIL como Id?
EXPORT BOOL APPMSG::IsAFJPCuilInquiry(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], "881000", 6) == 0) ||
(memcmp((PBYTE)&chMsg[iOffset], "882000", 6) == 0))
);
}
// Es valido el pago?
EXPORT BOOL APPMSG::IsAFJPPayment(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], "210013", 6) == 0)
);
}
// Es valido el mensaje a la institucion?
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -