Я пытаюсь интегрировать API PayPal REST в свое веб-приложение Symfony 2, но мне трудно понять, как именно выглядит весь рабочий процесс:
В документации PayPal описаны следующие шаги для принятия платежа. . Для моделирования этих шагов можно использовать PayPal Playground:
- Получите токен доступа
- Создайте объект
Payment
, запросив API - Перенаправить пользователя на
approval url
, полученный в ответеPayment
- После того, как пользователь утвердил платеж на странице PayPal, он перенаправляется обратно на мою страницу с помощью ссылки успеха, определенной в объекте
Payment
. Используйте полученную информацию для выполнения платежа. - Платеж завершен со статусом
approved
Из документации: После оплаты < / strong> завершено, это называется продажей. Затем вы можете найти распродажу и вернуть ее.
Пока все хорошо. НО: Где в этом рабочем процессе используются / запускаются Webhooks? Я определил групповой веб-перехватчик (принимающий все возможные события) на панели инструментов разработчика PayPal.
По моим наблюдениям, моя система получает событие Webhook через 1-2 минуты (!) после, когда пользователь был перенаправлен обратно на успешную ссылку и после оплаты был выполнен (шаг 4).
Помимо этой большой задержки между выполнением платежа и получением Webhook, этот рабочий процесс означает, что я получаю Webhook только ПОСЛЕ обработки успешной ссылки. Это означает, что обработка успешной ссылки абсолютно необходима для завершения платежа. Это правильно?
Нужно ли мне использовать Webhooks?
Я уже задавал этот вопрос за несколько дней до этого, и ответ nifr вполне разумен: нельзя доверять пользователю следовать любому перенаправлению URL, но должен полагаться только на события Webhook.
Однако это противоречит наблюдениям, которые я описал ранее, поскольку я никогда не получу Webhook без обработки URL-адреса перенаправления ...
Таким образом, обработка события PAYMENT.SALE.COMPLETED
webhook не имеет большого смысла, поскольку это уже должно быть сделано при обработке URL-адреса перенаправления. Верно?
Однако обрабатывать обновления ожидающих платежей, обрабатывать возвраты или отмененные платежи и т. Д. Возможно только путем прослушивания этих событий.
Итак, ответ: используйте Webhooks только для получения обновлений о ранее совершенных платежах. Верно?
Итак, основные вопросы:
- Пятиэтапный процесс приема платежей ничего не говорит об использовании Webhooks. В этом нет большого смысла, потому что без Webhooks можно было бы пропустить события обновления и т. Д.? Итак, действительно ли возможно реализовать полный рабочий процесс оплаты без Webhooks?
- Если да, как в этом случае обрабатываются обновления (возврат средств, ожидание и т. Д.)?
- Если нет, какова правильная стратегия / время для выполнения заказа, поскольку получение и обработка веб-перехватчика занимает довольно много времени?