Пример #1
0
        public ReversalHostNodeRequestDto ReversalRequest(ReversalTritonNodeRequestDto req)
        {
            ICryptographyService svr = new CryptographyService(req.TerminalId);
            //string nameLocation = "800 LANGDON ST,          MADISON      AU";
            string nameLocation = svr.GetTerminalLocation();

            _log.Debug("Constructing Core Request Object");
            var requestDto = new ReversalHostNodeRequestDto
            {
                P3ProcessingCode    = req.TransactionCode, // from triton
                P4AmountTran        = req.Amount1,         // from triton /* Authorization transaction amount */
                P7TransmitDt        = DateTime.Now,
                P12TimeLocalTran    = DateTime.Now,
                P13DateLocalTran    = DateTime.Now,
                P15DateSettlement   = DateTime.Now.AddDays(+1),
                P25PosConditionCode = req.PosCondCode,    // from triton
                P28AmtTranFee       = req.Amount2,        // from triton /* Surcharge amount */
                P35Track2           = req.Track2,         // from triton
                P41TerminalId       = req.TerminalId,     // from triton
                P43NameLocation     = nameLocation,
                P57AmountCash       = req.Amount3,        // from triton /* Dispensed amount */
                TranSeqNo           = req.TranSeqNo,      // from triton
                MiscellaneousX      = req.MiscellaneousX, // from triton
                AuthorizationNum    = req.AuthorizationNum
            };

            return(requestDto);
        }
Пример #2
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);
            }
        }
Пример #3
0
        public ReversalModel RequestAdviceReversal(ReversalHostNodeRequestDto dto, bool isRepeat)
        {
            IDataService svcData = new DataService(dto.P41TerminalId, dto.TranSeqNo, dto.AuthorizationNum);

            string cardAcceptorId = svcData.RetrieveCardAcceptorId();
            string nationalData   = svcData.RetrieveAddtlDataNat();
            int    securityBlock  = svcData.RetrieveSecurityBlock();
            int    acqInstId      = svcData.RetrieveAcqInstIdCode(); // 32
            int    fwdInstIdCode  = svcData.RetrieveFwdInstIdCode(); // 33

            //string cardAcceptorId = "437586000      "; // p42_card_acceptor_id
            //string nationalData = @"TCC01\EFC00000000\CCI0\FBKV\"; // p47_additional_response_national
            //int securityBlock = 2; // 53
            //int acqInstId = 560258; // 32
            //int fwdInstIdCode = 61100016; // 33
            string mac128 = "7001DC4E00000000"; // 90

            string mti = isRepeat != true ? "0420" : "0421";

            ReversalRequestModel model = new ReversalRequestModel
                                         (
                mti: mti,
                processingCode: dto.P3ProcessingCode,
                transactionAmount: dto.P4AmountTran,
                transactionDate: dto.P7TransmitDt,
                stan: dto.AuthorizationNum,
                timeLocal: dto.P12TimeLocalTran,
                dateLocation: dto.P13DateLocalTran,
                dateSettlement: dto.P15DateSettlement,
                posConditionCode: dto.P25PosConditionCode,
                transactionFee: dto.P28AmtTranFee,
                acqInstIdCode: acqInstId,
                fwdInstIdCode: fwdInstIdCode,
                track2: dto.P35Track2,
                retRefNo: dto.TranSeqNo,
                terminalId: dto.P41TerminalId,
                cardAcptIdCode: cardAcceptorId,
                nameLocation: dto.P43NameLocation,
                addtlDataNat: nationalData,
                secControlInfo: securityBlock,
                amountCash: dto.P57AmountCash,
                mac128: mac128,
                miscellaneousX: dto.MiscellaneousX
                                         );

            return(model);
        }