Magento - Клиент не вошел в систему после перенаправления с внешней страницы - PullRequest
0 голосов
/ 12 мая 2011

У меня много проблем с тем, чтобы заставить клиента оставаться в системе после создания новой учетной записи.Я создаю им учетную запись и добавляю товары в корзину с внешнего сайта, а затем отправляю их в магазин Magento.Я хочу, чтобы это произошло:

  1. Клиент переходит на страницу регистрации и вводит соответствующую информацию.
  2. Он переходит на новую страницу, где он может добавить бесплатные образцы вих корзина.
  3. После отбора образцов.их учетная запись создана, и они перенаправлены в магазин Magento с образцами в корзине.

У меня проблема между шагами 2 и 3. Я создаю учетную запись с помощью SOAP API Magento.со следующим:

$customerInfo = array('firstname' => $custFirstname, 'lastname' => $custLastname, 'email' => $email, 'password_hash' => md5( $new_password ), 'store_id' => 34, 'website_id' => 25,'group_id' => 9);

// Call API method customer.create
$newCustomerId = $client->call( $session, 'customer.create', array( $customerInfo ) );

Затем я возвращаю их идентификатор клиента, который я передаю другой функции, которая фактически регистрирует их и добавляет товары в их корзину:

public static function _addSamplesToCart($customer_id, $sample_one, $sample_two, $sample_three){
Mage::getSingleton("core/session", array("name" => "frontend"));
$customerSession = Mage::getSingleton('customer/session', array("name" => "frontend"));
$customerSession->init("customer_bn_us");
$customerSession->loginById($customer_id);
$cart = Mage::getSingleton('checkout/cart');
$cart->addProductsByIds($idArray);
$cart->save();
$cart->getCheckoutSession()->setCartWasUpdated(true);
}

Эти функциина самом деле вызывается из почтовых запросов AJAX, поэтому, когда я получаю успешное возвращаемое значение из _addSamplesToCart, я делаю простое перенаправление javascript (window.location = "http://www.myhostname.net/welcome"), и оно корректно переносит меня туда, но я не вошел в систему.

Я искал весь день и пробовал несколько разных вещей, но ничего не получалось. Я также пытался сделать скрытую форму отправки в / customer / account / loginPost, и она все еще не работает. У меня естьпроверил, что это правильно создает учетную запись в Magento. Единственное, что я догадываюсь, это то, что я делаю это со смесью AJAX и PHP, так или иначекуки или сессии перепутаны?

1 Ответ

0 голосов
/ 12 мая 2011

Если вы пытаетесь войти в систему с имени хоста, отличного от того, которое используется в магазине Magento, оно не может работать.Вы можете проверить это, проверив, создан ли файл cookie внешнего интерфейса после вызова AJAX.

Я предлагаю вам создать новый контроллер в Magento, который получает идентификатор только что созданного клиента и выполняет код, который вы написали в своемфункция:

www.myhostname.net / autologin / myaction / 13 (где 13 - это идентификатор только что созданного клиента).

Очевидно, вам следует добавить что-то еще, чтобы избежать проблем с безопасностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...