Skip to content

Instantly share code, notes, and snippets.

@ashsmith
Created August 16, 2012 19:36
Show Gist options
  • Select an option

  • Save ashsmith/3372950 to your computer and use it in GitHub Desktop.

Select an option

Save ashsmith/3372950 to your computer and use it in GitHub Desktop.

Revisions

  1. Ash Smith revised this gist Sep 2, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion Meteorify_Checkout.xml
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    <?xml version="1.0"?>
    <!-- app/etc/modules/Meteorify_Checkout.php -->
    <!-- app/etc/modules/Meteorify_Checkout.xml -->
    <config>
    <modules>
    <Meteorify_Checkout>
  2. Ash Smith created this gist Aug 16, 2012.
    10 changes: 10 additions & 0 deletions Meteorify_Checkout.xml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,10 @@
    <?xml version="1.0"?>
    <!-- app/etc/modules/Meteorify_Checkout.php -->
    <config>
    <modules>
    <Meteorify_Checkout>
    <active>true</active>
    <codePool>local</codePool>
    </Meteorify_Checkout>
    </modules>
    </config>
    22 changes: 22 additions & 0 deletions Onepage.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@
    <?php
    //app/code/local/Meteorify/Checkout/Blocks/Onepage.php
    include("Mage/Checkout/Block/Onepage.php");

    class Meteorify_Checkout_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', 'review');

    foreach ($stepCodes as $step) {
    $steps[$step] = $this->getCheckout()->getStepData($step);
    }
    return $steps;
    }
    }
    103 changes: 103 additions & 0 deletions OnepageController.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,103 @@
    <?php
    //app/code/local/Meteorify/Checkout/controllers/OnepageController.php
    include("Mage/Checkout/controllers/OnepageController.php");
    class Meteorify_Checkout_OnepageController extends Mage_Checkout_OnepageController {

    public function saveBillingAction()
    {
    $this->_expireAjax();
    if ($this->getRequest()->isPost()) {
    $data = $this->getRequest()->getPost('billing', array());
    $customerAddressId = $this->getRequest()->getPost('billing_address_id', false);
    $result = $this->getOnepage()->saveBilling($data, $customerAddressId);

    if (!isset($result['error'])) {
    if ($this->getOnepage()->getQuote()->isVirtual()) {
    $this->loadLayout('checkout_onepage_review');
    $result['goto_section'] = 'review';
    $result['update_section'] = array(
    'name' => 'review',
    'html' => $this->getLayout()->getBlock('root')->toHtml()
    );
    }
    elseif (isset($data['use_for_shipping']) && $data['use_for_shipping'] == 1) {
    $this->saveShippingMethodAction();
    $this->loadLayout('checkout_onepage_review');
    $result['goto_section'] = 'review';
    $result['update_section'] = array(
    'name' => 'review',
    'html' => $this->_getReviewHtml()
    );

    $result['allow_sections'] = array('shipping','review');
    $result['duplicateBillingInfo'] = 'true';
    }
    else {
    $result['goto_section'] = 'shipping';
    }
    }

    $this->getResponse()->setBody(Zend_Json::encode($result));
    }
    }

    public function saveShippingAction()
    {
    $this->_expireAjax();
    if ($this->getRequest()->isPost()) {
    $data = $this->getRequest()->getPost('shipping', array());
    $customerAddressId = $this->getRequest()->getPost('shipping_address_id', false);
    $result = $this->getOnepage()->saveShipping($data, $customerAddressId);

    if (!isset($result['error'])) {
    $this->saveShippingMethodAction();
    $this->loadLayout('checkout_onepage_review');
    $result['goto_section'] = 'review';
    $result['update_section'] = array(
    'name' => 'review',
    'html' => $this->_getReviewHtml()
    );
    }
    $this->getResponse()->setBody(Zend_Json::encode($result));
    }
    }

    public function saveShippingMethodAction()
    {
    $this->_expireAjax();
    if ($this->getRequest()->isPost()) {
    $this->savePaymentAction();
    $data = $this->getRequest()->getPost('shipping_method', 'flatrate_flatrate'); //Change to your Shipping Method
    $result = $this->getOnepage()->saveShippingMethod($data);
    $this->getResponse()->setBody(Zend_Json::encode($result));
    }

    }

    public function savePaymentAction()
    {
    $this->_expireAjax();
    if ($this->getRequest()->isPost()) {
    $data = $this->getRequest()->getPost('payment', array('method'=>'worldpay_cc')); //Change to your Payment Processor
    try {
    $result = $this->getOnepage()->savePayment($data);
    }
    catch (Mage_Payment_Exception $e) {
    if ($e->getFields()) {
    $result['fields'] = $e->getFields();
    }
    $result['error'] = $e->getMessage();
    }
    catch (Exception $e) {
    $result['error'] = $e->getMessage();
    }

    $redirectUrl = $this->getOnePage()->getQuote()->getPayment()->getCheckoutRedirectUrl();
    if ($redirectUrl) {
    $result['redirect'] = $redirectUrl;
    }

    $this->getResponse()->setBody(Zend_Json::encode($result));
    }
    }
    }
    30 changes: 30 additions & 0 deletions config.xml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    <?xml version="1.0" encoding="UTF-8"?>
    <!--app/code/local/Meteorify/Checkout/etc/config.xml-->
    <config>
    <modules>
    <Meteorify_Checkout>
    <version>0.0.1</version>
    </Meteorify_Checkout>
    </modules>
    <global>
    <blocks>
    <checkout>
    <rewrite>
    <onepage>Meteorify_Checkout_Block_Onepage</onepage>
    </rewrite>
    </checkout>
    </blocks>
    </global>

    <frontend>
    <routers>
    <checkout>
    <args>
    <modules>
    <Meteorify_Checkout before="Mage_Checkout">Meteorify_Checkout</Meteorify_Checkout>
    </modules>
    </args>
    </checkout>
    </routers>
    </frontend>
    </config>