Я разрабатываю сайт краудфандинга (аналогичный Kickstarter) с использованием фреймворка CodeIgniter.
Я "успешно" реализовал адаптивные платежи PayPal, используя эту библиотеку.
Но, я просто не уверен, как правильно и безопасно проверять успешные/неуспешные платежи и сохранять данные ведьмы в базу данных.
Примечание: это цепной отложенный платеж, я являюсь первичным получателем, а вторичным получателем является создатель краудфандингового проекта. Деньги перечисляются вторичному получателю через заранее определенный период времени.
Поток, который я имею сейчас, выглядит так:
- Пользователь нажимает, чтобы купить вознаграждение.
- Я использую операцию API 'Pay' для запроса оплаты (уникальный TrackingID включен) и сохраняю запрос в базе данных.
- Если запрос успешен, я сохраняю некоторые данные ответа в сессии (TrackingID, PayKey, сумма, ...) и перенаправляю на PayPal...
- На этом шаге пользователь может: принять платеж, отменить его или просто закрыть браузер, поэтому я не знаю, что здесь происходит... (рекомендации?)
- Если пользователь принимает платеж, он перенаправляется обратно на мой сайт, и я использую данные, сохраненные в сессии, чтобы запросить API-операцию 'PaymentDetails' для получения информации о платеже.
- Я сохраняю результат в базе данных и проверяю, равен ли ответ "сумма" запросу "сумма" (для безопасности).
- Если все прошло нормально, я обновляю базу данных и связываю идентификатор отслеживания платежа с пользователем и купленной им наградой.
- Позже (может пройти несколько месяцев), операция API 'ExecutePayment' запрашивается администратором, и деньги переводятся от нас создателю проекта, а мы берем небольшую комиссию (так работает краудфандинг...)
Теперь, я уверен, что я упускаю много вещей, но я понятия не имею, что:
- А как насчет IPN API? Он мне нужен? Где он появляется внутри потока и проверок?
- Что я делаю, если пользователь закрывает окно браузера, когда он находится в PayPay (вне моего сайта).
- Я слышал, что PayKey действителен 3 часа, как я могу 'ExecutePayment' через несколько месяцев?
- Как мне справиться с огромным количеством типов ошибок в PayPal API?
- Любые советы или примеры других вещей, о которых мне нужно позаботиться? Безопасность? Ошибки? Другие?
Большое спасибо, мне очень нужен ваш ответ!
задан Jonathan 3 February 2012 в 15:17
поделиться