2012-07-14 59 views
5

我試圖發送一個用戶以編程方式在Magento結帳。我可以將它們發送到$this->_redirect('checkout/onepage');,但如果他們有某種第三方結賬擴展,我將不會使用正確的。有沒有辦法獲得該網站的默認結帳網址並在那裏重定向?如何獲取magento商店的默認結帳網址?

+0

在cart.phtml中,它有'<?php foreach($ this-> getMethods('方法')作爲$方法):?>',這是列出可用於該網站的所有結帳方法。如果'getMethods()'只返回一個方法,那麼就有一個默認的結帳URL。如果它返回多個方法呢? – kiatng 2016-08-22 01:10:45

回答

4

默認情況下,檢出鏈接返回getCheckoutUrl()功能Mage_Checkout_Block_Onepage_Link類。如果是很簡單的:

public function getCheckoutUrl() 
{ 
    return $this->getUrl('checkout/onepage', array('_secure'=>true)); 
} 

第三方擴展將最有可能重寫此類(我檢查OneStepCheckout 1.4和它的工作原理是這樣)。

+1

這看起來正是我所需要的。但是,當我創建一個新的Mage_Checkout_Block_Onepage_Link對象時,它告訴我該函數未定義。 – smokingoyster 2012-07-16 18:21:49

+3

我結束了在前端控制器'法師::幫手('結帳/ URL') - > getCheckoutUrl()' – smokingoyster 2012-07-17 21:23:47

+0

這將無法正常工作,如果該網站只使用multishipping結帳。 – kiatng 2016-08-22 00:29:08

19

你可以用

$checkout_link = Mage::helper('checkout/url')->getCheckoutUrl(); 

這回檢出鏈接嘗試在所有條件下

  • 在使用任何擴展,如OnePagecheckout或OneStepcheckout
  • 如果擴展使用它只是返回的基本結帳URL
+0

這是比較正確的做法。尼斯 – bla0009 2015-03-19 11:58:42

+1

在所有條件下,Mage :: helper('checkout/url') - > getCheckoutUrl();'返回checkout鏈接是不正確的。它總是返回onepage結帳URL:'$ this-> getUrl('checkout/onepage',array('_ secure'=> true));'因此,如果網站只使用多結賬結帳,它將無法正常工作。 – kiatng 2016-08-22 01:01:11

+0

我同意它並不總是有效。對於我們來說,使用Magento 1.9時,它會返回http:// /onestepcheckout /並嘗試重定向到該URL時,Magento會說「單頁結帳已禁用」。 – 2016-09-12 18:59:11