2015-07-14 3 views
0

Я использую PayPal для получения подписных платежей за доступ к службе веб-сайта.Использование полей IPN для подписки PayPal для управления учетными записями пользователей

Я использую IPN PayPal для управления платежами и учетными записями пользователей.

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

Соответственно, теперь я могу сгенерировать из своей базы данных список user_id и информацию извещения.

Итак, теперь мне нужно выяснить, какая логика используется для расчета каждого текущего состояния платежей пользователей и, как следствие, что делать с их учетной записью - продолжать ли разрешать доступ, приостанавливать или даже удалять свою учетную запись пользователя. Это решение все сводится к тому, все еще идут или нет.

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

  1. поле outstanding_balance кажется, содержит именно это - значение, которое должно 2DP денег до сих пор из-за. До сих пор во время моего тестирования эта цифра только когда-либо был 0,00

  2. поле txn_type показывает мне любой из выбора различных кодов: subscr_signup (когда пользователь первоначально устанавливает подписку), subscr_payment (когда платеж появляется, чтобы быть успешным), subscr_cancel (кажется, кажется, что клиент или поставщик отменяет подписку), а subscr_eot (конец срока - это один появляется вскоре после отмены подписки).

Мой импульс искать таблицу для последнего txn_type="subscr_payment" записи для каждой учетной записи пользователя, а также проверить дату этого последнего уведомления прибывшего. Если дата датирована, скажем, 28 дней назад, учетная запись может быть приостановлена ​​... если через 56 дней учетная запись может быть удалена.

Это хорошая идея? Или есть лучшая логика, которую я могу использовать?

ответ

1

Я сделал это. Довольно просто:

  1. Не предоставляйте доступ, пока вы не получите первый платеж. Вы можете получить начальную регистрацию и оплату в любом порядке.
  2. PayPal уведомит вас, если они отменяют подписку или истекает. Когда вы получите любой из них, запретите доступ с даты вступления в силу.
  3. Если самый последний статус оплаты в учетной записи «обратный», приостановите доступ, пока вы не получите «отменять обратное», иначе ситуация будет отклонена каким-либо другим способом.
  4. Не считайте дни. PayPal подсчитывает дни. Все, что вы можете получить от повторения, что вы сами являетесь разногласием, и угадать, кто прав? PayPal. И угадайте, кто не ошибается? Клиент. Вы не хотите наказывать клиента, потому что PayPal позади или имел другую идею о 28 днях от вашего. Вы передали ответственность за коллекции и обновления PayPal: пусть они это сделают.
  5. Остерегайтесь политики строительства в этом. Он должен быть просто механизмом, и он должен быть переориентирован вручную.Например, фактическая оценка того, имеет ли этот пользователь доступ к этому продукту, теперь не должна быть вычислением по истории платежей. Просто простой поиск другой таблицы, которую может изменить ваш IPN-код, но так же могут люди. Например: есть спор. Ты проиграла. Вполне возможно, что дело в том, что бизнес хочет сохранить клиента в течение льготного периода в любом случае. В качестве альтернативы вы можете в extremis хотите немедленно запустить клиента, например. за нарушения правил использования.

  6. Вы можете игнорировать поле баланса. Единственное важное - txn_type.

+0

Мое положение немного отличается, но я думаю, что логика будет очень похожей. В моем случае пользователь настраивает учетную запись и использует ее для бесплатного пробного периода. Они могут сделать это, не разглашая никаких платежных реквизитов ... для пользователей кусочек ума и доброй воли. Затем, в конце их бесплатного испытания, им предлагается подписаться. Когда уведомление приходит к успешному платежу, их счет выходит из режима «бесплатной пробной версии» и переходит в «живой» режим. – Doug

+0

Одним из потенциальных препятствий при проверке самого последнего статуса txn_type является то, что в начале подписки вступают два IPN - 'subscr_signup' и' subscr_payment'. Вот почему я подумал о том, что нужно искать именно для самого последнего 'txn_type = subscr_payment' и посмотреть, как давно это было – Doug

+0

Можете ли вы подробно остановиться на статусе« reverse »и« cancel reverse »? В каких обстоятельствах это происходит, как мне создавать эти статусы с помощью моих тестовых учетных записей и каков точный текст? – Doug

Смежные вопросы