/// <summary> /// All payment requests are processed and persisted. Bank Service mock respondes with the current payment status /// </summary> /// <param name="paymentRequest">The requested payment as <see cref="PaymentRequest"/>.</param> /// <returns>The result of the payment processing as <see cref="PaymentResponse"/>.</returns> public async Task <PaymentResponse> ProcessPaymentAsync( PaymentRequest paymentRequest, CancellationToken cancellationToken) { PaymentAuthorizationResponse paymentAuthorizationResponse = null; var paymentAuthorizationRequest = new PaymentAuthorizationRequest( paymentRequest.CardNumber, paymentRequest.Expiry, paymentRequest.Amount, paymentRequest.Cvv, paymentRequest.Currency ); paymentAuthorizationResponse = _bankService.AuthorizePayment(paymentAuthorizationRequest); var payment = new Core.Entities.Payment() { CardNumber = MaskCardNumber(paymentRequest.CardNumber), Cvv = paymentRequest.Cvv, Expiry = paymentRequest.Expiry, Currency = paymentRequest.Currency, Amount = paymentRequest.Amount, SuccessStatus = paymentAuthorizationResponse.SuccessStatus }; await _paymentRepository.AddAsync(payment, cancellationToken); return(new PaymentResponse(payment.Id, payment.SuccessStatus)); }
private Payment Map(Core.Entities.Payment payment) { if (payment == null) { return(default(Payment)); } return(new Payment() { Id = payment.Id.ToString(), Currency = payment.Currency, Cvv = payment.Cvv, Amount = payment.Amount, CardNumber = payment.CardNumber, SuccessStatus = payment.SuccessStatus, Expiry = payment.Expiry }); }