Esempio n. 1
0
        public override async Task Invoke(CallbackQuery callbackQuery, TelegramBotClient client)
        {
            var message = callbackQuery.Message;
            var data    = callbackQuery.Data.Split("@");

            string invoceLink = "";

            var backButton = new InlineKeyboardButton()
            {
                Text         = "<<< Назад",
                CallbackData = "catalog@coursesList@" + data[2]
            };

            if (data[1] == "check")
            {
                if (int.TryParse(data[2], out int courseNum))
                {
                    Course course = await Catalog.GetCourse(courseNum);

                    var invoiceId = callbackQuery.From.Id.ToString() + "-" + course.InvoiceString;

                    if (await Payment.CheckInvoiceAsync(invoiceId))
                    {
                        await Catalog.AddBayer(course, callbackQuery.From.Id);

                        await client.AnswerCallbackQueryAsync(callbackQuery.Id, "Успешно!");

                        var downloadButton = new InlineKeyboardButton()
                        {
                            Text         = "\uD83D\uDCBE Скачать",
                            CallbackData = "download@" + course.ID
                        };

                        var keyboard2 = new InlineKeyboardMarkup(new List <List <InlineKeyboardButton> >()
                        {
                            new List <InlineKeyboardButton>()
                            {
                                downloadButton
                            },
                            new List <InlineKeyboardButton>()
                            {
                                backButton
                            }
                        });

                        await client.EditMessageTextAsync(
                            chatId : message.Chat.Id,
                            messageId : message.MessageId,
                            text : "Платеж прошел успешно! Теперь можете скачать курс.",
                            replyMarkup : keyboard2);
                    }
                    else
                    {
                        await client.AnswerCallbackQueryAsync(callbackQuery.Id, "Платеж еще не завершен.");
                    }
                }
            }
            else if (data[1] == "create")
            {
                if (int.TryParse(data[2], out int courseId))
                {
                    Course course = await Catalog.GetCourse(courseId);

                    var response = await Payment.CreateInvoiceAsync(
                        amount : course.Price,
                        invoiceID : callbackQuery.From.Id.ToString() + "-" + course.InvoiceString,
                        comment : course.Name);

                    invoceLink = response.PayUrl;
                }

                var openPaymentPageButton = new InlineKeyboardButton()
                {
                    Text = "Перейти к оплате",
                    Url  = invoceLink
                };

                var checkPaymentButton = new InlineKeyboardButton()
                {
                    Text         = "Проверить платеж",
                    CallbackData = "payment@check@" + data[2]
                };

                var keyboard = new InlineKeyboardMarkup(new List <List <InlineKeyboardButton> >()
                {
                    new List <InlineKeyboardButton>()
                    {
                        openPaymentPageButton
                    },
                    new List <InlineKeyboardButton>()
                    {
                        checkPaymentButton
                    },
                    new List <InlineKeyboardButton>()
                    {
                        backButton
                    }
                });

                string sendingText = "<b>[Еще один шаг]</b>\n\nНажмите кнопку [Перейти к оплате] и вы перейдет на страницу оплаты. После завершения опрерации нажмите [Проверить платеж], и если оплата прошла успешно, вы сможете скачать все материалы данного курса.";

                await client.EditMessageTextAsync(
                    chatId : message.Chat.Id,
                    messageId : message.MessageId,
                    text : sendingText,
                    parseMode : Telegram.Bot.Types.Enums.ParseMode.Html,
                    replyMarkup : keyboard);
            }
        }