2121@ Controller
2222@ RequestMapping ("/oneclick-mall" )
2323public class OneclickMallController extends BaseController {
24+
25+ private static final int AUTHORIZED = 0 ;
2426 private static final String TEMPLATE_FOLDER = "oneclick_mall" ;
2527 private static final String BASE_URL = "/oneclick-mall" ;
2628 private static final String PRODUCT = "Webpay Oneclick Mall" ;
29+ private static final String MODEL_NAVIGATION = "navigation" ;
30+ private static final String MODEL_RESPONSE = "response_data" ;
31+ private static final String MODEL_RESPONSE_JSON = "response_data_json" ;
2732
2833 private static final String VIEW_START = TEMPLATE_FOLDER + "/start" ;
2934 private static final String VIEW_FINISH = TEMPLATE_FOLDER + "/finish" ;
@@ -35,6 +40,8 @@ public class OneclickMallController extends BaseController {
3540
3641 private static final Map <String , String > NAV_START ;
3742 private static final Map <String , String > NAV_FINISH ;
43+ private static final Map <String , String > NAV_FINISH_RECOVER ;
44+ private static final Map <String , String > NAV_FINISH_REJECTED ;
3845 private static final Map <String , String > NAV_AUTHORIZE ;
3946 private static final Map <String , String > NAV_DELETE ;
4047 private static final Map <String , String > NAV_STATUS ;
@@ -56,10 +63,18 @@ public class OneclickMallController extends BaseController {
5663 NAV_FINISH .put ("response" , "Respuesta" );
5764 NAV_FINISH .put ("authorize" , "Autorizar una transacción" );
5865
66+ NAV_FINISH_RECOVER = new LinkedHashMap <>();
67+ NAV_FINISH_RECOVER .put ("data" , "Datos" );
68+
69+ NAV_FINISH_REJECTED = new LinkedHashMap <>();
70+ NAV_FINISH_REJECTED .put ("data" , "Datos" );
71+ NAV_FINISH_REJECTED .put ("request" , "Petición" );
72+ NAV_FINISH_REJECTED .put ("response" , "Respuesta" );
73+
5974 NAV_AUTHORIZE = new LinkedHashMap <>();
6075 NAV_AUTHORIZE .put ("request" , "Petición" );
6176 NAV_AUTHORIZE .put ("response" , "Respuesta" );
62- NAV_AUTHORIZE .put ("done" , "listo " );
77+ NAV_AUTHORIZE .put ("done" , "Listo " );
6378
6479 NAV_STATUS = new LinkedHashMap <>();
6580 NAV_STATUS .put ("request" , "Petición" );
@@ -97,7 +112,7 @@ private void addBreadcrumbs(Model model, String label, String url) {
97112 @ GetMapping ("/start" )
98113 public String start (HttpServletRequest req , Model model )
99114 throws IOException , InscriptionStartException {
100- model .addAttribute ("navigation" , NAV_START );
115+ model .addAttribute (MODEL_NAVIGATION , NAV_START );
101116 addBreadcrumbs (model , "Iniciar inscripción" , "#" );
102117
103118 String username = "user_" + getRandomNumber ();
@@ -116,8 +131,8 @@ public String start(HttpServletRequest req, Model model)
116131 "email" , email ,
117132 "returnUrl" , returnUrl
118133 )));
119- model .addAttribute ("response_data" , resp );
120- model .addAttribute ("response_data_json" , toJson (resp ));
134+ model .addAttribute (MODEL_RESPONSE , resp );
135+ model .addAttribute (MODEL_RESPONSE_JSON , toJson (resp ));
121136 model .addAttribute ("url" , resp .getUrlWebpay ());
122137 model .addAttribute ("token" , resp .getToken ());
123138
@@ -129,16 +144,32 @@ public String start(HttpServletRequest req, Model model)
129144
130145 @ GetMapping ("/finish" )
131146 public String finish (HttpServletRequest req ,
147+ @ RequestParam Map <String , String > params ,
132148 @ RequestParam (name = "TBK_TOKEN" , required = false ) String token ,
149+ @ RequestParam (name = "TBK_ORDEN_COMPRA" , required = false ) String ordenCompra ,
133150 Model model )
134151 throws IOException , InscriptionFinishException {
135152
136- model .addAttribute ("navigation" , NAV_FINISH );
153+ model .addAttribute (MODEL_NAVIGATION , NAV_FINISH );
137154 addBreadcrumbs (model , "Finalizar inscripción" , "#" );
138155
156+ if (ordenCompra != null ) {
157+ model .addAttribute (MODEL_NAVIGATION , NAV_FINISH_RECOVER );
158+ model .addAttribute ("request_data_json" , toJson (params ));
159+ return VIEW_RECOVER_ERROR ;
160+ }
161+
139162 String username = (String ) req .getSession ().getAttribute ("username" );
140163
141164 var resp = inscription .finish (token );
165+ model .addAttribute (MODEL_RESPONSE , resp );
166+ model .addAttribute (MODEL_RESPONSE_JSON , toJson (resp ));
167+
168+ if (resp .getResponseCode () != AUTHORIZED ) {
169+ model .addAttribute (MODEL_NAVIGATION , NAV_FINISH_REJECTED );
170+ model .addAttribute ("request_data_json" , toJson (params ));
171+ return VIEW_REJECTED_ERROR ;
172+ }
142173
143174 req .getSession ().setAttribute ("tbkUser" , resp .getTbkUser ());
144175
@@ -150,8 +181,6 @@ public String finish(HttpServletRequest req,
150181 model .addAttribute ("token" , token );
151182 model .addAttribute ("username" , username );
152183 model .addAttribute ("tbk_user" , resp .getTbkUser ());
153- model .addAttribute ("response_data" , resp );
154- model .addAttribute ("response_data_json" , toJson (resp ));
155184
156185 model .addAttribute ("child_commerce_code1" , IntegrationCommerceCodes .ONECLICK_MALL_CHILD1 );
157186 model .addAttribute ("child_commerce_code2" , IntegrationCommerceCodes .ONECLICK_MALL_CHILD2 );
@@ -165,7 +194,7 @@ public String delete(@RequestParam String username,
165194 Model model )
166195 throws IOException , InscriptionDeleteException {
167196
168- model .addAttribute ("navigation" , NAV_DELETE );
197+ model .addAttribute (MODEL_NAVIGATION , NAV_DELETE );
169198 addBreadcrumbs (model , "Eliminar inscripción" , "#" );
170199
171200 inscription .delete (tbkUser , username );
@@ -187,7 +216,7 @@ public String authorize(
187216 Model model )
188217 throws IOException , TransactionAuthorizeException {
189218
190- model .addAttribute ("navigation" , NAV_AUTHORIZE );
219+ model .addAttribute (MODEL_NAVIGATION , NAV_AUTHORIZE );
191220 addBreadcrumbs (model , "Autorizar transacción" , "#" );
192221
193222 String buyOrder = "Order" + getRandomNumber ();
@@ -211,8 +240,8 @@ public String authorize(
211240
212241 var resp = transaction .authorize (username , tbkUser , buyOrder , details );
213242
214- model .addAttribute ("response_data" , resp );
215- model .addAttribute ("response_data_json" , toJson (resp ));
243+ model .addAttribute (MODEL_RESPONSE , resp );
244+ model .addAttribute (MODEL_RESPONSE_JSON , toJson (resp ));
216245
217246 return VIEW_AUTHORIZE ;
218247 }
@@ -221,11 +250,11 @@ public String authorize(
221250 public String status (@ RequestParam ("buy_order" ) String buyOrder , Model model )
222251 throws IOException , TransactionStatusException {
223252
224- model .addAttribute ("navigation" , NAV_STATUS );
253+ model .addAttribute (MODEL_NAVIGATION , NAV_STATUS );
225254 addBreadcrumbs (model , "Consultar estado" , "#" );
226255
227256 var resp = transaction .status (buyOrder );
228- model .addAttribute ("response_data_json" , toJson (resp ));
257+ model .addAttribute (MODEL_RESPONSE_JSON , toJson (resp ));
229258
230259 return VIEW_STATUS ;
231260 }
@@ -237,12 +266,12 @@ public String refund(@RequestParam("buy_order") String buyOrder,
237266 @ RequestParam double amount ,
238267 Model model )
239268 throws IOException , TransactionRefundException {
240- model .addAttribute ("navigation" , NAV_REFUND );
269+ model .addAttribute (MODEL_NAVIGATION , NAV_REFUND );
241270 addBreadcrumbs (model , "Reembolso" , "#" );
242271
243272 model .addAttribute ("buy_order" , buyOrder );
244273 var resp = transaction .refund (buyOrder , childCommerceCode , childBuyOrder , amount );
245- model .addAttribute ("response_data_json" , toJson (resp ));
274+ model .addAttribute (MODEL_RESPONSE_JSON , toJson (resp ));
246275
247276 return VIEW_REFUND ;
248277 }
0 commit comments