public TransactionPayment Post(PaymentDetailsRequest payment)
        {
            var transactionDetails = new TransactionPaymentDetails(payment);

            return(new TransactionPayment
            {
                TransactionId = transactionDetails.GetHashCode(),
                Payment = transactionDetails,
                Status = PaymentStatus.Success
            });
        }
Example #2
0
        public void GetShouldCallRepositoryAndReturnTransaction()
        {
            var merchandId    = 1;
            var transactionId = 1;

            var expectedPayment = new TransactionPaymentDetails()
            {
                Amount     = 1,
                CardNumber = 1,
                CCV        = 1,
                SupplierId = "1",
                Timestamp  = DateTime.MaxValue
            };

            var expectedTransaction = new TransactionPayment()
            {
                Status        = PaymentStatus.Success,
                TransactionId = transactionId,
                Payment       = expectedPayment
            };

            var mockApi  = new Mock <IPaymentApi>();
            var mockRepo = new Mock <IPaymentRepository>();

            mockRepo.Setup(a => a.Get(It.IsAny <int>(), It.IsAny <int>()))
            .Returns(Task.FromResult(expectedTransaction));

            var sut = new Services.PaymentService(mockApi.Object, mockRepo.Object);

            var transaction = sut.Get(merchandId, transactionId).Result;

            Assert.NotNull(transaction);

            Assert.Equal(expectedTransaction.Status, transaction.Status);
            Assert.Equal(expectedTransaction.TransactionId, transaction.TransactionId);

            var payment = transaction.Payment;

            Assert.NotNull(payment);
            Assert.Equal(expectedPayment.Amount, payment.Amount);
            Assert.Equal(expectedPayment.CardNumber, payment.CardNumber);
            Assert.Equal(expectedPayment.CCV, payment.CCV);
            Assert.Equal(merchandId, payment.MerchantId);
            Assert.Equal(expectedPayment.Timestamp, payment.Timestamp);

            mockRepo.Verify(a => a.Get(
                                It.Is <int>(m => m == merchandId),
                                It.Is <int>(t => t == transactionId)
                                ), Times.Once);
        }
Example #3
0
        public void ShouldParseApiResponse()
        {
            var transactionPaymentDetails = new TransactionPaymentDetails()
            {
                Amount     = 1,
                CardNumber = 1,
                CCV        = 1,
                SupplierId = SupplierId,
                Timestamp  = DateTime.MaxValue
            };

            var paymentDetails = new MerchantPaymentDetails()
            {
                Amount     = 1,
                CardNumber = 1,
                CCV        = 1,
                MerchantId = 1,
                Timestamp  = DateTime.MaxValue
            };

            var contentStr = $"{{ \"transactionId\": 1, \"status\": 1, " +
                             $"\"payment\": " +
                             JsonConvert.SerializeObject(transactionPaymentDetails) +
                             $"}}";

            var response = new HttpResponseMessage()
            {
                StatusCode = System.Net.HttpStatusCode.OK,
                Content    = new StringContent(contentStr)
            };

            var mockHandler = PaymentApiHelper.CreateMockMessageHandler(response);

            var client = new HttpClient(mockHandler.Object);
            var sut    = new External.PaymentApi(client, DummyUrl);

            var result = sut.ProcessPayment(paymentDetails).Result;

            Assert.NotNull(result);

            var transaction = result as TransactionPayment;

            Assert.NotNull(transaction);

            Assert.Equal(1, transaction.TransactionId);
            Assert.Equal(PaymentStatus.Success, transaction.Status);
            Assert.Equal(SupplierId, transaction.Payment.SupplierId);
        }
Example #4
0
        public ReservationTransaction AddStripeChargeToPendingReservation(string currentUserId, string userIdFor, int reservationId, string tokenId, decimal amount)
        {
            var stripePaymentDetails = new TransactionStripeDetails
            {
                TokenId = tokenId
            };

            var transactionPaymentDetails = new TransactionPaymentDetails
            {
                TransactionStripeDetails = stripePaymentDetails
            };

            var resTransaction = new ReservationTransaction
            {
                TransactionPaymentDetails = transactionPaymentDetails,
                DateCreated   = DateTime.UtcNow,
                DateCompleted = DateTime.UtcNow,
                UserTransactionCompletedById = currentUserId,
                UserTransactionIsForId       = userIdFor,
                TransactionType     = Convert.ToInt32(TransactionTypeEnum.CHARGE),
                AmountCharged       = amount,
                TransactionStatusId = Convert.ToInt32(TransactionStatusEnum.PENDING)
            };


            var trans = new TransactionsForReservations
            {
                DateLinked             = DateTime.UtcNow,
                ReservationTransaction = resTransaction,
            };


            var reservation = this.dbContext.ReservationGroup.FirstOrDefault(x => x.Id == reservationId);

            if (reservation.StatusId != Convert.ToInt32(ReservationGroupStatusEnum.PROCESSING))
            {
                throw new Exception();
            }

            reservation.StatusDate = DateTime.UtcNow;

            trans.ReservationGroupId = reservation.Id;

            this.dbContext.TransactionsForReservations.Add(trans);

            return(resTransaction);
        }