Правильный поток PayPal Adaptive Payments на сайте краудфандинга. Я застрял

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

Я "успешно" реализовал адаптивные платежи PayPal, используя эту библиотеку.

Но, я просто не уверен, как правильно и безопасно проверять успешные/неуспешные платежи и сохранять данные ведьмы в базу данных.

Примечание: это цепной отложенный платеж, я являюсь первичным получателем, а вторичным получателем является создатель краудфандингового проекта. Деньги перечисляются вторичному получателю через заранее определенный период времени.

Поток, который я имею сейчас, выглядит так:

  1. Пользователь нажимает, чтобы купить вознаграждение.
  2. Я использую операцию API 'Pay' для запроса оплаты (уникальный TrackingID включен) и сохраняю запрос в базе данных.
  3. Если запрос успешен, я сохраняю некоторые данные ответа в сессии (TrackingID, PayKey, сумма, ...) и перенаправляю на PayPal...
  4. На этом шаге пользователь может: принять платеж, отменить его или просто закрыть браузер, поэтому я не знаю, что здесь происходит... (рекомендации?)
  5. Если пользователь принимает платеж, он перенаправляется обратно на мой сайт, и я использую данные, сохраненные в сессии, чтобы запросить API-операцию 'PaymentDetails' для получения информации о платеже.
  6. Я сохраняю результат в базе данных и проверяю, равен ли ответ "сумма" запросу "сумма" (для безопасности).
  7. Если все прошло нормально, я обновляю базу данных и связываю идентификатор отслеживания платежа с пользователем и купленной им наградой.
  8. Позже (может пройти несколько месяцев), операция API 'ExecutePayment' запрашивается администратором, и деньги переводятся от нас создателю проекта, а мы берем небольшую комиссию (так работает краудфандинг...)

Теперь, я уверен, что я упускаю много вещей, но я понятия не имею, что:

  1. А как насчет IPN API? Он мне нужен? Где он появляется внутри потока и проверок?
  2. Что я делаю, если пользователь закрывает окно браузера, когда он находится в PayPay (вне моего сайта).
  3. Я слышал, что PayKey действителен 3 часа, как я могу 'ExecutePayment' через несколько месяцев?
  4. Как мне справиться с огромным количеством типов ошибок в PayPal API?
  5. Любые советы или примеры других вещей, о которых мне нужно позаботиться? Безопасность? Ошибки? Другие?

Большое спасибо, мне очень нужен ваш ответ!

5
задан Jonathan 3 February 2012 в 15:17
поделиться