protected function _finishPayment($state = 'active')
 {
     $viewer = Engine_Api::_()->user()->getViewer();
     $user = $this->_user;
     // No user?
     if (!$this->_user) {
         return $this->_helper->redirector->gotoRoute(array(), 'default', true);
     }
     // Log the user in, if they aren't already
     if (($state == 'active' || $state == 'free') && $this->_user && !$this->_user->isSelf($viewer) && !$viewer->getIdentity()) {
         Zend_Auth::getInstance()->getStorage()->write($this->_user->getIdentity());
         Engine_Api::_()->user()->setViewer();
         $viewer = $this->_user;
     }
     // Handle email verification or pending approval
     if ($viewer->getIdentity() && !$viewer->enabled) {
         Engine_Api::_()->user()->setViewer(null);
         Engine_Api::_()->user()->getAuth()->getStorage()->clear();
         $confirmSession = new Zend_Session_Namespace('Signup_Confirm');
         $confirmSession->approved = $viewer->approved;
         $confirmSession->verified = $viewer->verified;
         $confirmSession->enabled = $viewer->enabled;
         return $this->_helper->_redirector->gotoRoute(array('action' => 'confirm'), 'user_signup', true);
     }
     // Clear session
     $errorMessage = $this->_session->errorMessage;
     $userIdentity = $this->_session->user_id;
     $this->_session->unsetAll();
     $this->_session->user_id = $userIdentity;
     $this->_session->errorMessage = $errorMessage;
     // Redirect
     if ($state == 'free') {
         return $this->_helper->redirector->gotoRoute(array(), 'default', true);
     } else {
         return $this->_helper->redirector->gotoRoute(array('action' => 'finish', 'state' => $state));
     }
 }