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); }
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); }
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); }
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); }