Ejemplo n.º 1
0
        public ReversalHostNodeResponseDto RequestReversal(ReversalHostNodeRequestDto req)
        {
            BaseModel           res;
            ITransactionService svc = new TransactionService();
            var model = svc.RequestAdviceReversal(req);

            byte[] rawBytes = _responseBuilder.ReversalAdviceRequest(model);

            try
            {
                res = _bank.Send(rawBytes, model.Stan);
            }
            catch (Exception ex)
            {
                if (ex is TimeoutException)
                {
                    model    = svc.RequestAdviceReversal(req, true);
                    rawBytes = _responseBuilder.ReversalAdviceRequest(model);
                    try
                    {
                        res = _bank.Send(rawBytes, model.Stan);
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }
                else
                {
                    throw;
                }
            }

            if (!(res is ReversalModel))
            {
                throw new InvalidOperationException("incorrect responsed from Bank");
            }
            else
            {
                ReversalModel reversal = res as ReversalModel;
                ReversalHostNodeResponseDto responseDto = new ReversalHostNodeResponseDto
                {
                    Stan                = reversal.Stan,
                    ResponseCode        = reversal.RespCode,
                    ResponseDescription = reversal.RespDescription,
                    ResponseAction      = reversal.RespAction,
                    AmountTran          = reversal.AmountTran,
                    AmtTranFee          = reversal.AmtTranFee,
                    AmountCash          = reversal.AmountCash,
                    TranSeqNo           = model.TranSeqNo // set from request model
                };
                return(responseDto);
            }
        }
Ejemplo n.º 2
0
        public ReversalCoreNodeResponseDto RequestReversal(ReversalTritonNodeRequestDto req)
        {
            using (var client = ScsServiceClientBuilder.CreateClient <IHostNodeRequestService>(new ScsTcpEndPoint(Config.HostIpAddress, Config.HostPort)))
            {
                client.Connect();

                ReversalCoreNodeResponseDto autResponseDto;
                IReversalService            svr = new ReversalService();
                var reversalReq = svr.ReversalRequest(req);
                if (reversalReq != null)
                {
                    _log.Debug("Sending Core Request Object");
                    ReversalHostNodeResponseDto res = client.ServiceProxy.RequestReversal(reversalReq);
                    // Send to HostNode
                    _log.Debug("Getting Host Response Object");
                    autResponseDto = new ReversalCoreNodeResponseDto
                    {
                        Stan                = res.Stan,
                        ResponseCode        = res.ResponseCode,
                        ResponseDescription = res.ResponseDescription,
                        ResponseAction      = res.ResponseAction,
                        AmountTran          = res.AmountTran,
                        AmtTranFee          = res.AmtTranFee,
                        AmountCash          = res.AmountCash,
                        TranSeqNo           = res.TranSeqNo
                    };
                }
                else
                {
                    _log.Debug("Pin Translation failed, sending response.");
                    //send response back to terminal for decline
                    autResponseDto = new ReversalCoreNodeResponseDto
                    {
                        ResponseCode        = "99",
                        ResponseDescription = "Pin Translation Error",
                        ResponseAction      = "Decline transaction",
                        TranSeqNo           = req.TranSeqNo,
                        AmountTran          = req.Amount1,
                        AmtTranFee          = req.Amount2
                    };
                }

                return(autResponseDto);
            }
        }