使用Paypal的Spring Web Flow

时间:2012-11-02 19:34:20

标签: spring spring-roo spring-webflow

HY!

我将Paypal支付整合到Spring Web流程中。

应用程序使用externalRedirect将请求转发到PayPal网站。(setExpresscheckout)用户登录PayPal并支付项目费用。用户完成付款后,paypal会将请求转发回流程。 一旦请求从PayPal返回,是否有办法在流程中输入特定的视图状态?

我尝试了这个,但不起作用:

这是paypalcontroller的一部分,我将返回网址设置为paypal:

private void sessionmanager(RequestContext context) {
HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getNativeRequest();
//generate Spring Webflow return URL
String url = request.getRequestURL()+";jsessionid="+ request.getSession().getId() + "?" +
            request.getQueryString();
String paypalCancelUrl   = url + "&_eventId=end-state";
String paypalApprovedUrl = url + "&_eventId=approved";
}

flow.xml:

<view-state id="view-state-1" view="sampleflow/view-state-1">
    <transition on="success" to="view-state-2"/>
    <transition on="cancel" to="end-state"/>
    <transition on="approved" to="view-state-2"/>
</view-state>

这是会话管理器代码生成的url,paypal重定向到它:

http://localhost:8080/testpaysys/sampleflow;jsessionid=D693C9D4A2681CA6FF18E7C7078EA971?null&_eventId=approved

批准的eventID似乎不起作用,我进入流程,但到达起始状态。(不会重定向到状态2)

我缺少什么?

1 个答案:

答案 0 :(得分:1)

您需要使用执行密钥。您应该在控制器中构建的返回网址中使用flowExecutionUrl 您可以通过context.getFlowExecutionUrl()

访问它