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