Правильный поток 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. Как мне справиться с огромным количеством типов ошибок в API PayPal?
  5. Какие-нибудь советы или примеры других вещей, о которых мне нужно позаботиться? Безопасность? Ошибки? Другие?

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


person Jonathan    schedule 03.02.2012    source источник
comment
не возражайте, если вы можете сказать мне, что вы сделали для решения шага 4. На этом шаге пользователь может: принять платеж, отменить или просто закрыть браузер, поэтому я действительно не знаю, что здесь происходит ... (рекомендации?) У меня есть такое же затруднительное положение - когда пользователь перенаправляется на PayPal после того, как я создал PayKey (я сохраняю paykey и tracking_id в базе данных для дальнейшего использования). Я могу обрабатывать ответ через IPN и через обратные URL-адреса, но если пользователь закрывает браузер, я застрял в состоянии CREATE транзакции, которая ожидает уведомления. Извините за вопрос в комментариях, но у меня точно такая же проблема.   -  person Elijan Sejic    schedule 29.11.2012


Ответы (1)


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

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

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

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

  5. Похоже, ты по большей части на высоте.

person Drew Angell    schedule 04.02.2012