Ajout d'une étape à la vérification d'une page

18

Existe-t-il des extensions, des modules Magento open-source ou des didacticiels qui facilitent l'ajout d'une étape à la vérification d'une page? J'ai fouillé le code principal pour cela plusieurs fois et il semble qu'il y ait beaucoup d'informations d'étape codées en dur.

Alan Storm
la source
5
Malheureusement, le code Checkout ne semble pas être très flexible, de nombreuses informations sont codées en dur à partir des modèles vers les fichiers d'accordéon javascript.
Allan MacGregor
1
J'ai suivi ce didacticiel et j'ai pu ajouter une nouvelle étape dans le paiement à la page. Quoi qu'il en soit, de nombreux fichiers de base doivent être remplacés pour réaliser cette étape. J'espère que cela vous sera utile. Excellencemagentoblog.com/magento-onestep-checkout-add-step
Sukeshini

Réponses:

6

La réponse courte à cette question a fini par être «non». D'un niveau élevé, l'ajout d'une nouvelle étape de paiement signifiait

  1. Ajout d'un nouveau bloc à la page de paiement en une étape

  2. Faire enregistrer ce bloc comme une étape

  3. Connectez ce bloc à un objet prototype qui a géré toutes les interactions

  4. Réécriture de plusieurs méthodes principales de Magento pour insérer le bloc en tant qu'étape

  5. Quelques astuces ajax pour faire fonctionner les trucs de progression.

Couvrir tout cela dépasse la portée d'une seule question de dépassement de pile. Le tutoriel lié dans une autre question a beaucoup de ce dont vous aurez besoin, et j'ai également créé une nouvelle extension commerciale pour rendre tout cela plus facile .

Alan Storm
la source
4

Par défaut, magento donne quelques étapes de paiement. Mais vous devez parfois ajouter des informations supplémentaires du client pour référence future. Une personnalisation demandée courante consiste à ajouter le formulaire personnalisé dans le processus de paiement par défaut. Ce n'est pas une bonne pratique de toucher les fichiers principaux. Vous pouvez le faire en remplaçant les modules. Dans cet exemple, Comapnyname est Ipragmatech et le nom du module est Checkoutstep .

Étape 1: ajouter une étape personnalisée dans le processus de paiement

Ouvrez le fichier Ipragmatech> Checkoutstep> Block> Onepage> Checkoutstep.php et écrivez le code suivant

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

Étape 2: Ajoutez les étapes qui et où vous voulez dans le processus de paiement

Ouvrez le fichier Ipragmatech> Checkoutstep> Block> Onepage> Checkoutstep.php et écrivez le code suivant

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

Étape 3: saisir la valeur soumise du formulaire personnalisé et définir les valeurs du formulaire personnalisé

Ouvrez ipragmatech> Checkoutstep> contrôleurs> OnepageController.php et écrivez la fonction suivante

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

Étape 4: enregistrer les informations du formulaire personnalisé

Lorsque le crochet d'événement checkout_onepage_controller_success_action est appelé. Ouvrez Ipragmatech> Checkoutstep> Model> Observer.php et écrivez ce qui suit

    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 - Ajouter un formulaire personnalisé dans l'extension de paiement est une solution complète pour ajouter une étape supplémentaire dans le processus de paiement de votre site Web de commerce électronique. Il permet à l'administrateur d'exporter des données à partir d'une table personnalisée au format CSV.

Visitez le lien pour obtenir cette extension gratuite http://www.magentocommerce.com/magento-connect/custom-form-in-checkout.html

Ajay
la source
0

oui il y a un bon tutoriel à ce sujet ici " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "

Dhanpat Saran
la source
4
Vous devez expliquer un peu ce qui se trouve à la fin de cette URL. Les réponses à lien unique ne sont pas les meilleures réponses.
Marius
l'url elle-même dit magento-onestep-checkout-add-step et c'est ce que la question demande.
Dhanpat Saran
5
Je suis d'accord avec vous, l'explication dans le lien est merveilleuse, mais regardez comment les réponses devraient être sur les sites Web SO: meta.stackexchange.com/a/8259/224252 et ceci: magento.stackexchange.com/help/how -à-répondre
Marius