Spring-контроллер вызывается дважды в тестовой среде - PullRequest
0 голосов
/ 15 ноября 2018

Я долго сталкивался с проблемой с пружинным контроллером. Даже после долгих исследований проблем перенаправления контроллера пружины, которые не дали никакого решения.

Проблема: Мы осуществляем некоторые платежные интеграции, такие как Sofort, AliPay и PayPal, используя Spring. Все работает нормально на локальной машине (ПК), в то время как это вызывает проблему с PayPal в тестовых средах (серверы развертывания в облаке), однако все остальные типы платежей работают нормально.

Существует URL-адрес обработчика ответа PayPal (Controller) на торговом сервере, где он обрабатывает ответ платежа PayPal, URL-адрес обработчика вызывается дважды. Следовательно, он не дает ожидаемых результатов, поскольку его следует вызывать только один раз.

URL-адрес обработчика ответов PayPal: нас / EN-US / выписка / оплаты / PayPal / handleResponse? лексема = EC-ХХХХХХХХХХХХ & PayerID = XXXXXX

Замечания:

а) Всякий раз, когда у нас возникают такие проблемы, когда URL вызывают дважды. На сетевой вкладке Chrome JS может быть проблемой. Но мы не нашли там такой истории.

b) Мы используем балансировщик нагрузки в наших тестовых средах. Иногда балансировщик нагрузки заставляет URL-адрес вызываться дважды. Но мы не нашли таких звонков в loadbalancer.

в) Метод Spring Handler, как показано ниже.

@RequestMapping(path = "/handleResponse", method = RequestMethod.GET)
public String handleResponse(@RequestParam(name = "token")
final String token, @RequestParam(name = "PayerID")
final String payerId)

d) Нет проблем с конфигурациями PayPal или серверами PayPal. Если бы я нажал на браузер с приведенным ниже примером URL, он вызывается дважды, даже если он не отправляется из PayPal. Следовательно, с PayPal проблем нет.

https://ABCDMERCHANT.com/us/en-us/checkout/payment/paypal/handleResponse?token=EC-XXXXXXXXXXX&PayerID=XXXXXXXXXXX

Ребята, если бы вы могли дать какие-либо предложения, чтобы отследить его первопричину. это будет полезно для меня.

Спасибо InAdvance !!

1 Ответ

0 голосов
/ 07 января 2019

Мы не можем отследить его, когда он вызывается два раза.Тем не менее, мы дали исправление на уровне кода, чтобы оно обрабатывало второй вызов и возвращалось на страницу orderConfirmation на основе PayPalSessionToken.

При первом вызове он сохраняет payPalSessionToken в порядке, а при втором вызове ищетorder, совпадающий с payPalsessiontToken, затем возвращается на страницу orderCofirmation с orderCode.

...