Комментарии 7
сайт всё равно пригодился для размещения оферты
Чем оферта на сайте лучше оферты в боте?
Открывать форму банка тоже лучше в тележке.
При стеке gas + rtdb не нужен хостинг php, а rtdb не только значительно быстрее, но и часто сильно удобнее. Например, тревога насчёт задвоения просто отсутствует, если писать по уникальному id, т.е. сколько бы раз запись не добавилась, она просто заменит сама себя.
У вас потенциальный баг, он может стать неожиданным и потом долго копать чего не так. Кейс - вам банк отправляет запрос с данными мол вот платеж. Вы в базу пишете, отправляете ответ 200 ок. И тут вдруг сеть падает или даже приложение ваше. Ответ не доходит. Банк снова шлёт вам данные - но они уже есть, у вас там уникальный индекс и база кидает ошибку мол нельзя. И всё, поехал бесконечный цикл запросов. Но если таки кейс такой предусмотрен - хорошо.
Второй возможный кейс - пользователь реально два раза что-то купить хочет. Имеет смысл дать ему это, но менять айди покупки, иначе валидация не пройдёт. Тут правда потенциальный баг тоже можно поймать - клиент купил, но ему ответ не дошел, но решил что просто оплата не прошла, второй раз оплачивает - и ок. А потом обнаруживает что два раза купил. Стоит обрабатывать и такой кейс. Обычно это запрет на покупку того же товара на ту же сумму на стороне самого эквайринга. Но нужно будет быть готовым вернуть назад деньги если таки прошло дважды. Впрочем, это очень тонкий кейс, но за долгое время может встретится. Следует алгоритм продумать на случай такого.
К слову, писал про некоторые такие кейсы статью - https://habr.com/ru/companies/exante/articles/826974/
Уверенность в том что ответ то дойдет если запрос дошел - обыденность.
Спасибо за предупреждение, первого сценария у меня не возникнет: я банку в любом случае отвечу "OK", даже если данные из его уведомления у меня уже в базе есть.
Повторные покупки тоже не проблема, потому что к id пользователя добавляется уникальный номер заказа. Номер заказа генерируется в момент создания ссылки.
Нету такого бага.
Т. К. Ссылка на оплату - это своего рода индивидуальный запрос денег, выставление счета с I'd этого счета
Подключение оплаты Тинькофф к Telegram-боту на чистом php