Exemplo n.º 1
0
        public IActionResult Payout([FromBody] PayoutParameters payoutParameters)
        {
            var userId = _user.GetCurrentUserId();
            var user   = _userService.GetById(userId);

            if (user == null)
            {
                return(Unauthorized());
            }

            if (user.Balance <= 1m)
            {
                return(BadRequest());
            }

            try
            {
                _log.Info($"Creating payout for user: {userId} for {user.Balance}zł");
                _paymentService.CreatePayout(user, payoutParameters);
                _log.Info($"Successfully payed out {user.Balance}zł for user: {userId}");
                _userService.PayoutBalance(user, user.Balance);

                return(Ok());
            }
            catch (Exception e)
            {
                _log.Error(
                    $"Couldn't create payout link, reason: {e.Message}, inner: {e.InnerException?.Message ?? "none"}\n" +
                    $"userId={userId}, " +
                    $"params: {JsonConvert.SerializeObject(payoutParameters)}");
                return(BadRequest(e));
            }
        }
Exemplo n.º 2
0
        public void CreatePayout(User user, PayoutParameters payoutParameters)
        {
            var authToken = GetAuthToken();
            var request   = PreparePayout(user, payoutParameters);
            var result    = ProceedPayout(authToken, request);

            if (!result.Status.StatusCode.Equals("SUCCESS", StringComparison.InvariantCultureIgnoreCase))
            {
                throw new Exception("error creating payout",
                                    new Exception(JsonConvert.SerializeObject(result.Status)));
            }
        }
Exemplo n.º 3
0
 private PayoutRequest PreparePayout(User user, PayoutParameters payoutParameters)
 {
     return(new PayoutRequest
     {
         Account = new Account {
             AccountNumber = payoutParameters.AccountNumber
         },
         CustomerAddress = new CustomerAddress {
             Name = $"{user.FirstName} {user.LastName}"
         },
         Payout = new Payout {
             Amount = ConvertPrice(user.Balance), Description = "Wypłata ze sklepu"
         },
         ShopId = shopId
     });
 }