Advertisement
Guest User

Untitled

a guest
Nov 24th, 2014
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.01 KB | None | 0 0
  1. <a th:href="@{${flowExecutionUrl}(_eventId=selectPaymentMethod,type=*{paymentMethod.name})}">
  2. <img th:src="@{|*{paymentMethod.logo}|}" class="img-thumbnail" src="../resources/images/paypal-logo.png" alt="" />
  3. </a>
  4.  
  5. http://localhost:8080/payments/checkout-widget/session/1/checkout?_eventId=selectPaymentMethod&type=Google+Checkout
  6.  
  7. @Configuration
  8. @AutoConfigureAfter(MvcConfig.class)
  9. public class WebflowConfig extends AbstractFlowConfiguration {
  10.  
  11. @Autowired
  12. private SpringTemplateEngine templateEngine;
  13.  
  14. @Bean
  15. public FlowExecutor flowExecutor() {
  16. return getFlowExecutorBuilder(flowRegistry())
  17. .addFlowExecutionListener(new SecurityFlowExecutionListener())
  18. .build();
  19. }
  20.  
  21. @Bean
  22. public FlowDefinitionRegistry flowRegistry() {
  23. return getFlowDefinitionRegistryBuilder(flowBuilderServices())
  24. .addFlowLocation("classpath:/templates/checkout.xml", "checkout")
  25. .build();
  26. }
  27.  
  28. @Bean
  29. public FlowBuilderServices flowBuilderServices() {
  30. return getFlowBuilderServicesBuilder()
  31. .setViewFactoryCreator(mvcViewFactoryCreator())
  32. .setDevelopmentMode(true)
  33. .build();
  34. }
  35.  
  36. @Bean
  37. public FlowController flowController() {
  38. FlowController flowController = new FlowController();
  39. flowController.setFlowExecutor(flowExecutor());
  40. return flowController;
  41. }
  42.  
  43. @Bean
  44. public FlowHandlerMapping flowHandlerMapping() {
  45. FlowHandlerMapping flowHandlerMapping = new FlowHandlerMapping();
  46. flowHandlerMapping.setFlowRegistry(flowRegistry());
  47. flowHandlerMapping.setOrder(-1);
  48. return flowHandlerMapping;
  49. }
  50.  
  51. @Bean
  52. public FlowHandlerAdapter flowHandlerAdapter() {
  53. FlowHandlerAdapter flowHandlerAdapter = new FlowHandlerAdapter();
  54. flowHandlerAdapter.setFlowExecutor(flowExecutor());
  55. flowHandlerAdapter.setSaveOutputToFlashScopeOnRedirect(true);
  56. return flowHandlerAdapter;
  57. }
  58.  
  59. @Bean
  60. public AjaxThymeleafViewResolver thymeleafViewResolver() {
  61. AjaxThymeleafViewResolver viewResolver = new AjaxThymeleafViewResolver();
  62. viewResolver.setViewClass(FlowAjaxThymeleafView.class);
  63. viewResolver.setTemplateEngine(templateEngine);
  64. return viewResolver;
  65. }
  66.  
  67. @Bean
  68. public MvcViewFactoryCreator mvcViewFactoryCreator() {
  69. List<ViewResolver> viewResolvers = new ArrayList<>();
  70. viewResolvers.add(thymeleafViewResolver());
  71.  
  72. MvcViewFactoryCreator mvcViewFactoryCreator = new MvcViewFactoryCreator();
  73. mvcViewFactoryCreator.setViewResolvers(viewResolvers);
  74. mvcViewFactoryCreator.setUseSpringBeanBinding(true);
  75. return mvcViewFactoryCreator;
  76. }
  77. }
  78.  
  79. <?xml version="1.0" encoding="UTF-8"?>
  80. <flow xmlns="http://www.springframework.org/schema/webflow"
  81. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  82. xsi:schemaLocation="http://www.springframework.org/schema/webflow
  83. http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
  84.  
  85. <on-start>
  86. <set name="flowScope.paymentMethods" value="checkoutService.paymentMethods"/>
  87. </on-start>
  88.  
  89. <view-state id="payment-methods" view="payment-methods">
  90. <transition on="selectPaymentMethod" to="new-details"/>
  91. </view-state>
  92.  
  93. <view-state id="new-details" view="new-details">
  94. <transition on="submitDetails"/>
  95. </view-state>
  96.  
  97. <view-state id="summary" view="summary">
  98. <transition on="completeDetails" to="completed"/>
  99. </view-state>
  100.  
  101. <end-state id="cancelled" view="externalRedirect:contextRelative:/home.do"/>
  102. <end-state id="completed" view="externalRedirect:contextRelative:/home.do"/>
  103.  
  104. <global-transitions>
  105. <transition on="cancelCheckout" to="cancelled"/>
  106. </global-transitions>
  107. </flow>
  108.  
  109. @Controller
  110. @RequestMapping(value = "/payments/checkout-widget/session/{sessionId}")
  111. @SessionAttributes({"paymentMethods", "redirectUrls", "cardDetails"})
  112. public class WelcomeController {
  113.  
  114. @Inject
  115. private CheckoutWidgetSessionService checkoutWidgetSessionService;
  116.  
  117. @Inject
  118. private CheckoutService checkoutService;
  119.  
  120. @RequestMapping(value = "/checkout", method = RequestMethod.GET)
  121. public String intro(
  122. @NotNull @PathVariable("sessionId") String sessionId,
  123. Model model) {
  124. System.out.println("Session ID:" + sessionId);
  125.  
  126. model.addAttribute("paymentMethods", checkoutService.getPaymentMethods());
  127. model.addAttribute("deliveryAddress", checkoutService.getDeliveryAddress());
  128. model.addAttribute("date",new Date().toString());
  129.  
  130. return "payment-methods";
  131. }
  132. }
  133.  
  134. <html>
  135. <head>
  136. <meta charset="utf-8"/>
  137. <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  138. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  139.  
  140. <link rel="stylesheet"
  141. th:href="@{/css/bootstrap.min.css}"
  142. href="../resources/css/bootstrap.min.css"/>
  143. </head>
  144. <body>
  145. <div class="container">
  146. <h1 th:text="#{payment.methods.title}">Payment Methods</h1>
  147. <br/>
  148.  
  149. <p th:text="#{payment.methods.label}">Please select a payment method:</p>
  150.  
  151. <div class="row">
  152. <div class="col-sm-2 col-xs-4 col-md-1 col-lg-1" th:each="paymentMethod : ${paymentMethods}">
  153. <a th:href="@{${flowExecutionUrl}(_eventId=selectPaymentMethod,type=*{paymentMethod.name})}">
  154. <img th:src="@{|*{paymentMethod.logo}|}" class="img-thumbnail" src="../resources/images/paypal-logo.png" alt="" />
  155. </a>
  156. </div>
  157.  
  158. </div>
  159.  
  160. </div>
  161. <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
  162. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  163. <!-- Include all compiled plugins (below), or include individual files as needed -->
  164. <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
  165.  
  166. </body>
  167. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement