Aggiunta di un passaggio al Pagamento in una pagina


18

Esistono estensioni, moduli Magento open source o tutorial che rendono più semplice l'aggiunta di un passaggio al checkout di una pagina? Ho cercato il codice di base per questo alcune volte e sembra che ci siano molte informazioni sul passo codificate.


5
Sfortunatamente il codice di Checkout non sembra essere molto flessibile, molte informazioni sono hardcoded dai template ai file di fisarmonica javascript.
Allan MacGregor

1
Ho seguito questo tutorial e sono stato in grado di aggiungere un nuovo passaggio al checkout onepage. Tuttavia, per raggiungere questo passaggio è necessario eseguire l'override di molti file core. Spero che questo possa essere d'aiuto eccellenzamagentoblog.com/magento-onestep-checkout-add-step
Sukeshini

Risposte:


6

La breve risposta a questa domanda finì per essere "No". Da un livello elevato, l'aggiunta di un nuovo passaggio di verifica ha significato

  1. Aggiunta di un nuovo blocco alla pagina di pagamento in un passaggio

  2. Avere quel blocco si registra come un passo

  3. Collega quel blocco con un oggetto prototipo che ha gestito tutte le interazioni

  4. Riscrivere diversi metodi Magento di base per inserire il blocco come passaggio

  5. Qualche trucco ajax per far funzionare i progressi.

Coprirlo in totale non rientra nell'ambito di una singola domanda di StackTranslate.it. Il tutorial collegato in un'altra domanda ha molte cose di cui avrai bisogno e ho anche creato una nuova estensione commerciale per rendere tutto più semplice .


4

Di default magento fornisce alcuni passaggi per il checkout. Ma a volte è necessario aggiungere ulteriori informazioni dal cliente per riferimento futuro. Una personalizzazione richiesta comune è quella di aggiungere il modulo personalizzato nel processo di checkout predefinito. Questa non è una buona pratica per toccare i file core. Puoi farlo tramite l'override dei moduli. In questo esempio Comapnyname è Ipragmatech e il nome del modulo è Checkoutstep .

Passaggio 1: aggiungere un passaggio personalizzato nel processo di pagamento

Apri il file Ipragmatech> Checkoutstep> Blocco> Onepage> Checkoutstep.php e scrivi il seguente codice

    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();
       }
     }

Step2: aggiungi i passaggi che e dove vuoi nel processo di checkout

Apri il file Ipragmatech> Checkoutstep> Blocco> Onepage> Checkoutstep.php e scrivi il seguente codice

    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;
   }
}

Passaggio 3: prendi il valore inviato del modulo personalizzato e imposta i valori del modulo personalizzato

Apri ipragmatech> Checkoutstep> controller> OnepageController.php e scrivi la seguente opzione

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

Passaggio 4: salvare le informazioni sul modulo personalizzato

Quando viene chiamato l'hook dell'evento checkout_onepage_controller_success_action. Apri Ipragmatech> Checkoutstep> Modello> Observer.php e scrivi quanto segue

    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 - Aggiungi modulo personalizzato nell'estensione di pagamento è una soluzione completa per aggiungere ulteriori passaggi nel processo di pagamento per il tuo sito web di e-commerce. Consente all'amministratore di esportare i dati dalla tabella personalizzata in formato CSV.

Visita il link per ottenere questa estensione gratuita http://www.magentocommerce.com/magento-connect/custom-form-in-checkout.html


0

sì, c'è un buon tutorial su questo qui " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "


4
Dovresti spiegare un po 'cosa si trova alla fine di quell'URL. Le risposte a collegamento singolo non sono le risposte migliori.
Marius

l'URL stesso dice magento-onestep-checkout-add-step e questo è ciò che la domanda sta ponendo.
Dhanpat Saran,

5
Sono d'accordo con te, la spiegazione nel link è meravigliosa, ma dai un'occhiata a come dovrebbero essere le risposte sui siti Web SO: meta.stackexchange.com/a/8259/224252 e questo: magento.stackexchange.com/help/how -per-risposta
Marius
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.