📄 atmtrx.cpp
字号:
// Completar campos de respuesta en BLANCOS y RECHAZAR TRX.
// Formatear campo ISO #44, RESP_DATA, saldo y disponible
FormatField44_RESP_DATA( NULL,NULL );
// Formatear campo ISO #122, SECNDRY_RSRVD3_PRVT
FormatField122_SECNDRY_RSRVD3_PRVT();
// Formatear campo ISO #123, SECNDRY_RSRVD4_PRVT, "DEPOSIT AMMOUNT"
FormatField123_SECNDRY_RSRVD4_PRVT();
// A pedido de RED LINK, se retorna "DESTINO O AUTORIZADOR NO DISPONIBLE"
if(is_true == bIsReversal)
wRespCode = CISO_TRANSACTION_NOT_SUPP_I;
else
wRespCode = CISO_DESTINY_NOT_AVAILABLE_I;
}
else if (isoMsg.IsATMPinChange()) // Cambio de PIN
{
// A pedido de RED LINK, se retorna "DESTINO O AUTORIZADOR NO DISPONIBLE"
if(is_true == bIsReversal)
wRespCode = CISO_TRANSACTION_NOT_SUPP_I;
else
wRespCode = CISO_DESTINY_NOT_AVAILABLE_I;
}
else if (isoMsg.IsATMAssignHomeBankUser()) // Asignacion usuario HB
{
// A pedido de RED LINK, se retorna "DESTINO O AUTORIZADOR NO DISPONIBLE"
if(is_true == bIsReversal)
wRespCode = CISO_TRANSACTION_NOT_SUPP_I;
else
wRespCode = CISO_DESTINY_NOT_AVAILABLE_I;
}
else if (isoMsg.IsATMExchangeRateInquiry()) // Consulta tipo de cambio
{
// Completar campos de respuesta en BLANCOS y RECHAZAR TRX.
// Formatear campo ISO #44, RESP_DATA, saldo y disponible
FormatField44_RESP_DATA( NULL,NULL );
// Formatear campo ISO #54 de rta., stB24_0210_Def_Data
FormatField54_B24_0210_Def_Data( NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL );
// Formatear campo ISO #122, SECNDRY_RSRVD3_PRVT
FormatField122_SECNDRY_RSRVD3_PRVT();
// Formatear campo ISO #123, SECNDRY_RSRVD4_PRVT, "DEPOSIT AMMOUNT"
FormatField123_SECNDRY_RSRVD4_PRVT();
// A pedido de RED LINK, se retorna "DESTINO O AUTORIZADOR NO DISPONIBLE"
if(is_true == bIsReversal)
wRespCode = CISO_TRANSACTION_NOT_SUPP_I;
else
wRespCode = CISO_DESTINY_NOT_AVAILABLE_I;
}
else
// Todo lo demas NO SE RECONOCE, SON "TRANSACCIONES INVALIDAS"
wRespCode = CISO_INVALID_TRANSACTION_I;
///////////////////////////////////////////////////////////////////////////////////
// Backup de resultado de ejecucion hacia la clase base
wProcRespCde = wRespCode;
// Establecer codigo de mensaje ISO de respuesta
// Como RED LINK tiene "ciertas particularidades".....
if((!isoMsg.IsATMLastMovInquiry()) && is_true == bStmtPrint_forced)
{
// FINANCIAL RESPONSE para un FINANCIAL REQUEST, o lo que corresponda
if(!isoMsg.SetMsgTypeIdResponse())
return (is_false);
}
else if(is_true == bStmtPrint_forced) // Statement Print forzado ?
{
// STATEMENT PRINT RESPONSE para un FINANCIAL REQUEST. RED LINK S.A.
if(!isoMsg.SetMsgTypeId((PBYTE)CISO_MSGTYPE_STMT_PRINT_RESP,4))
return (is_false);
}
else
{
// FINANCIAL RESPONSE para un FINANCIAL REQUEST, o lo que corresponda
if(!isoMsg.SetMsgTypeIdResponse())
return (is_false);
};
// Resultado de Respuesta parametrico, en campo #39 del mensaje ISO
sprintf((PSTR)szRespCode, "%0*i", 2, wRespCode);
if(!isoMsg.IsValidField(39))
isoMsg.InsertField(39, &(wRspCdeLen=2), (PBYTE)szRespCode, 2 );
else
isoMsg.SetField(39, &(wRspCdeLen=2), (PBYTE)szRespCode, 2 );
}
else
{
// Set Message Type Response
if(!isoMsg.SetMsgTypeIdResponse())
return (is_false);
// Codigo de Respuesta erroneo, en campo #39 del mensaje ISO
isoMsg.InsertField(39, &(wRspCdeLen=2), (PBYTE)CISO_INVALID_TRANSACTION, 2 );
};//end-if-then-else-TranCode
//////////////////////////////////////////////////////////////////////
// Commit o Rollback de transaccion segun el resultado obtenido, y
// desconectarse a Base de Datos .
// OBSERVACIONES : EN ESTA CASO NO CORRESPONDE YA QUE EXISTE SESION RPC PREVIA
//////////////////////////////////////////////////////////////////////
// Ok por procesado
return (is_true);
}//end-ProcessATMTransaction
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de reversos
WORD TrxResATM::ProcessReversal(WORD wCause)
{
WORD wRespCde = ProcessInit();
// Retornar cod.rta.
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I) ;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento generico
WORD TrxResATM::ProcessGeneric(void)
{
WORD wRespCde = ProcessInit();
// Retornar cod.rta.
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I) ;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessBalanceInquiry(WORD wCause,boolean_t bIsRvsl) // Consulta de saldos
{
WORD wRespCde = ProcessInit();
// Retornar cod.rta.
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I) ;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessTransfer(WORD wCause,boolean_t bIsRvsl) // Transferencia ctas. relacionadas
{
WORD wRespCde = ProcessInit();
// Retornar cod.rta.
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I) ;
}
// Procesamiento de transacciones xfer. interbancarias
WORD TrxResATM::ProcessTransferInterbank(WORD wCause,boolean_t bIsRvsl) // Transferencia Interbancaria
{
WORD wRespCde = ProcessInit();
// Retornar cod.rta.
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I) ;
}
// Procesamiento de transacciones de xfer. minorista, o CBU
WORD TrxResATM::ProcessIndividualTransfer(WORD wCause,boolean_t bIsRvsl) // Transferencia minorista
{
WORD wRespCde = ProcessInit();
// Retornar cod.rta.
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I) ;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessWithdrawal(WORD wCause,boolean_t bIsRvsl) // Extraccion
{
WORD wRespCde = ProcessInit();
// Retornar cod.rta.
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessDeposit(WORD wCause,boolean_t bIsRvsl) // Deposito
{
WORD wRespCde = ProcessInit();
// Retornar cod.rta.
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessFastCash(WORD wCause,boolean_t bIsRvsl) // FastCash o compra
{
WORD wRespCde = ProcessInit();
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessAccountVerification(WORD wCause,boolean_t bIsRvsl)// Verificacion cuenta destino
{
WORD wRespCde = ProcessInit();
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessPayment(WORD wCause,boolean_t bIsRvsl) // Pagos
{
WORD wRespCde = ProcessInit();
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessBuying(WORD wCause,boolean_t bIsRvsl) // Compras y relacionados
{
WORD wRespCde = ProcessInit();
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessAutServicePayment(WORD wCause,boolean_t bIsRvsl) // Pagos Automatico de Servs.
{
WORD wRespCde = ProcessInit();
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessOtherMsgs(WORD wCause,boolean_t bIsRvsl)
{
WORD wRespCde = ProcessInit();
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessDebitNote(WORD wCause,boolean_t bIsRvsl)
{
WORD wRespCde = ProcessInit();
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Procesamiento de transacciones en particular
WORD TrxResATM::ProcessCreditNote(WORD wCause,boolean_t bIsRvsl)
{
WORD wRespCde = ProcessInit();
return (wRespCde = CISO_TRANSACTION_NOT_SUPP_I);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Formatear campo ISO #54 de rta., stB24_0210_Def_Data
void TrxResATM::FormatField54_B24_0210_Def_Data(
char *chWITH_ADV_AVAIL
,char *chINT_OWE_AUSTRAL
,char *chCASH_AVAIL
,char *chMIN_PAYMENT
,char *chPAYMENT_DAT
,char *chINTEREST_RATE
,char *chOWE_DOLAR
,char *chMIN_PAYMENT_DOLAR
,char *chPURCHASE_DOLAR
,char *chCASH_FEE )
{
WORD wRspCdeLen=0;
// Formatear campo ISO #54 de rta., B24_0210_DEF, pero no para Xfer. x CBUs.
if( isoMsg.IsATMTransferCBU() )
return ;
// Formatear campo ISO #54 de rta., stB24_0210_Def_Data
if(NULL == chWITH_ADV_AVAIL) chWITH_ADV_AVAIL = "99"; // Sin limites de extracciones
if(NULL == chINT_OWE_AUSTRAL) chINT_OWE_AUSTRAL = "000000000000";
if(NULL == chCASH_AVAIL) chCASH_AVAIL = "000000000000";
if(NULL == chMIN_PAYMENT) chMIN_PAYMENT = "000000000000";
if(NULL == chPAYMENT_DAT) chPAYMENT_DAT = "000000";
if(NULL == chINTEREST_RATE) chINTEREST_RATE = "000000";
if(NULL == chOWE_DOLAR) chOWE_DOLAR = "0000000000";
if(NULL == chMIN_PAYMENT_DOLAR) chMIN_PAYMENT_DOLAR = "0000000000";
if(NULL == chPURCHASE_DOLAR) chPURCHASE_DOLAR = "0000000000";
if(NULL == chCASH_FEE) chCASH_FEE = "00000000";
// No se blanquea inicialmente porque ya viene informado por el switch financiero
COPYVALUE(isoFields.field54.stB24_0210_Def_Data.chAMT, NULL ); // 12 + reseved 108 bytes
COPYVALUE(isoFields.field54.stB24_0210_Def_Data.chWITH_ADV_AVAIL,chWITH_ADV_AVAIL); // contador extracciones o adelantos
COPYVALUE(isoFields.field54.stB24_0210_Def_Data.chINT_OWE_AUSTRAL,chINT_OWE_AUSTRAL); // intereses ganados o deuda anterior
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -