2017-02-09 3 views
2

Каков рекомендуемый рабочий процесс для хранения моего идентификатора клиента при покупке подписки на услугу?Информация о клиенте при использовании PayPal IPN

Вот мое мышление:

  1. Пользователь решает купить
  2. пользователь создает учетную запись или журналы (если не вошли в ранее)
  3. переменные сессии устанавливаются
  4. ли Paypal сделки
  5. Получите информацию IPN и добавьте правильную переменную сеанса в базу данных

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

Похоже, что payer_id не очень надежный способ сделать это, поскольку он может измениться. Поэтому я действительно ищу способ привязать результаты этой транзакции к существующему клиенту в моей БД, чья сессия будет активной в момент покупки. Одна из проблем заключается в том, что мне придется иметь дело с ним в ответе IPN вместо ответа SUCCESS, поскольку пользователь может закрыть браузер после оплаты. Мысли?

+0

Мне также интересно узнать этот ответ. Как сторонние заметки, вы реализовали пользовательский портал reg и paypal, поручив yoruself, или вы использовали какие-либо существующие пакеты? –

+0

Моя реализация проистекает из этого подхода [здесь] (http://www.codexworld.com/paypal-standard-payment-gateway-integration-php/) –

+0

Вы должны сохранить идентификатор пользователя в переменной ['custom'] (https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/), чтобы ваш обработчик IPN имел доступ к идентификатору. – Mikey

ответ

0

Я нашел приемлемое решение (довольно простое, на самом деле), и я отправляю его здесь, так как я не мог найти его нигде. Способ сделать это состоит в том, чтобы добавить скрытое поле в форму, которая принимает идентификатор пользователя вашего зарегистрированного пользователя.

<input type="hidden" name="custom" value="<?php echo $your_userid; ?>"> //set somewhere else in the code 

Затем на вашем IPN URL, что значение поля формы будет доступен обратно к вам через POST:

$userid_to_log = $_POST['custom']; 

Добавить новый столбец платежей таблицы с именем идентификатора пользователя (например) Наконец, включите это поле в вашем заявлении вставки:

$db->query("INSERT INTO payments(item_number,txn_id,payment_gross,currency_code,payment_status, userid) VALUES('".$item_number."','".$txn_id."','".$payment_gross."','".$currency_code."','".$payment_status."','".$userid_to_log."')"); 

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