public function paypalAction()
 {
     //Zend_Loader::loadFile('paypal_bootstrap.php', APPLICATION_PATH . "/../library/My/", true);
     require_once APPLICATION_PATH . "/../library/My/paypal_bootstrap.php";
     $error = false;
     $approvalLink = null;
     $payer = new Payer();
     $payer->setPaymentMethod("paypal");
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $currentUser = $auth->getIdentity();
         $userMapper = new Application_Model_UserMapper();
         $db_adapter = $userMapper->getDbTable()->getAdapter();
         $db = Zend_Db::factory('Mysqli', $db_adapter->getConfig());
         $results = $userMapper->getShoppingCart($currentUser);
         $user = $userMapper->getDbTable()->find($currentUser->id)->current();
         $currencyMapper = new Application_Model_CurrencyMapper();
         $defaultCurrency = $currencyMapper->getDefaultCurrency();
         $data = array('user_id' => $currentUser->id, 'state' => 'created', 'email' => $user->email);
         $db->insert('orders', $data);
         $lastOrderId = $db->lastInsertId('orders', 'id');
         $items = array();
         $subTotal = 0;
         foreach ($results as $i => $result) {
             $item = new Item();
             $item->setName($result->name)->setCurrency($defaultCurrency->code)->setQuantity($result->quantity)->setSku($i + 1)->setPrice($result->price);
             //->setDescription($result->c_id);
             $db->insert('ordered_products', array('product_id' => $result->id, 'name' => $result->name, 'category_id' => $result->getCategoryId(), 'currency' => $defaultCurrency->code, 'price' => $result->price, 'quantity' => $result->quantity, 'order_id' => $lastOrderId));
             $items[] = $item;
             $subTotal += $result->quantity * (double) number_format($result->price, 2);
         }
         $itemList = new ItemList();
         $itemList->setItems($items);
         $shippingTax = 0;
         //
         $details = new Details();
         $details->setShipping($shippingTax)->setTax(0)->setSubtotal($subTotal);
         $total = $shippingTax + $subTotal;
         $amount = new Amount();
         $amount->setCurrency($defaultCurrency->code)->setTotal($total)->setDetails($details);
         $transaction = new Transaction();
         $transaction->setAmount($amount)->setCustom($lastOrderId)->setItemList($itemList)->setDescription("Payment description")->setInvoiceNumber(uniqid());
         $baseUrl = getBaseUrl();
         $redirectUrls = new RedirectUrls();
         $redirectUrls->setReturnUrl($baseUrl . '/users/exepaypal/?success=true');
         $redirectUrls->setCancelUrl($baseUrl . '/users/exepaypal/?cancel=true');
         $payment = new Payment();
         $payment->setIntent("sale");
         $payment->setPayer($payer);
         $payment->setRedirectUrls($redirectUrls);
         $payment->setTransactions(array($transaction));
         try {
             $result = $payment->create($apiContext);
         } catch (Exception $ex) {
             $error = true;
         }
         $approvalLink = $payment->getApprovalLink();
     } else {
         $error = true;
     }
     $response = array('error' => $error, 'approvalLink' => $approvalLink);
     //Send as JSON
     header("Content-Type: application/json", true);
     //Return JSON
     echo json_encode($response);
     //Stop Execution
     exit;
 }