package org.onehippo.forge.konakart.hst.wizard.checkout.activity; import com.konakart.app.KKException; import com.konakart.appif.CustomerIf; import com.konakart.appif.OrderIf; import org.apache.commons.lang.StringUtils; import org.onehippo.forge.konakart.hst.utils.KKActionsConstants; import org.onehippo.forge.konakart.hst.utils.KKUtil; import org.onehippo.forge.konakart.hst.wizard.ActivityException; import org.onehippo.forge.konakart.hst.wizard.checkout.CheckoutSeedData; import org.onehippo.forge.konakart.site.service.KKServiceHelper; import java.util.Arrays; import java.util.List; public class PaymentMethodActivity extends BaseCheckoutActivity { private static final String PAYMENT_METHOD = "paymentMethod"; private static final String PAYMENT_DETAILS = "paymentDetails"; @Override public void doBeforeRender() throws ActivityException { if (!validateCurrentCart()) { return; } // Ensure that the user hasn't submitted the order and then got back to here using the // back button. We check to see whether the basket is null // Check to see whether there is something in the cart CustomerIf cust = KKServiceHelper.getKKEngineService().getKKAppEng(hstRequest).getCustomerMgr().getCurrentCustomer(); if (cust.getBasketItems() == null || cust.getBasketItems().length == 0) { processorContext.getSeedData().getKkBaseHstComponent().redirectByRefId( processorContext.getSeedData().getRequest(), processorContext.getSeedData().getResponse(), processorContext.getSeedData().getKkBaseHstComponent().getCartDetailRefId()); return; } // Get payment gateways from the engine try { kkAppEng.getOrderMgr().createPaymentGatewayList(); hstRequest.setAttribute(PAYMENT_DETAILS, kkAppEng.getOrderMgr().getPaymentDetailsArray()); hstRequest.setAttribute(PAYMENT_METHOD, kkAppEng.getOrderMgr().getPaymentType()); } catch (KKException e) { throw new ActivityException("Failed to retrieve the list of payment gateway", e); } OrderIf checkoutOrder = kkAppEng.getOrderMgr().getCheckoutOrder(); processorContext.getSeedData().getRequest().setAttribute(PAYMENT_METHOD, checkoutOrder.getPaymentModuleCode()); } @Override public void doAction() throws ActivityException { super.doAction(); CheckoutSeedData seedData = (CheckoutSeedData) processorContext.getSeedData(); if (seedData.getAction().equals(KKActionsConstants.ACTIONS.SELECT.name())) { String paymentMethod = KKUtil.getActionRequestParameter(seedData.getRequest(), PAYMENT_METHOD); if (StringUtils.isEmpty(paymentMethod)) { updateNextLoggedState(KKActionsConstants.STATES.PAYMENT_METHOD.name()); addMessage(GLOBALMESSAGE, seedData.getBundleAsString("checkout.select.payment.method")); return; } // Attach the payment method to the order KKServiceHelper.getKKEngineService().getKKAppEng(hstRequest).getOrderMgr().addPaymentDetailsToOrder(paymentMethod); } } @Override public void doAdditionalData() { super.doAdditionalData(); CheckoutSeedData seedData = (CheckoutSeedData) processorContext.getSeedData(); List<String> acceptedStates = Arrays.asList(KKActionsConstants.STATES.PAYMENT_METHOD.name(), KKActionsConstants.STATES.ORDER_REVIEW.name()); String state = seedData.getState(); if (StringUtils.isNotEmpty(state) && acceptedStates.contains(state)) { hstRequest.getRequestContext().setAttribute(getAcceptState().concat("_EDIT"), true); hstRequest.setAttribute(getAcceptState().concat("_EDIT"), true); } } }