Как лучше всего подтвердить нового пользователя после успешной оплаты?

У меня есть процесс регистрации участника, который требует ежемесячной оплаты подписки. У меня запущен сценарий, который может обновлять базу данных моего участника с помощью сценария IPN. Мне любопытно, как лучше всего проверить нового пользователя после того, как он успешно отправил платеж. Вот рабочий процесс, который я представил для этого процесса, но, пожалуйста, сообщите, если вы сделали что-то подобное более прямым способом.

Шаг 1. Новый пользователь заполняет регистрационную форму, в которой указывается его имя пользователя и пароль.

  • В этот момент я бы взял сгенерированный ими пароль и манипулировал им в базе данных. Таким образом, если они попытаются войти в систему, им будет отказано в доступе.

Шаг 2. Пользователь отправляет платеж кредитной картой через стороннего процессора. Сторонний процессор отправляет IPN для обновления базы данных.

  • Используя сценарий IPN, как только их способ оплаты будет подтвержден, я верну пароль к тому, который они создали.

Шаг 3) Пользователь подтверждается успешным платежом.

  • Поскольку их пароль вернулся к тому, который они изначально хотели, пользователь может войти в систему.

Я не вижу причин, по которым это не сработает, но это кажется неуклюжим. Есть ли способ лучше? Спасибо.


person codacopia    schedule 25.08.2011    source источник
comment
Не знаю, кто это был, проголосуйте за законный вопрос и уравновесьте отрицательный голос.   -  person Tony318    schedule 25.08.2011


Ответы (2)


Вместо того, чтобы неправильно устанавливать их пароль, почему бы просто не добавить дополнительное поле с именем «оплачено» и по умолчанию установить его на «0», а затем, если/когда они заплатят, установить на «1».

Затем в сценарии входа просто убедитесь, что в поле установлено значение «1», когда они пытаются войти в систему.

person Ashley    schedule 25.08.2011
comment
Это кажется намного чище. Спасибо за свежий взгляд. - person codacopia; 25.08.2011

Я предполагаю, что они покупают подписку на 30 дней? Если это так, когда приходит платеж, установите для поля DaysLeft значение 30, а затем каждый день вы вычитаете 1 из этого поля. Когда пользователь пытается войти в систему, он получает его имя и проверяет пароль, а затем проверяет, осталось ли дней DaysLeft > 0. Это позволяет ему войти в систему.

Это будет простая хранимая процедура, которую вы можете запускать каждый день и которая будет обрабатывать каждого пользователя. Он также отслеживает, как долго им нужно будет платить снова. Вы можете установить напоминание при входе в систему, когда у них осталось менее 5 дней или что-то в этом роде. Просто некоторые идеи

person Tony318    schedule 25.08.2011
comment
Этот способ также позволяет совершать будущие сделки. Например, скидка при покупке более 1 месяца за раз и возможность оплатить их до истечения месяца. Каждый раз, когда вы получаете сообщение о том, что пользователь платит, вы просто добавляете 30 в столбец DaysLeft для него. Так что, если бы они купили 2 месяца, вы бы сделали 30 * 2 - person Tony318; 25.08.2011
comment
Или используйте отметку времени или что-то подобное, чтобы объявить, когда истекает срок их подписки, чтобы вам не приходилось каждый день возиться с каждой отдельной строкой в ​​базе данных. - person Derek Stobbe; 25.08.2011
comment
@Problematic Хорошая идея, дополнительное время можно просто добавить, увеличив месяц на 1 (или сколько месяцев куплено), конечно, вам нужно будет обнулить поле, если дата прошла. Скажем, у них закончилось время 20.08.2011, а сегодня 25-е. Добавление одного месяца даст им доступ к 20.09.2011 вместо 25.09.2011. Если вы обнуляете столбец, то, прежде чем добавлять время, вы проверяете столбец. Если столбец пуст, возьмите сегодняшнюю дату, а затем добавьте купленные месяцы. - person Tony318; 25.08.2011