Spring控制器在测试环境中被调用两次

时间:2018-11-15 18:17:37

标签: javascript java spring cloud hybris

很长时间以来,我一直在面对弹簧控制器的问题。即使经过对该弹簧控制器重定向问题的大量研究,也未能给出任何解决方案。

问题:我们正在使用Spring进行一些付款集成,例如Sofort,AliPay和PayPal。一切都可以在本地计算机(PC桌面)上正常运行,但会导致在测试环境(云部署服务器)上出现PayPal问题;但是,其余所有其他付款类型都可以正常工作。

在商家服务器上有一个PayPal响应处理程序url(Controller),它在其中处理Paypal付款响应,该处理程序url被调用了两次。因此,它不会给出适当的结果,因为应该只调用一次。

PayPal响应处理程序URL: 我们/ zh-CN /结帐/付款/ paypal / handleResponse?token = EC-XXXXXXXXXXXX&PayerID = XXXXXX

观察

a)每当我们遇到这样的问题时,URL就会被调用两次。在chrome的网络标签上,可能是JS。但是,我们在那里还没有发现这样的历史。

b)我们在测试环境中使用负载平衡器。有时,负载均衡器会使网址被调用两次。但是,我们在loadbalancer上找不到这种调用。

c)如下所示的Spring Handler方法。

numFound

d)PayPal配置或PayPal服务器没有问题。如果我用下面的示例网址访问浏览器,它将被调用两次,即使它不是从PayPal发送的。因此,贝宝(PayPal)没有问题。

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

伙计们,如果您能提出任何建议,以追溯它的根本原因。对我有帮助。

感谢InAdvance !!

1 个答案:

答案 0 :(得分:0)

当它被两次调用时,我们无法找到它。但是,我们在代码级别提供了此修复程序,使其可以处理第二个调用,并基于PayPalSessionToken返回到orderConfirmation页。

第一次调用时,它将按顺序保留payPalSessionToken,第二次调用时,将寻找与payPalsessiontToken匹配的订单,然后返回带有orderCode的orderCofirmation页面。