コード例 #1
0
        public async Task <IActionResult> CheckoutRedirect([FromQuery][Required] string checkout_id)
        {
            Console.WriteLine(Request.GetEncodedUrl());
            if (string.IsNullOrEmpty(checkout_id))
            {
                throw new KnownException("Invalid checkout_id");
            }

            var order = await OrdersRepo.FindOne(o => o.WePayCheckoutId == checkout_id);

            if (order == null)
            {
                throw new KnownException("Nu am găsit o comandă asociată");
            }

            var wePayRequestBody     = new { checkout_id };
            var wePayRequestBodyJson = new StringContent(JsonConvert.SerializeObject(wePayRequestBody), Encoding.UTF8,
                                                         "application/json");
            var response =
                await WePayHttpClient.PostAsync("https://stage.wepayapi.com/v2/checkout", wePayRequestBodyJson);

            var responseText = await response.Content.ReadAsStringAsync();

            try
            {
                response.EnsureSuccessStatusCode();
                var responseJson = JsonConvert.DeserializeObject <Dictionary <string, object> >(responseText);
                var state        = responseJson["state"].ToString();
                if (state == "released" || state == "authorized")
                {
                    order.State = OrderState.Paid;
                    await DataLayer.SaveChangesAsync();
                    await ProcessOrder();
                }

                return(Ok(state));
            }
            catch
            {
                throw;
            }

            return(Ok());
        }