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; }