public function prepareAction(User $user, $mcuser, StoreItem $item)
 {
     $paymentName = 'paypal_express_checkout_plus_doctrine';
     $data = array("currency" => "GBP");
     $storage = $this->get('payum')->getStorage('Maxim\\CMSBundle\\Entity\\PaymentDetails');
     $total = $item->getAmount() * 1;
     $tax = 0;
     if ($item->getTax() > 0) {
         $tax = $total * ($item->getTax() / 100);
     }
     /** @var $paymentDetails PaymentDetails */
     $paymentDetails = $storage->createModel();
     $paymentDetails['PAYMENTREQUEST_0_CURRENCYCODE'] = $data['currency'];
     $paymentDetails['PAYMENTREQUEST_0_ITEMAMT'] = number_format($total, 2);
     $paymentDetails['PAYMENTREQUEST_0_TAXAMT'] = number_format($tax, 2);
     $paymentDetails['PAYMENTREQUEST_0_AMT'] = number_format($total + $tax, 2);
     //$paymentDetails['PAYMENTREQUEST_0_ITEMCATEGORY'] = Api::PAYMENTREQUEST_ITERMCATEGORY_PHYSICAL;
     //$paymentDetails['PAYMENTREQUEST_0_QTY']          = 1;
     //$paymentDetails['PAYMENTREQUEST_0_NAME']         = $item->getName();
     $paymentDetails['PAYMENTREQUEST_0_DESC'] = substr(strip_tags($item->getDescription()), 0, 126);
     $custom = array("user_id" => $user->getId(), "amount" => $total, "name" => $mcuser, "ip" => $user->getLastip(), "item_id" => $item->getId(), "discount" => $item->getReduction());
     $paymentDetails['PAYMENTREQUEST_0_CUSTOM'] = json_encode($custom);
     // DIGITAL ITEM
     $paymentDetails['L_PAYMENTREQUEST_0_NAME0'] = strip_tags($item->getName());
     $paymentDetails['L_PAYMENTREQUEST_0_AMT0'] = number_format($item->getAmount(), 2);
     $paymentDetails['L_PAYMENTREQUEST_0_QTY0'] = 1;
     $paymentDetails['L_PAYMENTREQUEST_0_DESC0'] = substr(strip_tags($item->getDescription()), 0, 126);
     $paymentDetails['L_PAYMENTREQUEST_0_TAXAMT0'] = number_format($tax, 2);
     $paymentDetails['L_PAYMENTREQUEST_0_ITEMCATEGORY0'] = Api::PAYMENTREQUEST_ITERMCATEGORY_PHYSICAL;
     $storage->updateModel($paymentDetails);
     $notifyToken = $this->getTokenFactory()->createNotifyToken($paymentName, $paymentDetails);
     $captureToken = $this->getTokenFactory()->createCaptureToken($paymentName, $paymentDetails, 'paypal_done');
     $paymentDetails['INVNUM'] = $paymentDetails->getId();
     $paymentDetails['RETURNURL'] = $captureToken->getTargetUrl();
     $paymentDetails['CANCELURL'] = $captureToken->getTargetUrl();
     $paymentDetails['PAYMENTREQUEST_0_NOTIFYURL'] = $notifyToken->getTargetUrl();
     $storage->updateModel($paymentDetails);
     return $this->redirect($captureToken->getTargetUrl());
 }