События PayPal никогда не отправляются?
У нас есть производственная игра, в которой PayPal используется в качестве одного из способов оплаты. В некоторых случаях мы никогда не получаем уведомлений о веб-крюках.
Вот последовательность, которая происходит. Иногда мы получаем webhook из этой последовательности, а иногда нет. На сервере мы используем Java API. Все это относится к рабочим (НЕ ПЕРЕДАЧНЫМ) серверам PayPal.
- После того, как пользователь выбирает продукт, он вызывает наш сервер, который создает объект Payment через Payment.create(). В этот момент состояние "создано", и мы перенаправляем пользователя на утверждение_, возвращаемое в ссылках.
- Пользователь подтверждает оплату и отправляется обратно на наш сервер. Мы получаем оплату через Payment.get(), которая прошла успешно и имеет состояние "создано".
- Мы осуществляем оплату с помощью PaymentExecution. Это возвращает платеж с обновленным состоянием "одобрено".
- Затем мы ждем WebHook, чтобы сообщить нам, что оплата была завершена. Иногда этот веб-крючок никогда не отправляется, поэтому покупка не завершена. При проверке консоли PayPal не происходит событие webhook для платежа, даже если платеж отображается как завершенный.
Вопросы здесь:
- Это правильная последовательность? Или чего-то не хватает?
- Разве платеж не должен быть "одобрен", когда пользователь возвращается из PayPal, а не "создан"?
- Разве платеж не должен быть "завершен" или "in_progress" после успешного выполнения?
- Как правильно обращаться со случаем, когда веб-крючок никогда не прибывает? Продолжать опрашивать платеж до обновления состояния?
1 ответ
Я не вижу никаких проблем с вашей последовательностью. Вы также можете сослаться на шаги здесь в качестве примера - https://developer.paypal.com/docs/integration/web/accept-paypal-payment/
Что касается Webhooks, вы упомянули, что иногда вы получаете Webhooks, и только иногда вы этого не делаете. Можете ли вы предоставить идентификатор корреляции или отладки для вызовов, когда вы не видите Webhook? Будем с трудом стрелять и возвращаться?