public async Task <IActionResult> InitiatePayment(
            [FromBody] Card cardDetails, [FromQuery] Guid sessionId, [FromQuery] string callback
            )
        {
            await _repository.SessionIsActiveAsync(sessionId);

            _validator.ValidateCard(cardDetails);
            if (!String.IsNullOrWhiteSpace(callback) &&
                Uri.IsWellFormedUriString(callback, UriKind.Absolute))
            {
                await _notifier.SendAsyncNotification(new Uri(callback), sessionId.ToString());
            }
            await _repository.MakePaymentAsync(sessionId, cardDetails);

            return(Ok());
        }
        public IActionResult Post([FromBody] SubmittedCardModel card)
        {
            if (card == null || card.CardNumber == null || String.IsNullOrEmpty(card.CardNumber))
            {
                return(StatusCode(422));
            }

            if (!_numberService.IsDigitsOnly(card.CardNumber))
            {
                return(StatusCode(422));
            }

            var validationResult = _cardValidator.ValidateCard(new Card(card.CardNumber));

            return(new JsonResult(new ValidationResultModel(validationResult.CardType, validationResult.ValidationResult), jsonSerializerSettings));
        }