Корректный поток адаптивных платежей PayPal на сайте краудфандинга. Я застрял - PullRequest
5 голосов
/ 03 февраля 2012

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

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

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

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

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

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

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

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

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

1 Ответ

9 голосов
/ 04 февраля 2012
  1. IPN автоматически отправит данные POST вашему «слушателю» (который вам нужно будет разработать) для автоматизации процедур постоплаты. Например, вы можете обновить базу данных, обратиться к сторонним веб-службам, сгенерировать квитанции электронной почты и т. Д. В IPN, чтобы эти события происходили автоматически каждый раз, когда вы получаете деньги на свой счет PayPal. Вы также можете настроить его для обработки возвратов, споров и других событий. Это не обязательно, но часто очень полезно.

  2. Это одна из причин, по которой IPN может быть полезен. IPN будет запущен независимо от того, вернется ли пользователь на ваш сайт или нет. Если вы выполняете процедуры обработки пост-платежей на своей странице благодарности или что-то в этом роде, я бы порекомендовал вам перенести ее в решение IPN.

  3. PayKey действительно действителен в течение 3 часов при использовании в качестве токена. Однако, когда вы вызываете Pay с ActionType CREATE, он устанавливает задержанный платеж, и PayKey действует до 90 дней.

  4. Информация об ошибке всегда возвращается в ответ в том же формате. Вы можете просто регистрировать или отображать ошибки соответственно на основе этого стандартного ответа.

  5. Звучит так, как будто ты в значительной степени идеален.

...