/**
  * Start Express Checkout by requesting initial token and dispatching customer to PayPal
  */
 public function startAction()
 {
     try {
         $this->_initCheckout();
         $customer = Mage::getSingleton('customer/session')->getCustomer();
         $quoteCheckoutMethod = $this->_getQuote()->getCheckoutMethod();
         if ($customer && $customer->getId()) {
             $this->_checkout->setCustomerWithAddressChange($customer, $this->_getQuote()->getBillingAddress(), $this->_getQuote()->getShippingAddress());
         } elseif ($this->_isGuestAllowedWithoutRegistering($quoteCheckoutMethod, $this->_getQuote())) {
             Mage::getSingleton('core/session')->addNotice($this->_helper->__('To proceed to Checkout, please log in using your email address.'));
             $this->redirectLogin();
             Mage::getSingleton('customer/session')->setBeforeAuthUrl(Mage::getUrl('*/*/*', array('_current' => true)));
             return;
         }
         try {
             $buttonKey = EbayEnterprise_Paypal_Model_Express_Checkout::PAYMENT_INFO_BUTTON;
             $startReply = $this->_checkout->start(Mage::getUrl('*/*/return'), Mage::getUrl('*/*/cancel'), $this->getRequest()->getParam($buttonKey));
             $this->_initToken($startReply['token']);
             $this->_redirectToPayPalSite($startReply);
             return;
         } catch (EbayEnterprise_Paypal_Exception $e) {
             $this->_getCheckoutSession()->addError($e->getMessage());
             $this->_redirect('checkout/cart');
         }
     } catch (Mage_Core_Exception $e) {
         $this->_getCheckoutSession()->addError($e->getMessage());
     } catch (Exception $e) {
         $this->_getCheckoutSession()->addError($this->__('Unable to start Express Checkout.'));
         $this->_logger->logException($e, $this->_context->getMetaData(__CLASS__, [], $e));
     }
     $this->_redirect('checkout/cart');
 }