Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7491887
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 29, 20262026-05-29T16:11:28+00:00 2026-05-29T16:11:28+00:00

I am developing a payment Module for Magento. I did this using this tutorial

  • 0

I am developing a payment Module for Magento. I did this using this tutorial

http://www.magentocommerce.com/wiki/5_-_modules_and_development/payment/create-payment-method-module

I have created folder

app/local/Companyname/Cashondelivery/Block
app/local/Companyname/Cashondelivery/Model
app/local/Companyname/Cashondelivery/controller
app/local/Companyname/Cashondelivery/etc
app/local/Companyname/Cashondelivery/helpers

The etc/config.xml

    <?xml version="1.0"?>
    <config>
        <modules>
           <Companyname_Cashondelivery>
    <!-- declare module's version information for database updates -->
              <version>0.1.0</version>
           </Companyname_Cashondelivery>
        </modules>

        <global>


    <!-- declare model group for new module -->
            <models>
    <!-- model group alias to be used in Mage::getModel('newmodule/...') -->
                <createorder>
    <!-- base class name for the model group -->
                    <class>Companyname_Cashondelivery_createorder</class>
                </createorder>
            </models>

    <!-- declare resource setup for new module -->
            <resources>
    <!-- resource identifier -->
                <cashondelivery_setup>
    <!-- specify that this resource is a setup resource and used for upgrades -->
                    <setup>
    <!-- which module to look for install/upgrade files in -->
                        <module>Companyname_Cashondelivery</module>
                    </setup>
    <!-- specify database connection for this resource -->
                    <connection>
    <!-- do not create new connection, use predefined core setup connection -->
                        <use>core_setup</use>
                    </connection>
                </cashondelivery_setup>
                <cashondelivery_write>
                    <connection>
                      <use>core_write</use>
                    </connection>
                </cashondelivery_write>
                <cashondelivery_read>
                   <connection>
                    <use>core_read</use>
                  </connection>
                </cashondelivery_read>
            </resources>
        </global>

    <!-- declare default configuration values for this module -->
        <default>
    <!-- 'payment' configuration section (tab) -->
            <payment>
    <!-- 'newmodule' configuration group (fieldset) -->
                <cashondelivery>
    <!-- by default this payment method is inactive -->
                    <active>0</active>
    <!-- model to handle logic for this payment method -->
                    <model>cashondelivery/createorder</model>
    <!-- order status for new orders paid by this payment method -->
                    <order_status>pending</order_status>
    <!-- default title for payment checkout page and order view page -->
                    <title>Companyname</title>                
                </cashondelivery>
             </payment>
        </default>
</config>

The app/local/Companyname/Modulename/etc/system.xml

<?xml version="1.0"?>
<config>
   <sections>
        <payment>
            <groups>
                <cashondelivery translate="label" module="cashondelivery">
                    <label>Cash On Delivery</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>10</sort_order>
                    <show_in_default>1</show_in_default>
                    <show_in_website>1</show_in_website>
                    <show_in_store>1</show_in_store>
                    <!--<comment>[CDATA[<a href="http://celinks.magento.com/authorize_netRegistration" target="_blank">Click here to sign up for an Authorize.net account</a>]]></comment>-->
                    <fields>
                        <active translate="label">
                            <label>Enabled</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>1</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </active>
                        <email_customer translate="label">
                            <label>Email Customer</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>10</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </email_customer>
                        <login translate="label">
                            <label>API Login ID</label>
                            <frontend_type>obscure</frontend_type>
                            <backend_model>adminhtml/system_config_backend_encrypted</backend_model>
                            <sort_order>2</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </login>

                        <merchant_email translate="label">
                            <label>Merchant's Email</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>11</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </merchant_email>
                        <order_status translate="label">
                            <label>New Order Status</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_order_status_processing</source_model>
                            <sort_order>4</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </order_status>
                        <sort_order translate="label">
                            <label>Sort Order</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>100</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </sort_order>
                        <test translate="label">
                            <label>Test Mode</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>5</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </test>
                        <debug translate="label">
                            <label>Debug</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>6</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </debug>
                        <title translate="label">
                            <label>Title</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>2</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </title>

                        <payment_action translate="label">
                            <label>Payment Action</label>
                            <frontend_type>select</frontend_type>
                            <source_model>cashondelivery/createorder</source_model>
                            <sort_order>2</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </payment_action>
                        <cgi_url>
                            <label>Gateway URL</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>5</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </cgi_url>                        
                        <min_order_total translate="label">
                            <label>Minimum Order Total</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>98</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </min_order_total>
                        <max_order_total translate="label">
                            <label>Maximum Order Total</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>99</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </max_order_total>
                        <allow_partial_authorization translate="label">
                            <label>Allow Partial Authorization</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>110</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                        </allow_partial_authorization>                     
                        <model>
                        </model>
                    </fields>
                </cashondelivery>
            </groups>
        </payment>
    </sections>
</config>

Then I created a model class

<?php 
/**
* Our test CC module adapter
*/
class Companyname_Cashondelivery_Model_createorder extends Mage_Payment_Model_Method_Cc
{
    /**
    * unique internal payment method identifier
    *
    * @var string [a-z0-9_]
    */
    protected $_code = 'newmodule';

    /**
     * Here are examples of flags that will determine functionality availability
     * of this module to be used by frontend and backend.
     *
     * @see all flags and their defaults in Mage_Payment_Model_Method_Abstract
     *
     * It is possible to have a custom dynamic logic by overloading
     * public function can* for each flag respectively
     */

    /**
     * Is this payment method a gateway (online auth/charge) ?
     */
    protected $_isGateway               = true;

    /**
     * Can authorize online?
     */
    protected $_canAuthorize            = true;

    /**
     * Can capture funds online?
     */
    protected $_canCapture              = false;

    /**
     * Can capture partial amounts online?
     */
    protected $_canCapturePartial       = false;

    /**
     * Can refund online?
     */
    protected $_canRefund               = false;

    /**
     * Can void transactions online?
     */
    protected $_canVoid                 = true;

    /**
     * Can use this payment method in administration panel?
     */
    protected $_canUseInternal          = true;

    /**
     * Can show this payment method as an option on checkout payment page?
     */
    protected $_canUseCheckout          = true;

    /**
     * Is this payment method suitable for multi-shipping checkout?
     */
    protected $_canUseForMultishipping  = true;

    /**
     * Can save credit card information for future processing?
     */
    protected $_canSaveCc = false;

    /**
     * Here you will need to implement authorize, capture and void public methods
     *
     * @see examples of transaction specific public methods such as
     * authorize, capture and void in Mage_Paygate_Model_Authorizenet
     */        
}
?>

I have even created a file in app/local/Companyname/Cashondelivery/Helper/Data.php

<?php
class Companyname_Cashondelivery_Helper_Data extends Mage_Core_Helper_Abstract
{
}
?>

But I get an error when I open Configuration>Payment Methods

Fatal error: Class ‘Mage_Cashondelivery_Helper_Data’ not found in C:\xampp\htdocs\magento\app\Mage.php on line 516

Is it necessary to have a Helper class. I have no idea about the helpers and Data.php

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-29T16:11:29+00:00Added an answer on May 29, 2026 at 4:11 pm

    The reason your module needs a helper class is the module argument in the system.xml file:

    <cashondelivery translate="label" module="cashondelivery">
    

    Magento passes the module argument to the Mage::helper() factory method. This in turn completes the class id to cashondelivery/data.

    Mage::helper('cashondelivery');
    // identical to Mage::helper('cashondelivery/data');
    

    Now Magento checks for the class prefix to use by looking for the node global/helpers/cashondelivery/class which is missing.

    Rather straightforward so far, but here is where it might be a little confusing for some.
    If Magento doesn’t find a helper class prefix, it tries to makes one up by prefixing the class id with mage_ and appending _helper.
    So this gives you mage_cashondelivery_helper as the class prefix, and mage_cashondelivery_helper_data as the full class name.

    The autoloader turns this into Mage/Cashondelivery/Helper/Data.php, which can’t be found, and hence the exception you are experiencing.

    Besides creating the Companyname_Cashondelivery_Helper_Data class, you need to add the class group mapping to your config.xml file as follows:

    <global>
      <helpers>
        <cashondelivery>
          <class>Companyname_Cashondelivery_Helper</class>
        </cashondelivery>
      </helpers>
    </global>
    

    This class group to class prefix mapping is all you are missing.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am developing a payment method module in Magento. When I click payment methods
I am developing a payment module. I don't find proper documentation anywhere for Magento
I asked this on gamedev.stackexchange.com, got nothing. Please fix tags if I did any
I'm in the middle of developing an e-commerce site that is using Paypal as
NOTE: I'm developing for Mac, not iOS! - (void)recordTransaction:(SKPaymentTransaction *)transaction { if ([transaction.payment.productIdentifier isEqualToString:kInAppProIdentifier])
I am developing an e-commerce website, I want payment process to be done from
I an developing a web application in ASP.Net using C#, under .Net Framework 4.0.
I'm developing a web application, using ASP.net and C# need to provide a functionality
I'm developing a lightweight e-commerce solution that uses PayPal as the payment gateway. However,
I need to do order processing upon confirmation of payment. Using PayPal Standard, is

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.