📄 checkoutevents.java
字号:
LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator"); CheckOutHelper checkOutHelper = new CheckOutHelper(dispatcher, delegator, cart); Map resp = checkOutHelper.validatePaymentMethods(); if (ServiceUtil.isError(resp)) { request.setAttribute("_ERROR_MESSAGE_", ServiceUtil.getErrorMessage(resp)); return "error"; } return "success"; } public static Map getSelectedPaymentMethods(HttpServletRequest request) { ShoppingCart cart = (ShoppingCart) request.getSession().getAttribute("shoppingCart"); //Locale locale = UtilHttp.getLocale(request); String currencyFormat = UtilProperties.getPropertyValue("general.properties", "currency.decimal.format", "##0.00"); DecimalFormat formatter = new DecimalFormat(currencyFormat); Map selectedPaymentMethods = new HashMap(); String[] paymentMethods = request.getParameterValues("checkOutPaymentId"); String errMsg = null; if (paymentMethods != null) { for (int i = 0; i < paymentMethods.length; i++) { String amountStr = request.getParameter("amount_" + paymentMethods[i]); Double amount = null; if (amountStr != null && amountStr.length() > 0 && !"REMAINING".equals(amountStr)) { try { amount = new Double(formatter.parse(amountStr).doubleValue()); } catch (ParseException e) { Debug.logError(e, module); errMsg = UtilProperties.getMessage(resource, "checkevents.invalid_amount_set_for_payment_method", (cart != null ? cart.getLocale() : Locale.getDefault())); request.setAttribute("_ERROR_MESSAGE_", errMsg); return null; } } selectedPaymentMethods.put(paymentMethods[i], amount); } } Debug.logInfo("Selected Payment Methods : " + selectedPaymentMethods, module); return selectedPaymentMethods; } public static String setCheckOutOptions(HttpServletRequest request, HttpServletResponse response) { ShoppingCart cart = (ShoppingCart) request.getSession().getAttribute("shoppingCart"); LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator"); // get the currency format String currencyFormat = UtilProperties.getPropertyValue("general.properties", "currency.decimal.format", "##0.00"); DecimalFormat formatter = new DecimalFormat(currencyFormat); // Set the payment options Map selectedPaymentMethods = getSelectedPaymentMethods(request); if (selectedPaymentMethods == null) { return "error"; } String shippingMethod = request.getParameter("shipping_method"); String shippingContactMechId = request.getParameter("shipping_contact_mech_id"); String taxAuthPartyGeoIds = request.getParameter("taxAuthPartyGeoIds"); String partyTaxId = request.getParameter("partyTaxId"); String isExempt = request.getParameter("isExempt"); String correspondingPoId = request.getParameter("corresponding_po_id"); String shippingInstructions = request.getParameter("shipping_instructions"); String orderAdditionalEmails = request.getParameter("order_additional_emails"); String maySplit = request.getParameter("may_split"); String giftMessage = request.getParameter("gift_message"); String isGift = request.getParameter("is_gift"); String internalCode = request.getParameter("internalCode"); String shipBeforeDate = request.getParameter("shipBeforeDate"); String shipAfterDate = request.getParameter("shipAfterDate"); List singleUsePayments = new ArrayList(); // if taxAuthPartyGeoIds is not empty drop that into the database if (UtilValidate.isNotEmpty(taxAuthPartyGeoIds)) { try { Map createCustomerTaxAuthInfoResult = dispatcher.runSync("createCustomerTaxAuthInfo", UtilMisc.toMap("partyId", cart.getPartyId(), "taxAuthPartyGeoIds", taxAuthPartyGeoIds, "partyTaxId", partyTaxId, "isExempt", isExempt)); ServiceUtil.getMessages(request, createCustomerTaxAuthInfoResult, null); if (ServiceUtil.isError(createCustomerTaxAuthInfoResult)) { return "error"; } } catch (GenericServiceException e) { String errMsg = "Error setting customer tax info: " + e.toString(); request.setAttribute("_ERROR_MESSAGE_", errMsg); return "error"; } } // get the billing account and amount String billingAccountId = request.getParameter("billingAccountId"); String billingAcctAmtStr = request.getParameter("amount_" + billingAccountId); Double billingAccountAmt = null; // parse the amount to a decimal if (billingAcctAmtStr != null) { try { billingAccountAmt = new Double(formatter.parse(billingAcctAmtStr).doubleValue()); } catch (ParseException e) { Debug.logError(e, module); Map messageMap = UtilMisc.toMap("billingAccountId", billingAccountId); String errMsg = UtilProperties.getMessage(resource, "checkevents.invalid_amount_set_for_billing_account", messageMap, (cart != null ? cart.getLocale() : Locale.getDefault())); request.setAttribute("_ERROR_MESSAGE_", errMsg); return "error"; } } // get a request map of parameters Map params = UtilHttp.getParameterMap(request); CheckOutHelper checkOutHelper = new CheckOutHelper(dispatcher, delegator, cart); // check for gift card not on file Map gcResult = checkOutHelper.checkGiftCard(params, selectedPaymentMethods); ServiceUtil.getMessages(request, gcResult, null); if (ServiceUtil.isError(gcResult)) { return "error"; } String gcPaymentMethodId = (String) gcResult.get("paymentMethodId"); Double gcAmount = (Double) gcResult.get("amount"); if (gcPaymentMethodId != null) { selectedPaymentMethods.put(gcPaymentMethodId, gcAmount); if ("Y".equalsIgnoreCase(request.getParameter("singleUseGiftCard"))) { singleUsePayments.add(gcPaymentMethodId); } } Map optResult = checkOutHelper.setCheckOutOptions(shippingMethod, shippingContactMechId, selectedPaymentMethods, singleUsePayments, billingAccountId, billingAccountAmt, correspondingPoId, shippingInstructions, orderAdditionalEmails, maySplit, giftMessage, isGift, internalCode, shipBeforeDate, shipAfterDate); ServiceUtil.getMessages(request, optResult, null); if (ServiceUtil.isError(optResult)) { return "error"; } return "success"; } // Create order event - uses createOrder service for processing public static String createOrder(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); ShoppingCart cart = ShoppingCartEvents.getCartObject(request); LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator"); GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); CheckOutHelper checkOutHelper = new CheckOutHelper(dispatcher, delegator, cart); Map callResult; // remove this whenever creating an order so quick reorder cache will refresh/recalc session.removeAttribute("_QUICK_REORDER_PRODUCTS_"); boolean areOrderItemsExploded = explodeOrderItems(delegator, cart); //get the TrackingCodeOrder List List trackingCodeOrders = TrackingCodeEvents.makeTrackingCodeOrders(request); String distributorId = (String) session.getAttribute("_DISTRIBUTOR_ID_"); String affiliateId = (String) session.getAttribute("_AFFILIATE_ID_"); String visitId = VisitHandler.getVisitId(session); String webSiteId = CatalogWorker.getWebSiteId(request); callResult = checkOutHelper.createOrder(userLogin, distributorId, affiliateId, trackingCodeOrders, areOrderItemsExploded, visitId, webSiteId); if (callResult != null) { ServiceUtil.getMessages(request, callResult, null); if (ServiceUtil.isError(callResult)) { // messages already setup with the getMessages call, just return the error response code return "error"; } if (callResult.get(ModelService.RESPONSE_MESSAGE).equals(ModelService.RESPOND_SUCCESS)) { // set the orderId for use by chained events String orderId = cart.getOrderId(); request.setAttribute("orderId", orderId); request.setAttribute("orderAdditionalEmails", cart.getOrderAdditionalEmails()); } } return cart.getOrderType().toLowerCase(); } // Event wrapper for the tax calc. public static String calcTax(HttpServletRequest request, HttpServletResponse response) { try { calcTax(request); } catch (GeneralException e) { request.setAttribute("_ERROR_MESSAGE_", e.getMessage()); return "error"; } return "success"; } // Invoke the taxCalc private static void calcTax(HttpServletRequest request) throws GeneralException { LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator"); ShoppingCart cart = (ShoppingCart) request.getSession().getAttribute("shoppingCart"); CheckOutHelper checkOutHelper = new CheckOutHelper(dispatcher, delegator, cart); //Calculate and add the tax adjustments checkOutHelper.calcAndAddTax(); } public static boolean explodeOrderItems(GenericDelegator delegator, ShoppingCart cart) { if (cart == null) return false; GenericValue productStore = ProductStoreWorker.getProductStore(cart.getProductStoreId(), delegator); if (productStore == null || productStore.get("explodeOrderItems") == null) { return false; } return productStore.getBoolean("explodeOrderItems").booleanValue(); } // Event wrapper for processPayment. public static String processPayment(HttpServletRequest request, HttpServletResponse response) { // run the process payment process + approve order when complete; may also run sync fulfillments int failureCode = 0; try { if (!processPayment(request)) { failureCode = 1; } } catch (GeneralException e) { Debug.logError(e, module); ServiceUtil.setMessages(request, e.getMessage(), null, null); failureCode = 2; } catch (GeneralRuntimeException e) { Debug.logError(e, module); ServiceUtil.setMessages(request, e.getMessage(), null, null); } // event return based on failureCode switch (failureCode) { case 0: return "success"; case 1: return "fail"; default: return "error"; } } private static boolean processPayment(HttpServletRequest request) throws GeneralException { HttpSession session = request.getSession(); LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator"); ShoppingCart cart = (ShoppingCart) request.getSession().getAttribute("shoppingCart"); GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); CheckOutHelper checkOutHelper = new CheckOutHelper(dispatcher, delegator, cart); // check if the order is to be held (processing) boolean holdOrder = cart.getHoldOrder(); // load the ProductStore settings GenericValue productStore = ProductStoreWorker.getProductStore(cart.getProductStoreId(), delegator); Map callResult = checkOutHelper.processPayment(productStore, userLogin, false, holdOrder); // generate any messages required ServiceUtil.getMessages(request, callResult, null); // check for customer message(s) List messages = (List) callResult.get("authResultMsgs"); if (messages != null && messages.size() > 0) { request.setAttribute("_EVENT_MESSAGE_LIST_", messages); } // determine whether it was a success or failure return (callResult.get(ModelService.RESPONSE_MESSAGE).equals(ModelService.RESPOND_SUCCESS)); } public static String checkOrderBlacklist(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); ShoppingCart cart = (ShoppingCart) session.getAttribute("shoppingCart"); GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator"); GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); CheckOutHelper checkOutHelper = new CheckOutHelper(null, delegator, cart); String result; Map callResult = checkOutHelper.checkOrderBlacklist(userLogin); if (callResult.get(ModelService.RESPONSE_MESSAGE).equals(ModelService.RESPOND_ERROR)) { result = (String) callResult.get(ModelService.ERROR_MESSAGE); } else { result = (String) callResult.get(ModelService.SUCCESS_MESSAGE); } return result; } public static String failedBlacklistCheck(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); ShoppingCart cart = (ShoppingCart) session.getAttribute("shoppingCart"); GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator"); LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); String result; // Load the properties store GenericValue productStore = ProductStoreWorker.getProductStore(cart.getProductStoreId(), delegator); CheckOutHelper checkOutHelper = new CheckOutHelper(dispatcher, delegator, cart);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -