Bir Sayfa Ödemesine Adım Ekleme


18

Tek sayfalık ödeme işlemine bir adım eklemeyi kolaylaştıran herhangi bir uzantı, açık kaynaklı Magento modülü veya öğretici var mı? Bunun için birkaç kez çekirdek kodu poked ve sabit kodlanmış adım bilgileri bir sürü gibi görünüyor.


5
Ne yazık ki Checkout kodu çok esnek görünmüyor, bilgilerin çoğu şablonlardan javascript akordeon dosyalarına sabit kodlanmış.
Allan MacGregor

1
Bu eğiticiyi izledim ve sayfadaki ödeme işlemine yeni bir adım ekleyebildim. Her neyse, bu adıma ulaşmak için birçok çekirdek dosyanın geçersiz kılınması gerekir. Umarım bu yardımcı olacaktır excellencemagentoblog.com/magento-onestep-checkout-add-step
Sukeshini

Yanıtlar:


6

Bu sorunun kısa cevabı "Hayır" oldu. Yüksek bir seviyeden, yeni bir ödeme adımı eklemek

  1. Tek adımlı ödeme sayfasına yeni bir Blok ekleme

  2. Bu bloğun bir adım olarak kendini kaydettirmesi

  3. Bu bloğu, tüm etkileşimleri işleyen bir prototip nesnesiyle bağlayın

  4. Bloğu adım olarak eklemek için birkaç temel Magento yöntemini yeniden yazma

  5. Bazı ajax hile ilerleme şeyler işe almak için.

Toplamı kapsamak, tek bir Stack Overflow sorusunun kapsamı dışındadır. Başka bir soruya bağlı öğretici , ihtiyacınız olan şeylerin çoğuna sahiptir ve ayrıca tüm bunları kolaylaştırmak için yeni bir ticari uzantı oluşturdum .


4

Varsayılan olarak magento bazı ödeme adımları verir. Ancak bazen ileride başvurmak üzere müşteriden ek bilgi eklemeniz gerekir. Sıkça istenen bir özelleştirme, Özel Form'u varsayılan ödeme işlemine eklemektir. Temel dosyalara dokunmak iyi bir uygulama değildir. Bunu Modülleri geçersiz kılarak yapabilirsiniz. Bu örnekte Comapnyname Ipragmatech ve Modül adı Checkoutstep'dir .

Adım 1: Ödeme işlemine Özel adım ekleyin

Ipragmatech> Checkoutstep> Engelle> Sayfa>> Checkoutstep.php dosyasını açın ve aşağıdaki kodu yazın

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

Adım 2: Ödeme işleminde istediğiniz ve istediğiniz adımları ekleyin

Ipragmatech> Checkoutstep> Engelle> Sayfa>> Checkoutstep.php dosyasını açın ve aşağıdaki kodu yazın

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

3. Adım: Özel formun gönderilen değerini alın ve Özel formun değerlerini ayarlayın

İpragmatech> Checkoutstep> denetleyiciler> OnepageController.php dosyasını açın ve aşağıdaki işlevi yazı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));
    }
}

4. Adım: Özel Form bilgilerini kaydedin

Checkout_onepage_controller_success_action olay kancası çağrıldığında. Ipragmatech> Checkoutstep> Model> Observer.php dosyasını açın ve aşağıdakileri yazın

    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 - Checkout Uzantısında Özel Form Ekle, e-ticaret web siteniz için Checkout işlemine ek adım eklemek için eksiksiz bir çözümdür. Yöneticinin CSV biçiminde özel tablodan veri dışa aktarmasına izin verir.

Bu ücretsiz uzantıyı edinmek için bağlantıyı ziyaret edin http://www.magentocommerce.com/magento-connect/custom-form-in-checkout.html


0

evet burada bu konuda iyi bir öğretici var " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "


4
Bu URL'nin sonunda neler olduğunu biraz açıklamanız gerekir. Tek link cevapları en iyi cevap değildir.
Marius

url'nin kendisi magento-onestep-checkout-add-step diyor ve bu soru soruyor.
Dhanpat Saran

5
Size katılıyorum, bağlantıdaki açıklama harika, ancak cevapların SO web sitelerinde nasıl olması gerektiğine bir göz atın: meta.stackexchange.com/a/8259/224252 ve bu: magento.stackexchange.com/help/how -to-cevap
Marius
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.