PHP скрипт членства + PayPal IPN, какую информацию я запрашиваю и сравниваю? - PullRequest
3 голосов
/ 05 июня 2011

Итак, у меня есть продукт. Чтобы пользователи могли его купить, им необходимо создать учетную запись. Позже эта учетная запись будет использоваться для доступа к моему продукту.

У меня такой вопрос: какую информацию я запрашиваю у пользователя при регистрации (до оплаты)? Мне нужно что-то сравнивать, когда Paypal отправляет Уведомление. Под этим я подразумеваю следующее: если я спрашиваю только имя пользователя и пароль - как я узнаю, что именно тот конкретный пользователь заплатил, и соответственно обновит базу данных?

Очевидно, я бы хотел также указать имя, фамилию и E-Mail. Причиной, по которой я представил описанную выше ситуацию, было то, что я вижу другие сайты участников, которые запрашивают электронную почту (не электронную почту PayPal), но они не могут быть уверены, что имя, фамилия и / или электронная почта соответствуют информации, которую имеет клиент их PayPal.

Вкратце: как я могу обновить учетную запись клиента при получении уведомления (установите для поля «Активно» в базе данных значение «ИСТИНА» или что-то в этом роде) и какую информацию я проверяю / проверяю?

Если мой вопрос недостаточно ясен, пожалуйста, не стесняйтесь, дайте мне знать. :)

1 Ответ

5 голосов
/ 05 июня 2011

Ну, я не думаю, что это на самом деле отличается от обычного «откуда я действительно знаю, что продукт X действительно был оплачен через PayPal». Ваш «продукт» здесь представляет собой членскую подписку, а не физический продукт, в противном случае он по сути тот же.

Когда вы отправляете пользователя в PayPal, просто отправьте уникальный идентификатор пользователя вместе с данными PayPal. (Вы можете просто использовать идентификатор пользовательской таблицы, если не хотите создавать «продукт» для продажи.) Передайте это, используя либо поле «custom», либо поле «item_number». PayPal передаст вам обе эти данные в IPN, и вы можете использовать их для проверки того, что для этого пользователя был произведен платеж.

Если вы беспокоитесь о том, что пользователи могут подделывать платежи от имени других пользователей, вы можете: а) зашифровать все данные, которые вы отправляете в PayPal, и б) настроить параметры PayPal, чтобы принимать только зашифрованные данные корзины покупок для вашей учетной записи.

РЕДАКТИРОВАТЬ : много дополнительной информации о передаче информации в PayPal:

Существует множество переменных, которые вы можете использовать для отправки информации в PayPal. Предполагая, что вы используете стандарт платежей через веб-сайт и функциональность корзины покупок, это можно разделить на две группы.

  1. Поля, которые применяются ко всей транзакции. См. Таблицу 4 в этом документе: https://www.x.com/docs/DOC-1332#id08A6HH0D0TA
  2. Поля, которые относятся к отдельному предмету. См. Таблицу 5 в том же документе.

Не вся эта информация передается вам обратно в IPN. Чтобы увидеть, что вам передают в IPN, посмотрите раздел «Пример сообщения IPN» здесь: https://cms.paypal.com/cgi-bin/marketingweb?cmd=_render-content&content_ID=developer/e_howto_admin_IPNIntro.

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

Я предлагаю вам использовать переменную с именем "custom" для этой цели. (См. Таблицу 4: HTML-переменные для платежных транзакций.)

Что именно вы передадите в "пользовательскую" переменную, зависит от вас. Вы можете отправить а) идентификатор пользователя в вашей пользовательской таблице, б) его зарегистрированный адрес электронной почты на вашем сайте, в) некоторый хэш одного из них ... это не имеет большого значения, если он однозначно идентифицирует пользователя , чтобы при получении IPN вы могли сказать: «Я знаю, что этот платеж предназначен для пользователя X».

...