Сторонняя платежная система должна информировать вас об успешной транзакции независимо от того, что делает пользователь.
Например, в PayPal на ваш сервер отправляется IPN (мгновенное уведомление о платеже) в виде данных POST на указанный вами URL-адрес. Затем ваш сервер проверяет с помощью Paypal, что транзакция является подлинной, и, если да, обновляет запись базы данных, чтобы указать, что подписка действительна. В какой-то момент в будущем PayPal может или не может затем перенаправить пользователя обратно на ваш сайт. («Не может» может произойти в таких случаях, как закрытие браузера, нажатие кнопки «Назад» или переход на новый URL-адрес)
Обратите внимание, что этот "разговор" между Paypal и вашим сервером не зависит от сеанса пользователя - это "личный разговор" между вами и PayPal о транзакции этого пользователя.
Очевидно, что возможны сбои связи и сбои сервера, поэтому, если Paypal не получит запрос проверки от вашего сервера немедленно, он будет периодически отправлять повторные попытки на ваш сервер, чтобы убедиться, что транзакция в конечном итоге завершена.
Если в вашей платежной системе отсутствует хотя бы какой-то базовый механизм обеспечения надежности транзакций, выберите другого поставщика. Скорее всего, они это сделают, но вам нужно будет правильно реализовать все на вашем сервере, чтобы убедиться, что система работает правильно.
P.S. Вполне нормально требовать, чтобы пользователь вошел в систему (и, таким образом, был зарегистрирован в базе данных), прежде чем он начнет какую-либо финансовую транзакцию. Вам необходимо собрать всю необходимую информацию, прежде чем они пойдут на покупку, поскольку после покупки у вас нет возможности гарантировать, что они вернутся к вам для предоставления какой-либо дополнительной информации.