Пример #1
0
        public void ReturnCreatedActionResult()
        {
            //Arrange
            var paymentRepo      = new Mock <IPaymentRepository>();
            var profile          = new MerchantPaymentProfile();
            var mapperConfig     = new MapperConfiguration(x => x.AddProfile(profile));
            var paymentPublisher = new Mock <IPaymentPublisher>();

            var mapper = new Mapper(mapperConfig);

            var paymentRequest = new MerchantPaymentRequest
            {
                Amount        = 9.99,
                Currency      = "USD",
                MerchantId    = "1",
                PaymentMethod = new PaymentMethod
                {
                    Cvv             = "123",
                    ExpirationMonth = "05",
                    ExpirationYear  = "2021",
                    Number          = "4319487612345678",
                    PaymentMethodId = new Guid(),
                    Type            = "Visa"
                }
            };


            var controller = new PaymentController(paymentRepo.Object, mapper, paymentPublisher.Object);

            //Act
            var result = controller.SubmitPayment(paymentRequest);

            //Assert
            Assert.That(result.Result, Is.TypeOf <CreatedAtActionResult>());
        }
Пример #2
0
 public MerchantPaymentResponse EstimateTransactionDetails(MerchantPaymentRequest request)
 {
     try
     {
         return(Payment.EstimateTransactionDetails(request));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Пример #3
0
        public IActionResult EstimateTransactionDetails([FromBody] MerchantPaymentRequest request)
        {
            MerchantPaymentResponse response = new MerchantPaymentResponse();

            response.Amount             = new Amount();
            response.Amount.ServiceFees = Constants.Constants.TransactionFees;
            response.Amount.Commission  = request.Amount - 1;
            response.Amount.Total       = request.Amount + Constants.Constants.TransactionFees;
            response.TransactionId      = request.TransactionId + "--" + "\n" + "Basic Info:" + request.BasicInfo.ToString();
            return(Ok(response));
        }
Пример #4
0
        public MerchantPaymentResponse EstimateTransactionDetails(MerchantPaymentRequest request)
        {
            HttpResponseMessage response = MockupsAPIsCaller.CallAPI(request, "api/Payment/MerchantToSR/EstimateTransactionDetails");

            if (response.StatusCode == HttpStatusCode.OK)
            {
                string ResponseString = (response.Content.ReadAsStringAsync()).Result;
                MerchantPaymentResponse merchantPaymentResponse = JsonConvert.DeserializeObject <MerchantPaymentResponse>(ResponseString);
                return(merchantPaymentResponse);
            }
            else if (response.StatusCode == (HttpStatusCode)490)
            {
                throw MockupsAPIsCaller.GenerateError(response);
            }
            throw new Exception();
        }
Пример #5
0
        public async Task <IActionResult> SubmitPayment([FromBody] MerchantPaymentRequest paymentRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
                //log - bad request
            }

            var payment = _mapper.Map <MerchantPayment>(paymentRequest);

            await _paymentRepository.Add(payment);

            //log payment added to db with {id}

            _paymentPublisher.PublishPaymentSubmitted(payment);
            //log payment submitted to bank with {id}

            return(CreatedAtAction(nameof(GetPayment), new { id = payment.Id }, _mapper.Map <MerchantPaymentResponse>(payment)));
        }
Пример #6
0
        public async Task <ActionResult <PaymentResponse> > Post(MerchantPaymentRequest request)
        {
            var paymentRequest = new PaymentRequest
            {
                TrackId  = Guid.NewGuid().ToString(),
                Amount   = request.Amount,
                Currency = request.Currency,
                Card     = new CardRequest
                {
                    Name        = "Merchant Test User",
                    Number      = "4953089013607",
                    ExpiryMonth = 11,
                    ExpiryYear  = 2022,
                    Cvv         = "123"
                }
            };

            try
            {
                var response = await _httpClient.CreatePaymentAsync(paymentRequest, _gatewayOptions.ApiKey);

                return(Ok(response));
            }
            catch (ApiException ex)
            {
                // Exception handling logic should be moved somewhere else to keep method clean.

                if (ex.StatusCode == HttpStatusCode.BadRequest)
                {
                    throw new BadRequestException(ex.Message);
                }

                if (ex.StatusCode == HttpStatusCode.Unauthorized)
                {
                    throw new UnauthorizedException(ex.Message);
                }

                throw new GatewayException(ex.Message);
            }
        }
Пример #7
0
        public IActionResult EstimateTransactionDetails([FromBody] MerchantPaymentRequest request)
        {
            if (!request.ValidateObject())
            {
                try
                {
                    ExceptionHandeling.FireError((int)ErrorCode.General_Error, (int)GeneralError.Nullable_Request, Constants.Constants.GeneralErrorDic[GeneralError.Nullable_Request]);
                }
                catch (CodeLabException codelabExp)
                {
                    return(ExceptionHandeling.GenerateErrorResponse(codelabExp));
                }
            }
            MerchantPaymentResponse response = new MerchantPaymentResponse();

            response.Amount             = new Amount();
            response.Amount.ServiceFees = Constants.Constants.TransactionFees;
            response.Amount.Commission  = (long)request.Amount - 1;
            response.Amount.Total       = (long)request.Amount + Constants.Constants.TransactionFees;
            response.TransactionId      = request.TransactionId + "--" + "\n" + "Basic Info:" + request.BasicInfo.ToString();
            return(Ok(response));
        }
Пример #8
0
        public void ReturnCorrectValuesInResponse()
        {
            //Arrange
            var paymentRepo      = new Mock <IPaymentRepository>();
            var profile          = new MerchantPaymentProfile();
            var mapperConfig     = new MapperConfiguration(x => x.AddProfile(profile));
            var paymentPublisher = new Mock <IPaymentPublisher>();

            var mapper = new Mapper(mapperConfig);

            var paymentRequest = new MerchantPaymentRequest
            {
                Amount        = 9.99,
                Currency      = "USD",
                MerchantId    = "1",
                PaymentMethod = new PaymentMethod
                {
                    Cvv             = "123",
                    ExpirationMonth = "05",
                    ExpirationYear  = "2021",
                    Number          = "4319487612345678",
                    PaymentMethodId = new Guid(),
                    Type            = "Visa"
                }
            };


            var controller = new PaymentController(paymentRepo.Object, mapper, paymentPublisher.Object);

            //Act
            var result = controller.SubmitPayment(paymentRequest);
            var value  = ((CreatedAtActionResult)result.Result).Value as MerchantPaymentResponse; //https://github.com/dotnet/AspNetCore.Docs/issues/12533 - ew.

            //Assert
            Assert.That(value.Amount, Is.EqualTo(9.99));
            Assert.That(value.Currency, Is.EqualTo("USD"));
            Assert.That(value.MerchantId, Is.EqualTo("1"));
        }
Пример #9
0
        public void StatusIsSetToADefaultStateOfSubmittedWhenRequestIsMadeByMerchant()
        {
            //Arrange
            var paymentRepo      = new Mock <IPaymentRepository>();
            var profile          = new MerchantPaymentProfile();
            var mapperConfig     = new MapperConfiguration(x => x.AddProfile(profile));
            var paymentPublisher = new Mock <IPaymentPublisher>();

            var mapper = new Mapper(mapperConfig);

            var paymentRequest = new MerchantPaymentRequest
            {
                Amount        = 9.99,
                Currency      = "USD",
                MerchantId    = "1",
                PaymentMethod = new PaymentMethod
                {
                    Cvv             = "123",
                    ExpirationMonth = "05",
                    ExpirationYear  = "2021",
                    Number          = "4319487612345678",
                    PaymentMethodId = new Guid(),
                    Type            = "Visa"
                }
            };


            var controller = new PaymentController(paymentRepo.Object, mapper, paymentPublisher.Object);

            //Act
            var result = controller.SubmitPayment(paymentRequest);
            var value  = ((CreatedAtActionResult)result.Result).Value as MerchantPaymentResponse;

            //Assert
            Assert.That(value.Status, Is.EqualTo(Status.Submitted));
            Assert.That(value.Status, Is.Not.EqualTo(Status.Declined));
        }
Пример #10
0
        private async void DoPaymentService(bool ok)
        {
            if (!ok)
            {
                return;
            }

            if (IsBusy || IsLoading)
            {
                //Message Toast
                ShowSnackBarWithAction(TranslateManagerHelper.Convert("loading_please_wait"), null, TranslateManagerHelper.Convert("ok").ToUpperInvariant());
                return;
            }
            IsLoading = true;

            AccountModel accountSelected;

            if (Currency.Value == _accountLRD.Currency)
            {
                accountSelected = _accountLRD;
            }
            else if (Currency.Value == _accountUSD.Currency)
            {
                accountSelected = _accountUSD;
            }
            else
            {
                var parameters1 = new NavigationParameters
                {
                    { Constants.PopupIsSucces, false },
                    { Constants.PopupMessage, TranslateManagerHelper.Convert("operation_failed") },
                    { Constants.PopupNextPage, FunctionName.MerchantPayment }
                };
                await NavigationService.NavigateAsync(PopupName.SuccessfullPopup, parameters1).ConfigureAwait(false);

                IsLoading = false;
                return;
            }

            // call service feature
            MerchantPaymentRequest mpr = new MerchantPaymentRequest()
            {
                TargetAccountNumber = accountSelected.AccountNumber
            };

            featureDTO f = new featureDTO()
            {
                FeatureName    = "MERCHANT_PAYMENT",
                SenderId       = ApiConstants.CountryPrefix + _userInformation.UserName,
                SenderPassword = _userInformation.Password,
                Amount         = decimal.Parse(Amount.Value),
                TargetId       = MerchantId.Value,
                jsonObjString  = JsonConvert.SerializeObject(mpr)
            };

            bool   issuccess = false;
            string message   = "";

            var mkp = await _makepayment.Execute <featureDTO, MerchantPaymentResponse>(_authentication.GetToken(), f, ApiConstants.SystemId);

            if (mkp != null)
            {
                if (mkp.isuccess)
                {
                    issuccess = true;

                    var mk = mkp.data;
                    UpdateUserAccount(new AccountModel
                    {
                        AccountNumber = mk.AccountUpdate.AccountNumber,
                        Balance       = mk.AccountUpdate.Balance.ToString(),
                        Currency      = mk.AccountUpdate.CurrencyISO,
                        Type          = mk.AccountUpdate.AccountType
                    });
                    message = TranslateManagerHelper.Convert("operation_successfully");
                }
                else
                {
                    issuccess = false;

                    switch (mkp.errcode)
                    {
                    case "EXCEPTION":
                        message = TranslateManagerHelper.Convert("operation_failed");
                        break;

                    case "WrongPincode":
                        message = mkp.msg;
                        break;

                    default:
                        message = !string.IsNullOrEmpty(mkp?.msg) ? mkp.msg : TranslateManagerHelper.Convert("error_occured");
                        break;
                    }
                }
            }
            else
            {
                issuccess = false;
                message   = TranslateManagerHelper.Convert("error_occured");
            }

            var parameters = new NavigationParameters
            {
                { Constants.PopupIsSucces, issuccess },
                { Constants.PopupMessage, message },
                { Constants.PopupNextPage, FunctionName.MerchantPayment }
            };
            await NavigationService.NavigateAsync(PopupName.SuccessfullPopup, parameters).ConfigureAwait(false);

            IsLoading = false;
        }