Exemplo n.º 1
0
        public async Task <ActionResult> Payment(PaymentInput input)
        {
            var paymentViewModel = new PaymentViewModel()
            {
                PaymentInput = input,
            };

            if (!ModelState.IsValid)
            {
                return(View("Index", paymentViewModel));
            }

            var gateCheckRequest = new GateCheckRequest()
            {
                Number = input.Number,
                Amount = double.Parse(input.Amount, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture),
            };

            try
            {
                paymentViewModel.GatePayResponse = await m_Gate.CheckAndPay(gateCheckRequest).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                m_Logger.Error(e.Message, e);
                paymentViewModel.ExceptionMessage = e.Message;
            }

            return(View("Index", paymentViewModel));
        }
Exemplo n.º 2
0
        public async Task <GateCheckResponse> Check(GateCheckRequest gateCheckRequest)
        {
            var clientCheckRequest = prepareCheckRequest(gateCheckRequest);

            var clientCheckResponse = await m_Client.Send(clientCheckRequest).ConfigureAwait(false);

            return(new GateCheckResponse()
            {
                DisplayInfo = clientCheckResponse.ADDINFO,
                Error = getCheckPayError(clientCheckResponse),
                Session = clientCheckRequest.SESSION,
            });
        }
Exemplo n.º 3
0
        public async Task <GatePayResponse> CheckAndPay(GateCheckRequest gateCheckRequest)
        {
            var clientCheckRequest = prepareCheckRequest(gateCheckRequest);

            var clientCheckResponse = await m_Client.Send(clientCheckRequest).ConfigureAwait(false);

            var error = getCheckPayError(clientCheckResponse);

            if (error != null)
            {
                return new GatePayResponse()
                       {
                           Error         = error,
                           IsCheckFailed = true,
                           Session       = clientCheckRequest.SESSION,
                           RRN           = null,
                           TransId       = null,
                       }
            }
            ;

            var clientPayRequest = new PayRequest()
            {
                SD          = clientCheckRequest.SD,
                AP          = clientCheckRequest.AP,
                OP          = clientCheckRequest.OP,
                DATE        = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"),
                SESSION     = clientCheckRequest.SESSION,
                NUMBER      = clientCheckRequest.NUMBER,
                ACCOUNT     = clientCheckRequest.ACCOUNT,
                AMOUNT      = clientCheckRequest.AMOUNT,
                AMOUNT_ALL  = clientCheckRequest.AMOUNT_ALL,
                PAY_TOOL    = clientCheckRequest.PAY_TOOL,
                TERM_ID     = clientCheckRequest.TERM_ID,
                COMMENT     = "",
                RRN         = RandomStringGenerator.GenerateNumericString(32, m_Rng),
                ACCEPT_KEYS = null, // will be filled right before sending
                NO_ROUTE    = clientCheckRequest.NO_ROUTE,
            };

            var clientPayResponse = await m_Client.Send(clientPayRequest).ConfigureAwait(false);

            return(new GatePayResponse()
            {
                Error = getCheckPayError(clientPayResponse),
                IsCheckFailed = false,
                Session = clientCheckRequest.SESSION,
                RRN = clientPayRequest.RRN,
                TransId = clientPayResponse.TRANSID,
            });
        }
Exemplo n.º 4
0
        public async Task CheckPayTest(double?amount, bool shouldSucceed, string reason)
        {
            var gateCheckRequest = new GateCheckRequest()
            {
                Number = "9261112233",
                Amount = amount,
            };
            var gatePayResponse = await m_Gate.CheckAndPay(gateCheckRequest).ConfigureAwait(false);

            if (shouldSucceed)
            {
                gatePayResponse.Error.Should().BeNull(reason);
            }
            else
            {
                gatePayResponse.Error.Should().NotBeNull(reason);
            }
        }
Exemplo n.º 5
0
        public async Task CheckPayStatusTest()
        {
            var gateCheckRequest = new GateCheckRequest()
            {
                Number = "9261112233",
                Amount = 1234.5678,
            };
            var gatePayResponse = await m_Gate.CheckAndPay(gateCheckRequest).ConfigureAwait(false);

            var gateStatusRequest = new GateStatusRequest()
            {
                Session = gatePayResponse.Session,
                TransId = gatePayResponse.TransId,
            };
            var gateStatusResponse = await m_Gate.Status(gateStatusRequest).ConfigureAwait(false);

            gateStatusResponse.Error.Should().BeNull();
            gateStatusResponse.Status.Code.Should().Be(7);
        }
Exemplo n.º 6
0
 private CheckRequest prepareCheckRequest(GateCheckRequest request)
 {
     return(new CheckRequest()
     {
         SD = m_Configuration.SD,
         AP = m_Configuration.AP,
         OP = m_Configuration.OP,
         DATE = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"),
         SESSION = RandomStringGenerator.GenerateAlphaNumericString(20, m_Rng),
         NUMBER = request.Number,
         ACCOUNT = request.Number != null ? string.Empty : request.Account,
         AMOUNT = request.Amount.HasValue ? printDouble(request.Amount.Value) : printDouble(FAKE_AMOUNT),
         AMOUNT_ALL = request.Amount.HasValue ? printDouble(request.Amount.Value) : printDouble(FAKE_AMOUNT),
         REQ_TYPE = request.Amount == null ? "1" : "0",
         PAY_TOOL = ((int)m_Configuration.PAY_TOOL).ToString(),
         TERM_ID = m_Configuration.TERM_ID,
         COMMENT = "",
         ACCEPT_KEYS = null, // will be filled right before sending
         NO_ROUTE = m_Configuration.NO_ROUTE ? "1" : "0",
     });
 }