对话范围和jsf重定向



是否可以在重定向到外部url期间保持对话?我开始与CDI对话bean贝宝交易,接下来有脸重定向到贝宝页面,当我登录和做支付和下一个贝宝返回到我的页面,我想有我的支持bean的相同实例,以记住我发送给贝宝的细节。

当paypal重定向回我的页面时,他在url中添加了交易令牌和付款人ID,但我没有任何关于用户购买的产品数量的信息。我要记住重定向之前的量。现在,在paypal返回到我的网站后,我调用doExpressCheckout方法,我想传递数量和其他交易细节,因为我可以设置与交易前完全不同的细节,并且当客户在paypal页面上接受以10美元购买一些产品时,可能会出现奇怪的情况,但我设置了100美元后,paypal再次重定向到我的页面,客户将不知道他支付了多少。我不知道为什么会这样。

我使用SOAP api

是的,您可以从外部重定向恢复对话。只需将cid=nnn包含在您传递给PayPal的返回URL中。例如:

returnUrl = "http://myip/myapp/return.seam?cid=" + Conversation.instance().getId();
details.setReturnURL(returnUrl);
...

由于2分钟的默认会话超时是相当有限的,你最终会想要增加会话超时之前,拨打PayPal:

Conversation.instance().setTimeout(900000); // 15 minutes

然而,这样做不一定是一个好主意,因为它可能会将数据保存很长时间,并且您还需要保留会话cookie以使此方案工作(因此您必须在必要时增加会话超时)。

更好的策略是持久地保存交易数据(db或磁盘),将随机生成的ID与数据关联,并在从PayPal返回时检索它。这样,您就不需要在内存中保存对话。

当paypal重定向回我的页面,他追加到url交易代币和付款人ID,但我没有任何关于数量的信息用户购买的产品

您可以将对话前的id附加到您传递给Paypal的url作为返回url。这样,会话id将与上述参数一起传回,并且seam将知道恢复带有所有数据的预付费会话。

相关内容

  • 没有找到相关文章

最新更新