Exemplo n.º 1
0
        public static IActionResult Status([HttpTrigger(
                                                AuthorizationLevel.Function,
                                                "GET",
                                                Route = "fakeBank/payment/{paymentRequestId}")]
                                           HttpRequestMessage request, string paymentRequestId)
        {
            var bankApi = new FakeBankApi();
            var handler = new GetPaymentHandler(bankApi);

            try
            {
                var paymentRequest = handler.Handle(paymentRequestId);
                return(new OkObjectResult(paymentRequest));
            }
            catch (NotFoundException)
            {
                return(new NotFoundResult());
            }
        }
        public static async Task <IActionResult> Status([HttpTrigger(
                                                             AuthorizationLevel.Function,
                                                             "POST",
                                                             Route = "fakeBank/payment/")]
                                                        HttpRequestMessage request)
        {
            // Auth checks would be done here against or at Api Gateway level to ensure
            // person making request has access to do so for the merchant.

            var bankApi            = new FakeBankApi();
            var paymentHistoryRepo = new PaymentHistoryRepo();
            var handler            = new ProcessPaymentHandler(paymentHistoryRepo, bankApi);

            try
            {
                var paymentRequest = DeserializeRequestFromBody(await request.Content.ReadAsStringAsync());

                var validation = new ProcessPaymentValidator().Validate(paymentRequest);
                if (!validation.IsValid)
                {
                    return(new BadRequestObjectResult(JsonConvert.SerializeObject(validation.Errors)));
                }

                var isCompleted = handler.Handle(paymentRequest);

                if (isCompleted)
                {
                    return(new OkObjectResult(paymentRequest));
                }

                return(new BadRequestObjectResult("Payment Request Unsuccessful"));
            }
            catch (BadRequestException ex)
            {
                return(new BadRequestObjectResult(ex.Message));
            }
        }