Создаю коммерческий проект.
Нужно сделать, чтобы пользователь мог пополнять баланс в личном кабинете.
Встает вопрос, как это сделать?
Во всех платежных системах есть success url, на который перебрасывает после оплаты.
Это полезно, если продаешь конкретный товар, можно вставить ссылку на файлообменник и тд.
Но как сделать пополнение баланса?
Нужно знать айди пользователя, нужно знать сумму, на которую была произведена покупка и прочее, но в success url переменные не запихнешь, да и пользователь может так сколько угодно на такие url заходить и накручивать себе деньги.
P.s. простите за, возможно, нубскую тему и обьяснение, но я сталкиваюсь с таким первый раз и реально не понимаю, как решить такую тривиальную задачу.
Пользователь не может знать адрес вашего обработчика, на адрес обработчика обращается сервер платёжки после определенного события. В доках всегда указано как защититься от скама, от фильтрации ip до шифрования.
Также всегда присутствует возможность задать пользовательский параметр, в вашем случае айди юзерам в вашей системе, значение параметра будет передано сервером платёжки на ваш обработчик.
Success URL это лишь адрес страницы, на которую пользователя перенаправит после платежа. На данной странице можно отобразить статус транзакции, ведь на ваш обработчик уже должны были прийти данные.
1) Вы в своей БД заводите запись: пользователь P хочет пополнить баланс на сумму N. У записи должен быть ID.
2) Перенаправляете пользователя на форму оплаты суммы N, передавая также в скрытом поле ID (эта форма обычно - у платёжной системы).
3) После оплаты, платёжная система уведомит вас, что оплата по ID прошла (вызовом по заданному вами URL-у). Для безопасности, вы можете проверять у себя в скрипте, что вызов произошёл именно со стороны платёжной системы путём, например, проверки по IP (порой он оговаривается при подключении к платёжке). Либо же платёжка будет передавать секретный код, либо ещё как-то (опять же - зависит от платёжки).
4) Вы в БД помечаете транзакцию с переданным вам ID как выполненную и накидываете пользователю деньги в вашей системе.
Про бд и айди я понимаю прекрасно.
Но "После оплаты, платёжная система уведомит вас, что оплата по ID прошла (вызовом по заданному вами URL-у)". Вот тут я не могу понять, каким образом агрегатор передаст на мой URL нужный айди? Этого я не нашел ни в одном API уже 10 посредников, которых я посмотрел.