Skip to content

Magento 1: My Custom Payment Module is not showing on Checkout Page

I am using Magento 1.9.4.5

I am developing a Custom Payment Gateway. Its showing up on Admin Configuration Page. But not showing at all in Multishipping Page and Admin Order Creation Page. I am providing the code I’ve done so far.

/app/etc/modules/WebKutir_Payment_Bkash.xml

<?xml version="1.0"?>
<config>
    <modules>
        <WebKutir_Payment_Bkash>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Payment />
            </depends>
        </WebKutir_Payment_Bkash>
    </modules>
</config>

/app/code/local/WebKutir/Payment/Bkash/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <WebKutir_Payment_Bkash>
            <version>0.1.0.0</version>
        </WebKutir_Payment_Bkash>
    </modules>
    <global>
        <helpers>
            <webkutir_payment_bkash>
                <class>WebKutir_Payment_Bkash_Helper</class>
            </webkutir_payment_bkash>
        </helpers>
        <blocks>
            <webkutir_payment_bkash>
                <class>WebKutir_Payment_Bkash_Block</class>
            </webkutir_payment_bkash>
        </blocks>
        <models>
            <webkutir_payment_bkash>
                <class>WebKutir_Payment_Bkash_Model</class>
            </webkutir_payment_bkash>
        </models>
    </global>
    <default>
        <payment>
            <webkutir_payment_bkash>
                <active>1</active>
                <model>webkutir_payment_bkash/starter</model>
                <order_status>processing</order_status>
                <title>bKash</title>
                <testmode>1</testmode>
                <allowspecific>1</allowspecific>
                <specificcountry>BD</specificcountry>
                <password backend_model="adminhtml/system_config_backend_encrypted"/>
                <appkey backend_model="adminhtml/system_config_backend_encrypted"/>
                <appsecret backend_model="adminhtml/system_config_backend_encrypted"/>
            </webkutir_payment_bkash>
        </payment>
    </default>
</config>

/app/code/local/WebKutir/Payment/Bkash/etc/system.xml

<?xml version="1.0"?>
<config>    
    <sections>
        <payment>
            <groups>
                <webkutir_payment_bkash translate="label">
                    <label>bKash Payment Gateway</label>
                    <sort_order>1000</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>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                            <sort_order>2</sort_order>
                        </active>
                        <title translate="label">
                            <label>Title</label>
                            <frontend_type>text</frontend_type>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                            <sort_order>3</sort_order>
                        </title>
                        <testmode translate="label">
                            <label>Test Mode</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                            <sort_order>4</sort_order>
                        </testmode>
                        <url translate="label">
                            <label>Gateway URL</label>
                            <frontend_type>text</frontend_type>
                            <validate>required-entry</validate>
                            <sort_order>5</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </url>
                        <username translate="label">
                            <label>Username</label>
                            <frontend_type>text</frontend_type>
                            <validate>required-entry</validate>
                            <sort_order>6</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </username>
                        <password translate="label">
                            <label>Password</label>
                            <frontend_type>obscure</frontend_type>
                            <backend_model>adminhtml/system_config_backend_encrypted</backend_model>
                            <validate>required-entry</validate>
                            <sort_order>7</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </password>
                        <appkey translate="label">
                            <label>App Key</label>
                            <frontend_type>obscure</frontend_type>
                            <backend_model>adminhtml/system_config_backend_encrypted</backend_model>
                            <validate>required-entry</validate>
                            <sort_order>8</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </appkey>
                        <appsecret translate="label">
                            <label>App Secret Key</label>
                            <frontend_type>obscure</frontend_type>
                            <backend_model>adminhtml/system_config_backend_encrypted</backend_model>
                            <validate>required-entry</validate>
                            <sort_order>9</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </appsecret>
                        <order_status translate="label">
                            <label>New order status</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_order_status</source_model>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                            <sort_order>10</sort_order>
                        </order_status>
                        <allowspecific translate="label">
                            <label>Payment from applicable countries</label>
                            <frontend_type>allowspecific</frontend_type>
                            <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                            <sort_order>80</sort_order>
                        </allowspecific>
                        <specificcountry translate="label">
                            <label>Payment from Specific countries</label>
                            <frontend_type>multiselect</frontend_type>
                            <source_model>adminhtml/system_config_source_country</source_model>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                            <sort_order>90</sort_order>
                        </specificcountry>
                        <min_order_total translate="label">
                            <label>Minimum Order Total</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>
                        </min_order_total>
                        <max_order_total translate="label">
                            <label>Maximum Order Total</label>
                            <frontend_type>text</frontend_type>
                            <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>
                        </max_order_total>
                        <sort_order translate="label">
                            <label>Sort Order</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>120</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>0</show_in_store>
                            <frontend_class>validate-number</frontend_class>
                        </sort_order>
                    </fields>
                </webkutir_payment_bkash>
            </groups>
        </payment>
    </sections>
</config>

/app/code/local/WebKutir/Payment/Bkash/Helper/Data.php

<?php

class WebKutir_Payment_Bkash_Helper_Data extends
    Mage_Core_Helper_Abstract
{

}

/app/code/local/WebKutir/Payment/Bkash/Model/Starter.php

<?php

class WebKutir_Payment_Bkash_Model_Starter extends Mage_Payment_Model_Method_Abstract 
{
    protected $_code                    = 'webkutirpaymentgatewaybkash';
    protected $_isGateway               = true;
    protected $_canAuthorize            = true;
    protected $_canCapture              = true;
    protected $_canCapturePartial       = false;
    protected $_canRefund               = true;
    protected $_canVoid                 = true;
    protected $_canUseInternal          = true;
    protected $_canUseCheckout          = true;
    protected $_canUseForMultishipping  = true;
    protected $_canSaveCc               = false;

    protected $_formBlockType = 'webkutir_payment_bkash/form_bkash';
    protected $_infoBlockType = 'webkutir_payment_bkash/info_bkash';

    public function getOrderPlaceRedirectUrl()
    {
        return Mage::getUrl('bkash/payment/redirect', array('_secure' => true));
    }
}

/app/code/local/WebKutir/Payment/Bkash/Block/Form/Bkash.php

<?php

class WebKutir_Payment_Bkash_Block_Form_Bkash extends Mage_Payment_Block_Form
{
    protected function __construct()
    {
        parent::__construct();
        
        $this->setTemplate('webkutir/payment/bkash/form/bkash.phtml');
    }
}

/app/code/local/WebKutir/Payment/Bkash/Block/Info/Bkash.php

<?php

class WebKutir_Payment_Bkash_Block_Info_Bkash extends Mage_Payment_Block_Info
{
    protected function _prepareSpecificInformation($transport = null)
    {
        if (null !== $this->_paymentSpecificInformation) 
        {
            return $this->_paymentSpecificInformation;
        }
    
        $data = array();
        $transport = parent::_prepareSpecificInformation($transport);
    
        return $transport->setData(array_merge($data, $transport->getData()));
    }
}

/app/design/frontend/base/default/template/webkutir/payment/bkash/form/bkash.phtml

<div class="form-list" id="payment_form_<?php echo $this->getMethodCode() ?>" style="display:none;">
    <div>
        <label><?php echo $this->__('Custom Field One') ?>*</label>
    </div>
</div>
<div>
    <?php echo $this->getMethod()->getConfigData('message');?>
</div>

This Payment Module is not showing on Frontend and Backend. Please help me to solve this issue.

Thanks.