С технической стороны алгоритм такой:
- есть аккаунт на сайте, у аккаунта есть значение "балланс"
- подключен платежный гейт (та же робокасса или что-то другое)
- авторизованный пользователь жмет кнопку "пополнить", переходит на платежный гейт, проводит оплату
- гейт возвращает результат (ошибка или успешно), если успешно - обновляем значение "балланс" до нужной суммы, полученной в подтверждении от гейта
- профит!
Дальше, выполняя "покупки" на сайте, значение "балланс" будет обновляться соответствующим образом.