I am trying to add a new payment module into Magento. However, even after commenting out the vast majority of the code, I still get the following error:
Fatal error: Call to a member function isAvailable() on a non-object in /var/www/html/app/code/core/Mage/Payment/Helper/Data.php on line 71
I am using Magento 1.4.0.1, and have disabled the cache. I even emptied the cache several times just in case.
The only code currently not commented out is based on the tutorials here and here.
The error occurs when the cart is loaded either from the administration area or the front end.
Is there anyone out there that has run into a similar issue? I would post code, but I am not sure what needs to be posted.
Thanks for the assistance.
Edit
app/etc/modules/CPAP_All.xml
<?xml version="1.0"?>
<config>
<modules>
<CPAP_AuthorizeCim>
<active>true</active>
<codePool>local</codePool>
</CPAP_AuthorizeCim>
</modules>
</config>
app/code/local/CPAP/AuthorizeCim/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<CPAP_AuthorizeCim>
<version>0.1.0</version>
</CPAP_AuthorizeCim>
</modules>
<global>
<models>
<authorizecim>
<class>CPAP_AuthorizeCim_Model</class>
</authorizecim>
</models>
<resources>
<authorizecim_setup>
<setup>
<module>CPAP_AuthorizeCim</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</authorizecim_setup>
<authorizecim_write>
<connection>
<use>core_write</use>
</connection>
</authorizecim_write>
<authorizecim_read>
<connection>
<use>core_read</use>
</connection>
</authorizecim_read>
</resources>
</global>
<default>
<payment>
<authorizecim>
<active>0</active>
<model>authorizecim/paymentmethod</model>
<order_status>pending</order_status>
<cctypes>AE,VI,MC,DI</cctypes>
<login backend_model="adminhtml/system_config_backend_encrypted"/>
<trans_key backend_model="adminhtml/system_config_backend_encrypted"/>
<payment_action>authorize</payment_action>
<allowspecific>0</allowspecific>
</authorizecim>
</payment>
</default>
</config>
app/code/local/CPAP/AuthorizeCim/Model/Paymentmethod.php
class CPAP_AuthorizeCim_Model_Authorizenet
{
}
If I comment out <model>authorizecim/paymentmethod</model> from the config.xml, then the error goes away, but my payment option will not display as an option in the cart.
(Semi-appologies in advance for the self links in this post, but I seem to be (at least for now) the unofficial Magento developer’s guide)
This is the code that’s causing you your problems (in the Data.php file mentioned above)
Magento is seaching the system config for either a class name, or a URI style path to use in the call to getModel, which instantiates the model.
So, your problem is that authorizecim/paymentmethod isn’t resolving to a Magento classname like it’s supposed to. (if you don’t follow this try the (Class/URI lookup tab in the Commerce Bug demo).
So, authorizecim/paymentmethod is going to resolve to the classname
So, Magento tells PHP to instantiate a “CPAP_AuthorizeCim_Model_Paymentmethod”. However, this class isn’s loaded into memory, so the __autoload takes over and loads the file at
Which is your PHP file, which brings us to your problem. Your class is named
when it needs to be named