Example #1
0
        public async Task <IEnumerable <MerchantTransactionPayment> > GetAllByMerchantId(int merchantId)
        {
            var transactions = await repository.GetAllByMerchantId(merchantId);

            var merchantTransactions = transactions.Where(t => t != null)
                                       .Select(t =>
            {
                var merchantTransaction = new MerchantTransactionPayment(t);
                merchantTransaction.Payment.MerchantId = merchantId;
                return(merchantTransaction);
            });

            return(merchantTransactions);
        }
Example #2
0
        public async Task <MerchantTransactionPayment> ProcessPayment(MerchantPaymentDetails details)
        {
            var transaction = await paymentApi.ProcessPayment(details);

            var merchantId = details.MerchantId;

            await repository.Insert(transaction, merchantId);

            var merchantTransaction = new MerchantTransactionPayment(transaction);

            merchantTransaction.Payment.MerchantId = details.MerchantId;

            return(merchantTransaction);
        }
Example #3
0
        public async Task <MerchantTransactionPayment> Get(int merchantId, int transactionId)
        {
            var transaction = await repository.Get(merchantId, transactionId);

            if (transaction == null)
            {
                return(null);
            }

            var merchantTransaction = new MerchantTransactionPayment(transaction);

            merchantTransaction.Payment.MerchantId = merchantId;

            return(merchantTransaction);
        }
Example #4
0
        public void PostShouldCallPaymentServiceProcessPayment()
        {
            var paymentRequest = new MerchantPaymentDetailsRequest()
            {
                MerchantId = 123456,
                Payment    = new PaymentDetails()
                {
                    Amount     = 1,
                    CardNumber = 1234123412341234,
                    CCV        = 123,
                    Timestamp  = DateTime.MaxValue
                }
            };

            var payment = new MerchantPaymentDetails(paymentRequest);

            var transaction = new MerchantTransactionPayment()
            {
                Payment       = payment,
                Status        = PaymentStatus.Success,
                TransactionId = 1
            };

            var paymentService = new Mock <IPaymentService>();

            paymentService.Setup(ps => ps.ProcessPayment(It.IsAny <MerchantPaymentDetails>()))
            .Returns(Task.FromResult(transaction));

            var sut = new Controllers.PaymentController(paymentService.Object);

            var result = sut.Post(paymentRequest).Result;

            Assert.NotNull(result);
            paymentService.Verify(ps => ps.ProcessPayment(
                                      It.Is <MerchantPaymentDetails>(pd =>
                                                                     payment.CardNumber == pd.CardNumber &&
                                                                     payment.CCV == pd.CCV &&
                                                                     payment.Amount == pd.Amount &&
                                                                     payment.MerchantId == pd.MerchantId &&
                                                                     payment.Timestamp == pd.Timestamp
                                                                     )), Times.Once);
        }