Thêm một bước vào Thanh toán một trang


18

Có bất kỳ tiện ích mở rộng, mô-đun Magento nguồn mở hoặc hướng dẫn nào giúp việc thêm một bước vào kiểm tra một trang dễ dàng hơn không? Tôi đã chọc mã lõi cho điều này một vài lần và có vẻ như có rất nhiều thông tin bước mã hóa cứng.


5
Thật không may, mã Checkout dường như không linh hoạt, rất nhiều thông tin được mã hóa cứng từ các mẫu cho đến các tệp accordion javascript.
Allan MacGregor

1
Tôi đã làm theo hướng dẫn này và có thể thêm một bước mới trong thanh toán onepage. Dù sao, rất nhiều tập tin cốt lõi cần được ghi đè để đạt được bước này. Hy vọng điều này sẽ hữu ích excellencemagentoblog.com/magento-onestep-checkout-add-step
Sukeshini

Câu trả lời:


6

Câu trả lời ngắn cho câu hỏi này đã kết thúc là "Không". Từ cấp độ cao, thêm một bước thanh toán mới có nghĩa là

  1. Thêm một Khối mới vào trang thanh toán một bước

  2. Có khối đó đăng ký chính nó như là một bước

  3. Kết nối khối đó với một đối tượng nguyên mẫu xử lý tất cả các tương tác

  4. Viết lại một số phương thức Magento cốt lõi để chèn khối như một bước

  5. Một số thủ thuật ajax để có được công cụ tiến độ làm việc.

Bao gồm điều này trong tổng số vượt quá phạm vi của một câu hỏi Stack Overflow duy nhất. Hướng dẫn được liên kết trong một câu hỏi khác có rất nhiều thứ bạn sẽ cần và tôi cũng đã tạo một tiện ích mở rộng thương mại mới để làm cho tất cả điều này dễ dàng hơn .


4

Theo mặc định magento cung cấp một số bước thanh toán. Nhưng đôi khi bạn cần thêm thông tin từ khách hàng để tham khảo trong tương lai. Một tùy chỉnh được yêu cầu phổ biến là thêm Biểu mẫu tùy chỉnh trong quy trình thanh toán mặc định. Đây không phải là thực hành tốt để chạm vào các tập tin cốt lõi. Bạn có thể làm điều này thông qua các mô-đun ghi đè. Trong ví dụ này, Comapnyname là Ipragmatech và Tên mô-đun là Checkoutstep .

Bước 1: Thêm bước Tùy chỉnh trong quy trình thanh toán

Mở tệp Ipragmatech> Checkoutstep> Block> Onepage> Checkoutstep.php và viết mã sau đây

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

Bước2: Thêm các bước mà và nơi bạn muốn trong quy trình thanh toán

Mở tệp Ipragmatech> Checkoutstep> Block> Onepage> Checkoutstep.php và viết mã sau đây

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

Bước 3: Lấy giá trị đã gửi của biểu mẫu tùy chỉnh và đặt các giá trị của biểu mẫu tùy chỉnh

Mở ipragmatech> Checkoutstep> bộ điều khiển> OnepageControll.php và viết fucntion sau

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

Bước 4: Lưu thông tin Mẫu tùy chỉnh

Khi hook sự kiện checkout_onepage_controll_success_action được gọi. Mở Ipragmatech> Checkoutstep> Model> Observer.php và viết như sau

    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 - Thêm biểu mẫu tùy chỉnh trong tiện ích mở rộng Checkout là một giải pháp hoàn chỉnh để thêm bước bổ sung trong quy trình Checkout cho trang web thương mại điện tử của bạn. Nó cho phép quản trị viên xuất dữ liệu từ bảng tùy chỉnh ở định dạng CSV.

Truy cập liên kết để nhận tiện ích mở rộng miễn phí này http: //www.magentoc Commerce.com/magento-connect/custom-form-in-checkout.html


0

vâng, có một hướng dẫn tốt về điều này ở đây " http://excellencemagentoblog.com/magento-onestep-checkout-add-step "


4
Bạn nên giải thích một chút những gì được tìm thấy ở cuối url đó. Câu trả lời liên kết đơn không phải là câu trả lời tốt nhất.
Marius

chính url nói magento-onestep-checkout-add-step và đây là những gì câu hỏi đang yêu cầu.
Dhanpat Saran

5
Tôi đồng ý với bạn, lời giải thích trong liên kết là tuyệt vời, nhưng hãy xem cách các câu trả lời nên có trên các trang web SO: meta.stackexchange.com/a/8259/224252 và điều này: magento.stackexchange.com/help/how -to-answer
Marius
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.