簡體   English   中英

Magento-從外部頁面重定向后客戶未登錄

[英]Magento - Customer Not Logged in After Redirect From External Page

創建新帳戶后,讓客戶保持登錄狀態非常麻煩。 我正在為其創建一個帳戶,並將產品從外部站點添加到購物車,然后將其發送到Magento商店。 我想發生的是:

  1. 客戶進入注冊頁面並輸入相關信息。
  2. 他們進入新頁面,可以在其中選擇向購物車中添加免費樣品。
  3. 采摘樣品后。 他們的帳戶已創建,並將他們的購物車中的樣品重定向到Magento商店。

我遇到的問題在第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發布請求中調用的,因此,當我從_addSamplesToCart獲得成功的返回值時,我會執行一個簡單的javascript重定向(window.location =“ http://www.myhostname.net/welcome”),並且正確地我在那兒,但我沒有登錄。

我整個下午一直在四處張望,嘗試一些不同的事情,但沒有任何效果。 我也嘗試過將隱藏的表單提交到/ customer / account / loginPost,但仍然無法正常工作。 我已驗證它在Magento中正確創建了一個帳戶。 我唯一的直覺是我正在使用AJAX和PHP進行混合,因此以某種方式將cookie或會話混淆了嗎?

如果您嘗試使用的主機名不同於Magento存儲所使用的主機名,則該主機名將無法正常工作。 您可以通過檢查在AJAX調用之后是否創建前端cookie來驗證這一點。

我建議您在Magento中創建一個新的控制器,該控制器接收剛剛創建的客戶的ID,並執行您在函數中編寫的代碼:

www.myhostname.net/autologin/myaction/13(其中13是剛創建的客戶的ID)。

顯然,您應該添加其他內容以避免安全問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM