There are certain cases where you find the need to add new Payment Method (Payment Gateway) in a Magento store. Especially if the Magento store owner wishes to use a specific payment gateway not available in default Magento installation. Adding a new Magento Payment Module is not difficult but requires a little bit of programming at your end. In this article i am going to elaborate on how to add a new payment module (Payment Gateway) to your existing Magento Installation which will accept credit cards, authorize credit card when the order is placed and saves order ID in payment record.
In this example i will call it “Paymentpro” but you can change every occurrence of“Paymentpro” with the payment gateway you are integrating for e.g. “RBSDirect” or something else.
Few Notes:
- Just Replace all instances of “Paymentpro” with your payment module name.
- Just replace all instance of “Magik” with your company/namespace name.
- Ensure that the path of the PHP include_path is
/app/code/local/
- Clean your cache after modifying the config xml files.
Now, you are all set to create a new payment module of your own. Following is a step by step guide to build your own shipping module, just follow them in exact order and make sure that the above requirements are taken care of.
Define new Magento Payment Module
First of all lets create a new payment module
app/etc/modules/Magik_Paymentpro.xml
and create the following xml file:1 2 3 4 5 6 7 8 9 10 11 | <config> <modules> <Magik_Paymentpro> <active>true</active> <codePool>local</codePool> <depends> <Mage_Payment /> </depends> </Magik_Paymentpro> </modules> </config> |
The above code will tell Magento that there is a new Payment module enabled in the system. * Lean how to enable or disable a Magento module.
Configure new Magento Payment Module
To configure your newly created Magento payment module you need to create
app/code/local/Magik/Paymentpro/etc/config.xml
and add the following code in it1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <?xml version="1.0"?> <config> <modules> <Magik_PaymentPro> <version>0.1.0</version> </Magik_Paymentpro> </modules> <global> <blocks> <paymentpro> <class>Magik_Paymentpro_Block</class> </paymentpro> </blocks> <models> <paymentpro> <class>Magik_Paymentpro_Model</class> </paymentpro> </models> <resources> <paymentpro_setup> <setup> <module>Magik_Paymentpro</module> </setup> <connection> <use>core_setup</use> </connection> </paymentpro_setup> <paymentpro_write> <connection> <use>core_write</use> </connection> </paymentpro_write> <paymentpro_read> <connection> <use>core_read</use> </connection> </paymentpro_read> </resources> </global> <default> <payment> <paymentpro> <active>0</active> <model>paymentpro/paymentMethod</model> <order_status>pending</order_status> <title>Credit Card (Authorize.net)</title> <cctypes>AE,VI,MC,DI</cctypes> <payment_action>authorize</payment_action> <allowspecific>0</allowspecific> </paymentpro> </payment> </default> </config> |
The above file will install all the predefined variables and values, you are open to change the default values under “defaul” parameters.
Admin Panel Configuration Options
We will create another file to view the configuration options in Magento admin panel under
System => Configuration
. To do this lets create one fileapp/code/local/CompanyName/NewModule/etc/system.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?xml version="1.0"?> <config> <sections> <payment> <groups> <paymentpro translate="label" module="paygate"> <label>Payment Pro</label> <sort_order>670</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> <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> <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> <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>0</show_in_store> </title> </fields> </paymentpro> </groups> </payment> </sections> </config> |
Pretty cool, now your Magento store is setup to use new Payment Gateway. Just go to
Admin => System => Configuration => Payment Methods
, you will notice a new payment gateway “Payment Pro”. Enable it and try to checkout. On payment methods page you should see “Payment Pro” payment method with credit card form.Setting up Database Updates
Just create one file
app/code/local/Magik/Paymentpro/sql/paymentpro_setup/mysql4-install-0.1.0.php
and add the following lines of code1 2 3 4 | <?php $this->startSetup(); $this->run("Your SQL QUERY"); $this->endSetup(); |
To accommodate these change in database you have to change the version in
config.xml
file1 2 3 4 5 | <modules> <Magik_Paymentpro> <version>1.2.0</version> </Magik_Paymentpro> </modules> |
Finally, create
app/code/local/Magik/Paymentpro/sql/paymentpro_setup/mysql4-upgrade-0.1.0-1.2.0.php
and add the following lines of code1 2 3 4 | <?php $this->startSetup(); $this->run("SQL UPDATE Query"); $this->endSetup(); |
Few things to note while creating a new Magento payment gateway module
- New payment module should either be placed inside
app/code/local
orapp/code/community
never put your new module under/Mage
- Just ensure that the module’s first letter is capitalized. paymentpro apparently will not work, it must start with a capital letter Paymentpro.
- Also make sure that the recipient folder of the module’s folder (Magik in the example) is capitalized as well.
Now, you have new payment gateway setup for your Magento store. Remaining logic of authorizing, verifying and accepting payments are out of scope as they differs from merchant to merchant. Some of the merchant requires the customer to be redirected to their site and some allows curl or HTTP_REQUEST based authentication to make purchases.
I would love to hear your views and experiences of setting up a new payment gateway. Please leave me a comment and let me know. Don't forget to subscribe our RSS to receive latest updates on Magento.