Paypal подписки IPN - проблема с пользователями, подписывающимися несколько раз - PullRequest
2 голосов
/ 27 марта 2010

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

По большей части это работает хорошо, но есть одна случайная проблема, с которой я столкнулся.

Обычно, если пользователь отменяет свою подписку, я жду уведомления об окончании срока (subscr_eot), прежде чем отключить доступ к моему сайту.

Так что, если они предоплатят за весь месяц, а затем сразу же откажутся, у них останется доступ до конца месяца (как и должно быть).

Но у некоторых пользователей возникает эта проблема, когда они:

  1. Отменить подписку
  2. Прежде чем наступит "конец срока", они решают переподписаться
  3. Когда для первой подписки наступает «конец срока», мое приложение получает уведомление и отправляет пользователю электронное письмо с сообщением типа «Ваша учетная запись отключена. Если вы когда-нибудь захотите снова зарегистрироваться, вы можете повторно подписаться, нажав здесь ".
  4. Это смущает их, потому что они думают ... это странно, я думал, что подписался как неделю назад (и они сделали). Так что они идут подписаться снова. Теперь у них есть две одновременно работающих подписки на мой сайт, и я получаю письмо поддержки через месяц или два («если бы вы дважды выставили мне счет в этом месяце!»)

Так что я не нашел хорошего способа исправить это. Я думаю, что лучшим решением было бы сделать дополнительный вызов API, когда получено уведомление об окончании срока, которое спрашивает PayPal: «Эй, этот человек уже повторно подписался?». Если это так, то нет необходимости запускать эту электронную почту. Но я еще не видел способа сделать этот вызов API.

Другое решение состоит в том, чтобы немедленно отключить их учетную запись, когда они отменяют (уведомление «subscr_cancel»), но затем я получаю различные сердитые письма поддержки «Эй, я сделал предоплату за весь месяц, почему моя учетная запись уже отключена !!».

Кто-нибудь еще решил это?

Ответы [ 4 ]

1 голос
/ 11 апреля 2011

Я знаю, что это старая ветка, но я не видел реального ответа на этот вопрос, поэтому, если кому-то интересно, как я это сделал, вот решение.

Если кто-то отменит свою учетную запись (subscr_cancel) до истечения срока его действия (subscr_eot), я бы настроил ее в своей базе данных для ее обработки. Например, если в вашей базе данных есть таблица «Users», просто добавьте новое поле «int» и назовите его «Term». По умолчанию это поле должно быть установлено на «0». Затем, внутри вашего IPN, настройте его так, чтобы, если пользователь отменяет свою подписку до конца срока, он устанавливает для поля «Срок» для этого пользователя значение «1». Если этот пользователь возвращается и повторно подписывается на ваши услуги, попросите IPN обновить поле «Срок» для этого пользователя до «0».

Затем, внутри вашего почтового скрипта, просто проверьте его в поле «Срок» для этого пользователя, когда он запускается в конце срока. Если установлено значение «0», то не отправляйте электронное письмо. Если установлено значение «1», отправьте электронное письмо со словами «Adios!»

0 голосов
/ 02 августа 2013

Как предотвратить дублирование платежей PayPal?

Вы хотели бы добавить уникальный идентификатор к параметру "invoice"; и включите "Блокировать повторяющиеся платежи" в разделе "Профиль"> "Мои инструменты продаж" в своей учетной записи на сайте www.paypal.com

0 голосов
/ 29 июня 2010

Цитировать: Re: Когда выдается subscr_eot?

Если вы начали принимать подписки после ноября 2009 года, идентификаторы подписчиков будут начинаться с «I-» и не будут возвращать «subscr_eot» в конце их времени. Paypal ожидает, что вы будете следить за тем, как долго они будут подписаны, и обновлять аккаунт, чтобы понизить рейтинг (или любой другой) по истечении этого периода, если клиент не заплатит снова в это время.

0 голосов
/ 30 марта 2010

Насколько я знаю, для проверки подписок не существует API-интерфейса PayPal, если вы используете кнопки оплаты на веб-сайте Standard / Pro, которые, как я полагаю, есть у вас.

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

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

...