public async Task <IActionResult> ConfirmPhone(ConfirmPhoneModel confirm)
        {
            var user = confirm.Id == null ? null : await userManager.FindByIdAsync(confirm.Id);

            if (user != null && user.PhoneNumberConfirmed)
            {
                user = null;
            }

            if (user != null && ModelState.IsValid)
            {
                bool phoneError = false;

                if (user.PhoneNumber != confirm.Phone)
                {
                    if (!await usersService.IsPhoneNumberExists(confirm.Phone, user.Id))
                    {
                        await userManager.SetPhoneNumberAsync(user, confirm.Phone);
                    }
                    else
                    {
                        phoneError = true;

                        ModelState.AddModelError("", "Такой телефон уже зарегистрирован, укажите другой.");
                    }
                }

                if (!phoneError)
                {
                    smsService.SendSms(confirm.Phone, await userManager.GenerateChangePhoneNumberTokenAsync(user, confirm.Phone));
                    return(RedirectToAction("ConfirmPhoneCheck", new { userId = user.Id }));
                }
            }

            if (user == null)
            {
                ModelState.AddModelError("", "Ошибочный запрос");
            }

            return(View());
        }
        public IActionResult ResultUrl(string IncSum, string OutSum, string InvId, string SignatureValue, string Shp_id, string Shp_type)
        {
            if (!string.IsNullOrWhiteSpace(SignatureValue))
            {
                var sMrchPass2 = infoOptions.Value.Robokassa.Pass2;

                string sCrc = TextUtilites.MD5Hash($"{OutSum}:{InvId}:{sMrchPass2}:Shp_id={Shp_id}:Shp_type={Shp_type}");

                if (sCrc.ToLower() == SignatureValue.ToLower())
                {
                    double dOutSum;

                    if (double.TryParse(OutSum, NumberStyles.Number, CultureInfo.InvariantCulture, out dOutSum))
                    {
                        double dIncSum;
                        var    sIncSum = IncSum;
                        if (double.TryParse(IncSum, NumberStyles.Number, CultureInfo.InvariantCulture, out dIncSum))
                        {
                            sIncSum = dIncSum.ToString("0.00", CultureInfo.InvariantCulture);
                        }
                        usersService.AddProlongationPayment(Shp_id, dOutSum, Shp_type, $"Robokassa: сумма с комиссией {sIncSum}");
                        smsService.SendSms(infoOptions.Value.SmsNotifyPhone, $"Payment: {dOutSum.ToString("0.00", CultureInfo.InvariantCulture)}");
                    }
                    else
                    {
                        logger.Error($"Invalid OutSum on payment: {OutSum}");
                    }
                }
                else
                {
                    logger.Error($"Invalid payment: [{OutSum}:{InvId}:[PASS2]:Shp_id={Shp_id}:Shp_type={Shp_type}] <> {SignatureValue}");
                }
            }

            return(Content($"OK{InvId}"));
        }