Ejemplo n.º 1
0
 /**
  * handleRequest
  *
  * @return void
  */
 public function handleRequest()
 {
     if (\XLite\Core\Auth::getInstance()->isLogged() && 'logoff' !== \XLite\Core\Request::getInstance()->{static::PARAM_ACTION}) {
         $this->setReturnURL($this->buildURL());
     }
     parent::handleRequest();
 }
Ejemplo n.º 2
0
 /**
  * handleRequest
  *
  * @return void
  */
 public function handleRequest()
 {
     if (!$this->isLogged() && !$this->isRegisterMode()) {
         $this->setReturnURL($this->buildURL('login'));
     }
     parent::handleRequest();
 }
Ejemplo n.º 3
0
 /**
  * Handles the request.
  *
  * @return void
  */
 public function handleRequest()
 {
     if (!$this->isValidRequest()) {
         $this->display404();
         $this->doRedirect();
     }
     parent::handleRequest();
 }
Ejemplo n.º 4
0
 /**
  * Handles the request. Parses the request variables if necessary. Attempts to call the specified action function
  *
  * @return void
  */
 public function handleRequest()
 {
     $request = \XLite\Core\Request::getInstance();
     foreach ($this->getAJAXParamsTranslationTable() as $ajaxParam => $requestParam) {
         if (!empty($request->{$ajaxParam})) {
             $request->{$requestParam} = $request->{$ajaxParam};
             $this->set($requestParam, $request->{$ajaxParam});
         }
     }
     parent::handleRequest();
 }
Ejemplo n.º 5
0
 /**
  * Handles the request.
  * Parses the request variables if necessary. Attempts to call the specified action function
  *
  * @return void
  */
 public function handleRequest()
 {
     \XLite\Core\Session::getInstance()->iframePaymentData = null;
     // security check on return page
     $orderId = \XLite\Core\Request::getInstance()->order_id;
     if ($orderId != \XLite\Core\Session::getInstance()->last_order_id && $orderId != $this->getCart()->getOrderId()) {
         $this->redirect($this->buildURL('cart'));
     } else {
         parent::handleRequest();
     }
 }
Ejemplo n.º 6
0
Archivo: Rest.php Proyecto: kingsj/core
 /**
  * Handles the request.
  * Parses the request variables if necessary. Attempts to call the specified action function
  *
  * @return void
  */
 public function handleRequest()
 {
     if (in_array(\XLite\Core\Request::getInstance()->action, $this->restActions)) {
         $this->currentRepo = $this->getRepo(\XLite\Core\Request::getInstance()->name, \XLite\Core\Request::getInstance()->action);
         if (!$this->currentRepo) {
             $this->data['status'] = self::STATUS_INAPPLY;
         } else {
             $this->data['status'] = self::STATUS_SUCCESS;
         }
     }
     parent::handleRequest();
 }
Ejemplo n.º 7
0
 /**
  * Handles the request
  *
  * @return void
  */
 public function handleRequest()
 {
     parent::handleRequest();
     if (isset(\XLite\Core\Request::getInstance()->pageId)) {
         $ordersSearch = \XLite\Core\Session::getInstance()->orders_search;
         if (!is_array($ordersSearch)) {
             $ordersSearch = \XLite\Model\Order::getDefaultSearchConditions();
         }
         $ordersSearch['pageId'] = intval(\XLite\Core\Request::getInstance()->pageId);
         \XLite\Core\Session::getInstance()->orders_search = $ordersSearch;
     }
 }
Ejemplo n.º 8
0
 /**
  * Handles the request
  *
  * @return void
  */
 public function handleRequest()
 {
     \XLite\Core\Request::getInstance()->action = 'callback';
     parent::handleRequest();
 }
Ejemplo n.º 9
0
 /**
  * Go to cart view if cart is empty
  *
  * @return void
  */
 public function handleRequest()
 {
     // check if it's IPN callback
     if (\XLite\Core\Request::getInstance()->isipn == 'Y') {
         $this->handleIPNCallback();
         exit;
     }
     if (!$this->getCart()->checkCart()) {
         $this->setHardRedirect();
         $this->setReturnURL($this->buildURL('cart'));
         $this->doRedirect();
     }
     if (\XLite\Core\Request::getInstance()->isPost()) {
         switch (\XLite\Core\Request::getInstance()->mode) {
             case 'check_address':
                 $orefid = \XLite\Core\Request::getInstance()->orefid;
                 $addr_set = false;
                 $res = AMZ::func_amazon_pa_request('GetOrderReferenceDetails', array('AmazonOrderReferenceId' => $orefid));
                 if ($res) {
                     $res = AMZ::func_array_path($res, 'GetOrderReferenceDetailsResponse/GetOrderReferenceDetailsResult/OrderReferenceDetails/Destination/PhysicalDestination/0/#');
                     if ($res) {
                         $this->checkAnonymousProfile();
                         $tmp = array();
                         $tmp['zipcode'] = $res['PostalCode'][0]['#'];
                         $tmp['country_code'] = $res['CountryCode'][0]['#'];
                         $tmp['city'] = $res['City'][0]['#'];
                         if ($_st = \XLite\Core\Database::getRepo('XLite\\Model\\State')->findOneByCountryAndCode($tmp['country_code'], $res['StateOrRegion'][0]['#'])) {
                             $tmp['state_id'] = $_st->getStateId();
                         } elseif (!empty($res['StateOrRegion'][0]['#'])) {
                             $tmp['custom_state'] = $res['StateOrRegion'][0]['#'];
                         }
                         $this->updateAddress($tmp);
                         $addr_set = true;
                     }
                 }
                 if (!$addr_set) {
                     echo 'error';
                     AMZ::func_amazon_pa_error("check address error: orefid={$orefid} reply=" . print_r($res, true));
                 } else {
                     echo 'ok';
                 }
                 break;
             case 'place_order':
                 $amazon_pa_orefid = \XLite\Core\Request::getInstance()->amazon_pa_orefid;
                 $cart_total_cost = $this->getCart()->getTotal();
                 $customer_notes = \XLite\Core\Request::getInstance()->notes;
                 $payment_method_text = 'Pay with Amazon';
                 $this->getCart()->assignOrderNumber();
                 // SetOrderReferenceDetails
                 $res = AMZ::func_amazon_pa_request('SetOrderReferenceDetails', array('AmazonOrderReferenceId' => $amazon_pa_orefid, 'OrderReferenceAttributes.OrderTotal.Amount' => $cart_total_cost, 'OrderReferenceAttributes.OrderTotal.CurrencyCode' => \XLite\Core\Config::getInstance()->Amazon->PayWithAmazon->amazon_pa_currency, 'OrderReferenceAttributes.PlatformId' => AMZ::AMAZON_PA_PLATFORM_ID, 'OrderReferenceAttributes.SellerNote' => '', 'OrderReferenceAttributes.SellerOrderAttributes.SellerOrderId' => $this->getCart()->getOrderNumber()));
                 // ConfirmOrderReference
                 $res = AMZ::func_amazon_pa_request('ConfirmOrderReference', array('AmazonOrderReferenceId' => $amazon_pa_orefid));
                 $this->checkAnonymousProfile();
                 // get more order details using GetOrderReferenceDetails after confirmation
                 $res = AMZ::func_amazon_pa_request('GetOrderReferenceDetails', array('AmazonOrderReferenceId' => $amazon_pa_orefid));
                 if ($res) {
                     $dest = AMZ::func_array_path($res, 'GetOrderReferenceDetailsResponse/GetOrderReferenceDetailsResult/OrderReferenceDetails/Destination/PhysicalDestination/0/#');
                     $buyer = AMZ::func_array_path($res, 'GetOrderReferenceDetailsResponse/GetOrderReferenceDetailsResult/OrderReferenceDetails/Buyer/0/#');
                     if ($dest) {
                         //address
                         $tmp = array();
                         $tmp['zipcode'] = $dest['PostalCode'][0]['#'];
                         $tmp['country_code'] = $dest['CountryCode'][0]['#'];
                         $tmp['city'] = $dest['City'][0]['#'];
                         if ($_st = \XLite\Core\Database::getRepo('XLite\\Model\\State')->findOneByCountryAndCode($tmp['country_code'], $dest['StateOrRegion'][0]['#'])) {
                             $tmp['state_id'] = $_st->getStateId();
                         } elseif (!empty($dest['StateOrRegion'][0]['#'])) {
                             $tmp['custom_state'] = $dest['StateOrRegion'][0]['#'];
                         }
                         if (!empty($dest['Phone'][0]['#'])) {
                             $tmp['phone'] = $dest['Phone'][0]['#'];
                         }
                         $tmp['street'] = $dest['AddressLine1'][0]['#'];
                         if (isset($dest['AddressLine2'])) {
                             $tmp['street'] .= ' ' . $dest['AddressLine2'][0]['#'];
                         }
                         list($tmp['firstname'], $tmp['lastname']) = explode(' ', $dest['Name'][0]['#'], 2);
                         if (empty($tmp['lastname'])) {
                             // XC does not support single word customer name
                             $tmp['lastname'] = $tmp['firstname'];
                         }
                         $this->updateAddress($tmp);
                         // email, name
                         if ($buyer) {
                             $uinfo = array();
                             $uinfo['email'] = $buyer['Email'][0]['#'];
                             // list($uinfo['firstname'], $uinfo['lastname']) = explode(' ', $buyer['Name'][0]['#'], 2);
                             // update email
                             $profile = $this->getCartProfile();
                             $profile->setLogin($uinfo['email']);
                             $this->getCart()->setProfile($profile);
                         }
                     }
                 }
                 $orderids = $this->placeAmazonOrder($payment_method_text);
                 AMZ::func_amazon_pa_save_order_extra($orderids, 'AmazonOrderReferenceId', $amazon_pa_orefid);
                 $order_status = \XLite\Model\Order\Status\Payment::STATUS_CANCELED;
                 $amz_authorized = false;
                 $amz_authorization_id = '';
                 $amz_captured = false;
                 $amz_capture_id = '';
                 $advinfo = array();
                 // Authorize
                 $_tmp = array('AmazonOrderReferenceId' => $amazon_pa_orefid, 'AuthorizationAmount.Amount' => $cart_total_cost, 'AuthorizationAmount.CurrencyCode' => \XLite\Core\Config::getInstance()->Amazon->PayWithAmazon->amazon_pa_currency, 'AuthorizationReferenceId' => 'auth_' . $orderids, 'SellerAuthorizationNote' => '');
                 if (\XLite\Core\Config::getInstance()->Amazon->PayWithAmazon->amazon_pa_capture_mode == 'C') {
                     // capture immediate
                     $_tmp['CaptureNow'] = 'true';
                 }
                 if (\XLite\Core\Config::getInstance()->Amazon->PayWithAmazon->amazon_pa_mode == 'test' && !empty($customer_notes)) {
                     // simulate decline
                     if ($customer_notes == 'decline') {
                         $_tmp['SellerAuthorizationNote'] = urlencode('{"SandboxSimulation":{"State":"Declined","ReasonCode":"AmazonRejected"}}');
                     }
                 }
                 if (\XLite\Core\Config::getInstance()->Amazon->PayWithAmazon->amazon_pa_sync_mode == 'S') {
                     // sync request (returns only "open" or "declined" status, no "pending")
                     $_tmp['TransactionTimeout'] = '0';
                 }
                 $res = AMZ::func_amazon_pa_request('Authorize', $_tmp);
                 if ($res) {
                     $_auth_details = AMZ::func_array_path($res, 'AuthorizeResponse/AuthorizeResult/AuthorizationDetails/0/#');
                     if ($_auth_details) {
                         $amz_authorization_id = $_auth_details['AmazonAuthorizationId'][0]['#'];
                         $_reply_status = $_auth_details['AuthorizationStatus'][0]['#']['State'][0]['#'];
                         $advinfo[] = "AmazonAuthorizationId: {$amz_authorization_id}";
                         $advinfo[] = "AuthorizationStatus: {$_reply_status}";
                         AMZ::func_amazon_pa_save_order_extra($orderids, 'amazon_pa_auth_id', $amz_authorization_id);
                         AMZ::func_amazon_pa_save_order_extra($orderids, 'amazon_pa_auth_status', $_reply_status);
                         if ($_reply_status == 'Declined') {
                             $order_status = \XLite\Model\Order\Status\Payment::STATUS_DECLINED;
                         }
                         if ($_reply_status == 'Pending') {
                             $order_status = \XLite\Model\Order\Status\Payment::STATUS_QUEUED;
                             // wait for IPN message
                         }
                         if ($_reply_status == 'Open') {
                             $amz_authorized = true;
                         }
                         if ($_reply_status == 'Closed') {
                             // capture now mode
                             if (\XLite\Core\Config::getInstance()->Amazon->PayWithAmazon->amazon_pa_capture_mode == 'C') {
                                 $amz_authorized = true;
                                 $amz_captured = true;
                                 $_capt_id = $_auth_details['IdList'][0]['#']['member'][0]['#'];
                                 AMZ::func_amazon_pa_save_order_extra($orderids, 'amazon_pa_capture_id', $_capt_id);
                             }
                         }
                     } else {
                         // log error
                         AMZ::func_amazon_pa_error('Unexpected authorize reply: res=' . print_r($res, true));
                     }
                 }
                 if ($amz_authorized) {
                     if ($amz_captured) {
                         // capture now mode, order is actually processed here
                         $order_status = \XLite\Model\Order\Status\Payment::STATUS_PAID;
                     } else {
                         // pre-auth
                         $order_status = \XLite\Model\Order\Status\Payment::STATUS_AUTHORIZED;
                     }
                 }
                 // change order status
                 AMZ::func_change_order_status($orderids, $order_status, join("\n", $advinfo));
                 // show invoice or error message
                 $this->orderRedirect($orderids, $order_status);
                 break;
         }
         // switch mode
     }
     // post
     parent::handleRequest();
 }
Ejemplo n.º 10
0
 /**
  * Handles the request.
  * Parses the request variables if necessary. Attempts to call the specified action function
  *
  * @return void
  */
 public function handleRequest()
 {
     \XLite\Core\Request::getInstance()->category_id = intval(\XLite\Core\Request::getInstance()->category_id);
     parent::handleRequest();
 }
Ejemplo n.º 11
0
 /**
  * Handles the request.
  * Parses the request variables if necessary. Attempts to call the specified action function
  *
  * @return void
  */
 public function handleRequest()
 {
     parent::handleRequest();
     $this->headerStatus(404);
 }