示例#1
0
        /// <summary>
        /// Выполнение платежа
        /// </summary>
        /// <param name="paymentByCard">Сведения о карте и сессии</param>
        public async Task BillPayment(PaymentByCard paymentByCard)
        {
            var paymentInfoCache = cache.GetPaymentInfo(paymentByCard.SessionId);
            var user             = await accountService.GetCurrentUser();

            var order = await orderService.AddOrder(
                user,
                paymentInfoCache,
                new SessionInfo()
            {
                CardNumber = paymentByCard.Card.Number,
                SessionId  = paymentByCard.SessionId
            });

            var earnings = await DistributeMoney(paymentInfoCache);

            await keystoreService.DeleteKey(paymentInfoCache.KeyDto.Id, paymentInfoCache.Game.Id);

            cache.RemovePaymentInfo(paymentByCard.SessionId);
            await smtpService.SendPurchaseNotification(paymentInfoCache);


            await notifierService.SendNotification(new Notification
            {
                Url  = (await accountService.GetUserById(paymentInfoCache.Game.SellerId))?.NotificationUrl,
                Body = new SaleNotification
                {
                    Order         = order,
                    Earnings      = earnings,
                    ValidationKey = GetValidationKey(order, earnings)
                }
            });
        }
示例#2
0
        public async Task <IActionResult> StartPayment(PaymentByCard paymentByCard)
        {
            await paymentService.BillPayment(paymentByCard);

            return(new OkInfoResponse(
                       "Спасибо за покупку! Оплата прошла успешно. Игровой ключ отправлен на Ваш Email."
                       ));
        }
示例#3
0
        /// <summary>
        /// Выполнение платежа
        /// </summary>
        /// <param name="cardInfo">Сведения о карте</param>
        /// <param name="sessionId">Id сессии</param>
        /// <returns>Сведения о платеже</returns>
        public PaymentInfo BillPayment(PaymentByCard paymentByCard)
        {
            PaymentInfo paymentInfo    = cache.GetPaymentInfo(paymentByCard.SessionId);
            bool        cardNumIsValid = new Luhn().SimplifiedAlg(paymentByCard.Card);

            if (!cardNumIsValid)
            {
                throw new ArgumentException("Платеж не выполнен. Некорректный номер платежной карты.");
            }
            cache.RemovePaymentInfo(paymentByCard.SessionId);
            return(paymentInfo);
        }
 public IActionResult Begin(PaymentByCard paymentByCard)
 {
     try
     {
         PaymentInfo paymentInfo = paymentService.BillPayment(paymentByCard);
         return(new OkObjectResult(new
         {
             message = "Платеж выполнен успешно.",
             paymentInfo
         }));
     }
     catch (Exception e)
     {
         return(new BadRequestObjectResult(new
         {
             e.Message
         }));
     }
 }