2012-07-14 17 views
5

Estoy tratando de enviar a un usuario para que realice el pago programáticamente en Magento. Puedo enviarlos al $this->_redirect('checkout/onepage');, pero si tienen algún tipo de extensión de pago de terceros no utilizaré el correcto. ¿Hay alguna manera de obtener la url de pago predeterminada para el sitio y redireccionar allí?¿Cómo obtengo la url de pago predeterminada para una tienda magento?

+0

En cart.phtml, tiene ' getMethods (' methods ') as $ method):?> ', que es una lista de todos los métodos de pago disponibles para el sitio. Si 'getMethods()' devuelve solo un método, entonces hay una URL de pago predeterminada. ¿Qué pasa si devuelve más de un método? – kiatng

Respuesta

4

Por defecto, el enlace de pago se devuelve por getCheckoutUrl() función de Mage_Checkout_Block_Onepage_Link clase. Si es bastante simple:

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

extensiones de 3 ª parte lo más probable es anular esta clase (lo he comprobado OneStepCheckout 1.4 y funciona como esto).

+1

Parece que es exactamente lo que necesito. Sin embargo, cuando creo un nuevo objeto Mage_Checkout_Block_Onepage_Link, me dice que la función no está definida. – smokingoyster

+3

Terminé usando esto en un controlador frontal 'Mage :: helper ('checkout/url') -> getCheckoutUrl()' – smokingoyster

+0

Esto no funcionará bien si el sitio usa solo el pago de múltiples entradas. – kiatng

19

se puede tratar con

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

este enlace de retorno de pago en todas las condiciones

  • durante el uso de extensiones como OnePagecheckout o OneStepcheckout
  • si en la extensión se utiliza simplemente devuelve el básico URL de pago
+0

Este es un enfoque más correcto. Niza – bla0009

+1

No es cierto que 'Mage :: helper ('checkout/url') -> getCheckoutUrl();' devuelva el enlace de pago en todas las condiciones. Siempre devuelve la URL de pago de una página: '$ this-> getUrl ('checkout/onepage', array ('_ secure' => true)); 'Por lo tanto, no funcionará bien si el sitio utiliza solo el pago de múltiples compras. – kiatng

+0

Acepto que no siempre funciona. Para nosotros, con Magento 1.9, devuelve http: // /onestepcheckout/y al intentar redirigir a esa URL, Magento dice "El proceso de pago de una página está desactivado". –

Cuestiones relacionadas