¿Hay extensiones, módulos de código abierto de Magento o tutoriales que faciliten la adición de un paso a la comprobación de una página? He tocado el código central para esto varias veces y parece que hay mucha información de pasos codificada.
¿Hay extensiones, módulos de código abierto de Magento o tutoriales que faciliten la adición de un paso a la comprobación de una página? He tocado el código central para esto varias veces y parece que hay mucha información de pasos codificada.
Respuestas:
La respuesta corta a esta pregunta terminó siendo "No". Desde un nivel alto, agregar un nuevo paso de pago significaba
Agregar un nuevo bloque a la página de pago de un paso
Tener ese bloque registrado como un paso
Conecte ese bloque con un prototipo de objeto que maneja todas las interacciones
Reescribiendo varios métodos principales de Magento para insertar el bloque como un paso
Algunos trucos de ajax para que el progreso funcione.
Cubrir esto en total está más allá del alcance de una sola pregunta de desbordamiento de pila. El tutorial vinculado en otra pregunta tiene mucho de lo que necesitará, y también creé una nueva extensión comercial para facilitar todo esto .
Por defecto, magento ofrece algunos pasos de pago. Pero en algún momento debe agregar información adicional del cliente para referencia futura. Una personalización solicitada común es agregar el formulario personalizado en el proceso de pago predeterminado. Esta no es una buena práctica para tocar archivos principales. Puede hacerlo mediante la anulación de módulos. En este ejemplo, Comapnyname es Ipragmatech y el nombre del módulo es Checkoutstep .
Paso 1: Agregar paso personalizado en el proceso de pago
Abra el archivo Ipragmatech> Checkoutstep> Bloque> Onepage> Checkoutstep.php y escriba el siguiente código
class Ipragmatech_Checkoutstep_Block_Onepage_Checkoutstep extends Mage_Checkout_Block_Onepage_Abstract
{
protected function _construct()
{
$this->getCheckout()->setStepData('checkoutstep', array(
'label' => Mage::helper('checkout')->__('Invitation to participation'),
'is_show' => true
));
parent::_construct();
}
}
Paso 2: agregue los pasos que desee y en el proceso de pago
Abra el archivo Ipragmatech> Checkoutstep> Bloque> Onepage> Checkoutstep.php y escriba el siguiente código
class Ipragmatech_Checkoutstep_Block_Onepage extends Mage_Checkout_Block_Onepage
{
public function getSteps()
{
$steps = array();
if (!$this->isCustomerLoggedIn()) {
$steps['login'] = $this->getCheckout()->getStepData('login');
}
$stepCodes = array('billing', 'shipping', 'shipping_method', 'payment', 'checkoutstep', 'review');
foreach ($stepCodes as $step) {
$steps[$step] = $this->getCheckout()->getStepData($step);
}
return $steps;
}
}
Paso 3: tome el valor enviado del formulario personalizado y establezca los valores del formulario personalizado
Abra el ipragmatech> Checkoutstep> controladores> OnepageController.php y escriba la siguiente función
public function saveCheckoutstepAction()
{
$this->_expireAjax();
if ($this->getRequest()->isPost()) {
//Grab the submited value
$_entrant_name = $this->getRequest()->getPost('entrant_name',"");
$_entrant_phone = $this->getRequest()->getPost('entrant_phone',"");
$_entrant_email = $this->getRequest()->getPost('entrant_email',"");
$_permanent_address = $this->getRequest() ->getPost('permanent_address',"");
$_address = $this->getRequest()->getPost('local_address',"");
Mage::getSingleton('core/session') ->setIpragmatechCheckoutstep(serialize(array(
'entrant_name' =>$_entrant_name,
'entrant_phone' =>$_entrant_phone,
'entrant_email' =>$_entrant_email,
'permanent_address' =>$_permanent_address,
'address' =>$_address
)));
$result = array();
$redirectUrl = $this->getOnePage()->getQuote()->getPayment() ->getCheckoutRedirectUrl();
if (!$redirectUrl) {
$this->loadLayout('checkout_onepage_review');
$result['goto_section'] = 'review';
$result['update_section'] = array(
'name' => 'review',
'html' => $this->_getReviewHtml()
);
}
if ($redirectUrl) {
$result['redirect'] = $redirectUrl;
}
$this->getResponse()->setBody(Zend_Json::encode($result));
}
}
Paso 4: guarde la información del formulario personalizado
Cuando se llama al evento checkout_onepage_controller_success_action hook. Abra Ipragmatech> Checkoutstep> Modelo> Observer.php y escriba lo siguiente
class Ipragmatech_Checkoutstep_Model_Observer {
const ORDER_ATTRIBUTE_FHC_ID = 'checkoutstep';
public function hookToOrderSaveEvent() {
if (Mage::helper('checkoutstep')->isEnabled()) {
$order = new Mage_Sales_Model_Order ();
$incrementId = Mage::getSingleton ( 'checkout/session' )->getLastRealOrderId ();
$order->loadByIncrementId ( $incrementId );
// Fetch the data
$_checkoutstep_data = null;
$_checkoutstep_data = Mage::getSingleton ( 'core/session' )->getIpragmatechCheckoutstep ();
$model = Mage::getModel ( 'checkoutstep/customerdata' )->setData ( unserialize ( $_checkoutstep_data ) );
$model->setData ( "order_id",$order["entity_id"] );
try {
$insertId = $model->save ()->getId ();
Mage::log ( "Data successfully inserted. Insert ID: " . $insertId, null, 'mylog.log');
} catch ( Exception $e ) {
Mage::log ( "EXCEPTION " . $e->getMessage (), null, 'mylog.log' );
}
}
}
}
Magento: Agregar formulario personalizado en la extensión de pago es una solución completa para agregar un paso adicional en el proceso de pago de su sitio web de comercio electrónico. Permite al administrador exportar datos de una tabla personalizada en formato CSV.
Visite el enlace para obtener esta extensión gratuita http://www.magentocommerce.com/magento-connect/custom-form-in-checkout.html
sí, hay un buen tutorial sobre esto aquí " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "