I'm developing a custom module in magento 2.1.7 for deployment of a custom payment checkout. The admin panel is working however when proceeding to checkout the deployed custom payment is absent.
Bellow is a list of all code. Any help is greatly appeciated.
etc/adminhtml/system.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../Magento/Config/etc/system_file.xsd">
<system>
<section id="payment">
<group id="Multibanco" translate="label" type="text" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Multibanco</label>
<field id="active" translate="label" type="select" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="0">
<label>Enabled</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
</field>
<field id="title" translate="label" type="text" sortOrder="2" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Title</label>
</field>
<field id="api_key" translate="label" type="text" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="0">
<label>Api Key</label>
<comment>Se ainda não tiver uma chave <![CDATA[ <a target="_blank" href="https://eupago.pt/registo?magento#registo_form">registe-se aqui</a> ]]></comment>
<backend_model>Magento\Config\Model\Config\Backend\Encrypted</backend_model>
</field>
<field id="send_invoice_email" translate="label" type="select" sortOrder="4" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Send Invoice email</label>
<comment>Envia o email de confirmação de pagamento (invoice email)</comment>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
</field>
<field id="mostra_icon" translate="label" type="select" sortOrder="5" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Icon multibanco</label>
<comment>Mostra icon do multibanco na listagem de metodos de pagamento antes do titulo</comment>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
</field>
<!--
<field id="frontend_template" translate="label" type="select" sortOrder="6" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Frontend Template</label>
<comment>Selecione o tema e defina como os seus clientes vêm este método de pagamento</comment>
<source_model>EuPago\multibanco\Model\System\Config\Template</source_model>
</field>
!-->
<field id="specificcountry" translate="label" type="multiselect" sortOrder="6" showInDefault="1" showInWebsite="1" showInStore="0">
<label>Allow specific countries</label>
<source_model>Magento\Directory\Model\Config\Source\Country</source_model>
<can_be_empty>1</can_be_empty>
<depends><field id="active">1</field></depends>
</field>
<field id="per_dup" translate="label" type="select" sortOrder="7" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Allow duplicated payments</label>
<comment>Escolha sim se pretende que apenas seja possivel pagar uma referência várias vezes</comment>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
</field>
<field id="payment_deadline" translate="label" type="text" sortOrder="8" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Payment Deadline</label>
<comment>Se pretender que a referência tenha uma validade, preencha o número de dias que a referência está disponível para pagamento</comment>
</field>
</group>
</section>
</system>
</config>etc/config.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<payment>
<multibanco>
<active>1</active>
<model>Eupago\Multibanco\Model\Multibanco</model>
<order_status>1</order_status>
<order_status>pending</order_status>
<title>Eupago Multibanco</title>
<cgi_url>https://seguro.eupago.pt/eupagov8.wsdl</cgi_url>
<debug>1</debug>
<payment_action>order</payment_action>
</multibanco>
</payment>
</default>
</config>etc/module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Eupago_Multibanco" setup_version="2.1.0">
<sequence>
<module name="Magento_Sales" />
<module name="Magento_Payment" />
<module name="Magento_Directory" />
<module name="Magento_Config" />
</sequence>
</module>
</config>etc/payment.xml
<payment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Payment:etc/payment.xsd">
<methods>
<method name="multibanco">
<allow_multiple_address>1</allow_multiple_address>
</method>
</methods>
</payment>etc/frontend/routes.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd"> <router id="standard"> <route id="multibanco" frontName="Eupago_Multibanco"> <module name="Eupago_Multibanco" /> </route> </router> </config>
view/web/js/view/payment/multibanco.js
/*browser:true*/
/*global define*/
define(
[
'uiComponent',
'Magento_Checkout/js/model/payment/renderer-list'
],
function (
Component,
rendererList
) {
'use strict';
rendererList.push(
{
type: 'Eupago_Multibanco',
component: 'Eupago_Multibanco/payment/method-renderer/multibanco'
}
);
//console.log(Component.extend);
/** Add view logic here if needed */
return Component.extend({});
}
);view/web/js/view/payment/method-renderer/multibanco.js
/*browser:true*/
/*global define*/
console.log("method");
define(
[
'Magento_Checkout/js/view/payment/default'
],
function (Component, $) {
'use strict';
return Component.extend({
defaults: {
template: 'Eupago_Multibanco/payment/eupago_multibanco-form'
},
getCode: function() {
return 'eupago_multibanco';
},
isActive: function() {
return true;
},
validate: function() {
var $form = $('#' + this.getCode() + '-form');
return $form.validation() && $form.validation('isValid');
}
});
}
);model/multibanco.php (partial file)
namespace Eupago\Multibanco\Model;
class Multibanco extends \Magento\Payment\Model\Method\AbstractMethod //Mage_Payment_Model_Method_Abstract
{
protected $_code = 'multibanco';Controller/CallBackController.php (partial file)
<?php
namespace Eupago\Multibanco\Controller\Callback;
use Magento\Framework\App\Action\Context;
abstract class Callback extends \Magento\Framework\App\Action\Action {
// valida todos os metodos de pagamento
public function allAction(){
almost forgot: File view/web/js/view/payment/method-renderer/multibanco.js is not loaded upon page load
in config.xml you should add this line
<can_use_checkout>1</can_use_checkout>