Magento - 从外部页面重定向后未登录客户

时间:2011-05-11 23:43:43

标签: session soap magento

在创建新帐户后,我在让客户保持登录方面遇到了很多麻烦。我正在创建一个帐户,并将产品从外部网站添加到购物车,然后将它们发送到Magento商店。我想要发生的是:

  1. 客户进入注册页面并输入相关信息。
  2. 他们会转到新页面,在那里他们可以选择将免费样品添加到购物车中。
  3. 采摘样品后。他们的帐户已创建,并且会将其重定向到Magento商店,并将样品放入购物车中。
  4. 我遇到的问题是在第2步和第3步之间。我使用Magento的SOAP API创建了一个帐户,其中包含以下内容:

    $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 ) );
    

    然后我返回他们的客户ID,我将其传递给另一个实际登录的功能,并将产品添加到他们的购物车中:

    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 post请求调用的,所以当我从_addSamplesToCart获得一个成功的返回值时,我会做一个简单的javascript重定向(window.location =“http://www.myhostname.net/welcome”)和它正确地把我带到了那里,但我还没有登录。

    我整个下午都在环顾四周,尝试了几件不同的事情,没有任何效果。我也尝试过将一个隐藏的表单提交给/ customer / account / loginPost,它仍然无效。我已经确认它在Magento中正确创建了一个帐户。我唯一的预感就是我用混合的AJAX和PHP这样做,所以饼干或会话不知何故变得混乱了?

1 个答案:

答案 0 :(得分:0)

如果您尝试从不同于Magento商店使用的主机名登录,则无法使用。您可以通过检查AJAX调用后是否创建前端cookie来验证这一点。

我建议你在Magento中创建一个新的控制器,它接收刚创建的客户的id并执行你在函数中编写的代码:

www.myhostname.net/autologin/myaction/13(其中13是刚刚创建的客户的ID)。

显然,您应该添加其他内容以避免安全问题。