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>