iso8583.h

来自「ISO 8583 implementation.」· C头文件 代码 · 共 376 行 · 第 1/2 页

H
376
字号
#define CISO_ADM_APPROVED_OUT_TIME	"80" //	91	Administrativa aprobada fuera de horario.
#define CISO_ADM_APPROVED_TERMINAL	"81" //	92	Administrativa aprobada generada en terminales
#define CISO_HBANKING_DENIED		"47" //	xx	Usuario y DNI no coinciden en HomeBanking
#define CISO_DESTINY_NOT_AVAILABLE		  "91" 
#define CISO_DESTINY_NOT_AVAILABLE_I	   91
#endif // ( _BASE24_CURRENT_VERSION_ == _BASE24_RELEASE6_ )

///2005-08-31//////////////////////////////////////////////////////////////////////
// REVERSAL CODES BASE24 RELEASE 4? RELEASE 6?
#if ( _BASE24_CURRENT_VERSION_ == _BASE24_RELEASE6_ )
#define CISO_APPROVED					  "00"
#define CISO_APPROVED_I					   0
#define CISO_APPROVED_VIP				   "01" 
#define CISO_APPROVED_VIP_I					1	
#define CISO_EXTERNAL_DECLINE			  "05" 
#define CISO_EXTERNAL_DECLINE_I			    5
#define CISO_INVALID_TRANSACTION  		  "12"
#define CISO_INVALID_TRANSACTION_I		   12
#define CISO_INVALID_FORMAT				  "30"
#define CISO_INVALID_FORMAT_I			   30
#define CISO_TRANSACTION_NOT_SUPP		  "40" 
#define CISO_TRANSACTION_NOT_SUPP_I		   40 
#define CISO_NOT_ENOUGH_AVAIL_ZERO        "58"  
#define CISO_NOT_ENOUGH_AVAIL_ABOVE_ZERO  "59"  
#define CISO_INSUFFICIENT_FOUNDS		  CISO_NOT_ENOUGH_AVAIL_ZERO
#define CISO_WITHDRAWAL_LIMIT_EXC		  CISO_NOT_ENOUGH_AVAIL_ABOVE_ZERO
#define CISO_INVALID_ACCOUNT  			  "76"
#define CISO_NO_ACCOUNT_AVAILABLE		  CISO_INVALID_ACCOUNT
#define CISO_NO_CHECKINGS_ACCOUNT		  CISO_INVALID_ACCOUNT
#define CISO_NO_SAVINGS_ACCOUNT			  CISO_INVALID_ACCOUNT
#define CISO_SYSTEM_ERROR  				  "88"
#define CISO_SYSTEM_ERROR_I				   88
#define CISO_SYSTEM_FAILURE				  "96"
#define CISO_SYSTEM_FAILURE_I			   96
#define CISO_CUTOVER_IN_PROGRESS		  "90" 
#define CISO_CUTOVER_IN_PROGRESS_I		   90 
#define CISO_DESTINY_NOT_AVAILABLE		  "98" 
#define CISO_DESTINY_NOT_AVAILABLE_I	   98
#endif // ( _BASE24_CURRENT_VERSION_ == _BASE24_RELEASE6_ )
///2005-08-31//////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////
// Tipos de Mensajes ISO-8583, version 0, 1987
#define CISO_MSGTYPE_FINANCIAL_RQST     "0200"  // Financial Transactions
#define CISO_MSGTYPE_FINANCIAL_RESP     "0210"
#define CISO_MSGTYPE_FINANCIAL_ADV      "0220"
#define CISO_MSGTYPE_FINANCIAL_ADV_REP  "0221"
#define CISO_MSGTYPE_FINANCIAL_ACK      "0230"

#define CISO_MSGTYPE_STMT_PRINT_RQST    "0205" // Statement Prints
#define CISO_MSGTYPE_STMT_PRINT_RESP    "0215"

#define CISO_MSGTYPE_REVERSAL           "0420" // Reversals
#define CISO_MSGTYPE_REVERSAL_REP       "0421" 
#define CISO_MSGTYPE_REVERSAL_ACK       "0430" 

#define CISO_MSGTYPE_SAF_ADV            "0220" // SAF
#define CISO_MSGTYPE_SAF_ADV_REP        "0221"
#define CISO_MSGTYPE_SAF_ACK            "0230"

#define CISO_MSGTYPE_NETMGMT_RQST       "0800" // Network Management
#define CISO_MSGTYPE_NETMGMT_RESP       "0810"

#define CISO_MSGTYPE_ADJUSTEMENT        "5400" // Miscelaneous: Adjustement
#define CISO_MSGTYPE_FINAN_RQST_ERR     "9200" // Financial Transactions Error
#define CISO_MSGTYPE_FINAN_RESP_ERR     "9210" 
#define CISO_MSGTYPE_MULT_ACCNT_SEL     "9906" // Multiple Account Selection
#define CISO_MSGTYPE_DEVICE_CONTROL     "9980" // Device Control



//////////////////////////////////////////////////////////////////////////////////////////
// ISO Test prototype
EXPORT int ISO_Test(BYTE *bBuffer, int iBuffer, bool bFields, char* szOutFile, bool bTruncate);
// Configuration file
#define _ISO8583_CFG_FILE_	"ISO8583.CF"
//////////////////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////////////////										   
// Clase Mensaje ISO-8583
//////////////////////////////////////////////////////////////////////////////////////////
class ISO8583MSG
    {
    public:
        
        // Metodos publicos de la Clase        
		EXPORT ISO8583MSG(void);						// Constructor default
        EXPORT ISO8583MSG(PBYTE,WORD,PSTR=NULL);		// Constructor opcional
        EXPORT ~ISO8583MSG(void);                       // Destructor

		EXPORT BOOL InitMessage(void);					// Iniciar mensaje en cero campos
		EXPORT BOOL DeleteField(WORD);                  // Borrar Campo
		EXPORT BOOL Export(PBYTE,PWORD);                // Exportador
		EXPORT BOOL GetField(WORD,PWORD,PBYTE,WORD);    // Valor de Campo
		EXPORT BOOL GetMsgTypeId(PBYTE,WORD);           // Id de Msg
		EXPORT BOOL Import(const PBYTE,WORD);           // Importador
		EXPORT BOOL InsertField(WORD,PWORD,PBYTE,WORD); // Insercion de Campo
		EXPORT BOOL IsNetworkMgmtRequest(void);			// NetRqst?
		EXPORT BOOL IsNetworkMgmtResponse(void);		// NetRsp?
		EXPORT BOOL IsValidMessage(void);               // Es Mensaje valido?
		EXPORT BOOL IsValidField(WORD);                 // Es Campo valido?		
		EXPORT WORD MessageLength(void);			    // Longitud mensaje		
		EXPORT BOOL SetField(WORD,PWORD,PBYTE,WORD);    // Valor a Campo		
		EXPORT BOOL SetMsgTypeId(PBYTE,WORD);           // Id de Msg		
		EXPORT BOOL SetMsgTypeIdResponse(void);         // Id Respuesta de Msg		
		EXPORT void GetBitmaps(char chBistmap1[],char chBitmap2[]);		
		
		//////////////////////////////////////////////////////////////////////////////////////
		EXPORT BOOL GetAllBitmapsDescriptions(PSTR);     // Descriptor de todos los Bitmaps
		EXPORT BOOL SaveAllBitmapsDescriptions(PSTR);    // Descriptor de todos los Bitmaps
		EXPORT BITMAPLIST * BitmapListReference(PCSTR);  // Recupera lista de BITMAPS determinada
		EXPORT BOOL GetHeader(char chHeader[], short nLen);	// Recuperar Header
		//////////////////////////////////////////////////////////////////////////////////////
        
    protected:
    
        // Metodos protegidos de la Clase
		EXPORT BOOL DefaultBitmapsDescriptions(void);// Defaults bitmaps
		EXPORT BOOL DefaultFieldsDescriptions(void); // Defaults fields
		EXPORT WORD FieldOffset(WORD);              // Desplazamiento Campo
		EXPORT WORD FieldLength(WORD);              // Longitud Campo
		EXPORT WORD FieldType(WORD);                // Tipo Campo				
		EXPORT BOOL GetFieldsDescription(PSTR);     // Descriptor de Campos
		EXPORT BOOL GetImplicitLength(WORD,PWORD);  // Longitud implicita		
		EXPORT BOOL IsValidHeader(void);            // Header?
		EXPORT BOOL IsValidTransactionType(void);   // Transaction Type?
		EXPORT BOOL IsValidMsgTypeId(PBYTE=NULL);   // Msg Type Id?
		
		///////////////////////////////////////////////////////////////////
		EXPORT BOOL GetBitmapDescription(PSTR,PSTR);// Descriptor de Bitmaps
		EXPORT BOOL SaveBitmapDescription(PSTR,PSTR);// Descriptor de Bitmaps
		///////////////////////////////////////////////////////////////////

		
		virtual EXPORT BOOL IsValidUserData(void); // User Data?
	    
		virtual EXPORT BOOL IsValid200(void);  // Financial Trx Request?
		virtual EXPORT BOOL IsValid210(void);  // Financial Trx Response?
		virtual EXPORT BOOL IsValid220(void);  // Financial Trx Completion?/SAF?
		virtual EXPORT BOOL IsValid221(void);  // Financial Trx Dup Completion?/SAF repeat?
		virtual EXPORT BOOL IsValid230(void);  // Financial Trx Completion Ack?/SAF Ack?

		virtual EXPORT BOOL IsValid205(void);  // Statement Print Request?
		virtual EXPORT BOOL IsValid215(void);  // Statement Print Response?
		
		virtual EXPORT BOOL IsValid420(void);  // Reversal?
		virtual EXPORT BOOL IsValid421(void);  // Reversal Repeat?
		virtual EXPORT BOOL IsValid430(void);  // Reversal Ack?

		virtual EXPORT BOOL IsValid800(void);  // Network Management?
		virtual EXPORT BOOL IsValid810(void);  // Network Management Response?

		EXPORT BOOL MakeValidField(BYTE [],WORD);  // Hacer Campo valido
		EXPORT BOOL MakeInvalidField(BYTE [],WORD);// Hacer Campo invalido
		EXPORT BOOL RecalculateOffsets(void);      // Recalcular Offsets  

		// Variables protegidas de la Instancia (para acceso x/subclases)
        BYTE		chMsg[CISOMESSAGESIZE*10]; // Buffer de Mensaje ISO
		WORD		cbMsgLen;                  // Longitud del Buffer		
		// Buffer auxiliar de copia 
		BYTE		chAuxMsg[CISOMESSAGESIZE*10];
		WORD		cbAuxMsgLen;
		BOOL		bCheckMessage;             // Verificacion habilitada?
		
	private:
        
		// Variables privadas de la Instancia
		FIELD       fdFields[CISOFIELDS],    // Descripcion de Campos en Mensaje
		     		fdFieldsBkp[CISOFIELDS]; // Backup original de Campos
		// Lista privada de Bitmaps para cada tipo de transaccion {200,205,210,...}
		BITMAPLIST	bml200,					 // Bit Map List 200
					bml205,					 // Bit Map List 205
					bml210,					 // Bit Map List 210
					bml215,					 // Bit Map List 215
					bml220,					 // Bit Map List 220
					bml230,					 // Bit Map List 230
					bml420,					 // Bit Map List 420
					bml430,					 // Bit Map List 430
					bml800,					 // Bit Map List 800
					bml810;					 // Bit Map List 810
    };

//////////////////////////////////////////////////////////////////////////////////////////

#endif // end-ifdef-ISO8583_H

⌨️ 快捷键说明

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