docs: @Override
    public final Cart getShoppingCart(final Map<String, Object> pRqVs,
      final IRequestData pRqDt, final boolean pIsNeedToCreate,
        final boolean pIsBuAuth) throws Exception {
      OnlineBuyer buyer = null;
      boolean burNew = false;
      if (pIsBuAuth) {
        buyer = this.buySr.getAuthBuyr(pRqVs, pRqDt);
      } else {
        buyer = (OnlineBuyer) pRqDt.getAttribute("buyr");
        if (buyer == null) {
          buyer = this.buySr.getBuyr(pRqVs, pRqDt);
        }
        if (buyer == null && pIsNeedToCreate) {
          buyer = this.buySr.createBuyr(pRqVs, pRqDt);
          if (buyer.getIsNew()) {
            getSrvOrm().insertEntity(pRqVs, buyer);
            buyer.setIsNew(false);
          } else {
            getSrvOrm().updateEntity(pRqVs, buyer);
          }
          pRqDt.setCookieValue("cBuyerId", buyer.getItsId().toString());
          burNew = true;
        }
      }
      TradingSettings ts = srvTradingSettings.lazyGetTradingSettings(pRqVs);
      pRqDt.setAttribute("buyr", buyer);
      Cart cart = (Cart) pRqDt.getAttribute("cart");
      if (cart == null && buyer !=  null) {
        cart = retrCart(pRqVs, buyer, false);
        if (cart == null && pIsNeedToCreate) {
          cart = new Cart();
          Currency curr = (Currency) pRqVs.get("wscurr");
          cart.setPayMeth(ts.getDefaultPaymentMethod());
          cart.setCurr(curr);
          cart.setItems(new ArrayList<CartLn>());
          cart.setTaxes(new ArrayList<CartTxLn>());
          cart.setTotals(new ArrayList<CartTot>());
          cart.setItsId(buyer);
          getSrvOrm().insertEntity(pRqVs, cart);
        } else if (cart != null && burNew) {
          emptyCart(pRqVs, cart);
        }
        if (cart != null) {
          pRqDt.setAttribute("cart", cart);
        }
      }
      if (cart != null) {
        if (EPaymentMethod.ANY.equals(cart.getPayMeth())
          || EPaymentMethod.PARTIAL_ONLINE.equals(cart.getPayMeth())
            || EPaymentMethod.ONLINE.equals(cart.getPayMeth())) {
          cart.setPayMeth(EPaymentMethod.PAY_CASH);
        }
        if ((EPaymentMethod.PAYPAL.equals(cart.getPayMeth())
          || EPaymentMethod.PAYPAL_ANY.equals(cart.getPayMeth()))
            && pplCl == null) {
          try {
            pplCl = Class.forName("com.paypal.api.payments.Item");
          } catch (ClassNotFoundException e) {
            cart.setPayMeth(EPaymentMethod.PAY_CASH);
          }
        }
        List<EPaymentMethod> payMts = new ArrayList<EPaymentMethod>();
        pRqVs.put("payMts", payMts);
        payMts.add(EPaymentMethod.PAY_CASH);
        payMts.add(EPaymentMethod.BANK_TRANSFER);
        payMts.add(EPaymentMethod.BANK_CHEQUE);
        if (pplCl != null) {
          payMts.add(EPaymentMethod.PAYPAL);
        }
      }
      return cart;
    }