Como adicionar pagamento personalizado ao Magento 2 Checkout
Publicados: 2021-05-11Índice
Uma das grandes melhorias do Magento 2.x em relação ao Magento 1.x é que os métodos de pagamento personalizados podem ser integrados ao checkout. Neste tutorial, mostraremos como implementar uma renderização de método de pagamento no checkout do Magento 2.
Etapa 1: criar o arquivo de componente .js
Para começar, seu renderizador de método de pagamento deve atuar como um componente de interface do usuário que depende do módulo Magento_Checkout
e estende o componente de método de pagamento padrão (o renderizador de método de pagamento padrão está localizado em <Magento_Checkout_module_dir>/view/frontend/web/js/view/payment/default.js
).
Crie o arquivo .js
do componente (o renderizador da forma de pagamento) em seu diretório de módulo personalizado. Ele deve ser armazenado no <your_module_dir>/view/frontend/web/js/view/
.
A visão geral do renderizador da forma de pagamento é a seguinte:
definir( ['Magento_Checkout/js/visualizar/pagamento/ predefinição' ], função(Componente) { ' use estrito'; return Component.extend({ padrões: { template: ' % caminho para o template % ' }, // adiciona a lógica necessária aqui }); } );
Para que este novo método de pagamento possa acessar os dados de configuração do sistema , ele deve implementar a interface \Magento\Checkout\Model\ConfigProviderInterface
, e a classe que o implementa deve ser injetada no provedor de configuração composta via configuração de frontend DI.
Exemplo de arquivo .php
que implementa \Magento\Checkout\Model\ConfigProviderInterface
:
classe MyCustomPaymentConfigProvider implementa \Magento\Checkout\Model\ConfigProviderInterface { ... função pública getConfig() { Retorna [ // 'chave' => 'valor' pares de configuração ]; } ... }
E caso seu novo método de pagamento exija informações de cartão de crédito , você deve usar o renderizador Magento para implementar o formulário de cartão de crédito (localizado em <Magento_Payment_module_dir>/view/frontend/web/js/view/payment/cc-form.js
).
Etapa 2: criar o componente .js
registrando o renderizador
Em seu diretório de módulo personalizado, crie o componente de interface do usuário .js que registra o renderizador do método de pagamento na lista de renderizadores. Ele deve estar localizado no <your_module_dir>/view/frontend/web/js/view/
.
O conteúdo do arquivo é o seguinte:
definir( ['uiComponent', 'Magento_Checkout/js/model/payment/renderer - list'], função( Componente, lista de renderizadores ) { ' use estrito'; rendererList.push({ digite: ' % payment_method_code % ', componente: ' % js_renderer_component % ' }, // outros renderizadores de métodos de pagamento, se necessário ); /** Adicione a lógica de visualização aqui, se necessário */ return Component.extend({}); } );
Etapa 3: criar o modelo para o componente de forma de pagamento
Crie um novo <your_module_dir>/view/frontend/web/template/<your_template>.html
em seu diretório de módulo personalizado. O modelo pode usar a sintaxe Knockout JS.
Por exemplo, o modelo para renderizar a forma de pagamento do PayPal Express:
https://github.com/magento/magento2/blob/2.4/app/code/Magento/Paypal/view/frontend/web/template/payment/paypal-express.html
Etapa 4: declarar a forma de pagamento no layout
- Crie um novo
<your_module_dir>/view/frontend/layout/checkout_index_index.xml
em seu diretório de módulo personalizado - Adicione o seguinte código a esse arquivo
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <corpo> <referenceBlock name="checkout.root"> <argumentos> <nome do argumento="jsLayout" xsi:type="array"> <item name="components" xsi:type="array"> <item name="checkout" xsi:type="array"> <item name="filhos" xsi:type="array"> <item name="passos" xsi:type="array"> <item name="filhos" xsi:type="array"> <item name="passo de faturamento" xsi:type="array"> <item name="component" xsi:type="string">uiComponent</item> <item name="filhos" xsi:type="array"> <item name="pagamento" xsi:type="array"> <item name="filhos" xsi:type="array"> <!-- Declarar componentes adicionais antes do pagamento. INICIAR --> <item name="beforeMethods" xsi:type="array"> <item name="component" xsi:type="string">uiComponent</item> <item name="displayArea" xsi:type="string">beforeMethods</item> <item name="filhos" xsi:type="array"> <item name="%your_feature_name%" xsi:type="array"> <item name="component" xsi:type="string">%path/to/your/feature_js_component%</item> </item> </item> </item> <!-- Declarar componentes adicionais antes do pagamento. FIM --> <!-- Declare a forma de pagamento (o componente que se cadastra na lista). INICIAR --> <item name="renders" xsi:type="array"> <item name="filhos" xsi:type="array"> <item name="%nome do grupo dos métodos de pagamento%" xsi:type="array"> <!-- Exemplo de valor: Magento_Paypal/view/frontend/web/js/view/payment--> <item name="component" xsi:type="string">%component_that_registers_payment_renderer%</item> <item name="métodos" xsi:type="array"> <!-- Adicione isto se o seu método de pagamento exigir a inserção de um endereço de cobrança--> <item name="%payment_method_code%" xsi:type="array"> <item name="isBillingAddressRequired" xsi:type="boolean">true</item> </item> </item> </item> </item> </item> <!-- Declare a forma de pagamento (o componente que se cadastra na lista). FIM --> <!-- Declare componentes adicionais após o pagamento. INICIAR --> <item name="afterMethods" xsi:type="array"> <item name="component" xsi:type="string">uiComponent</item> <item name="displayArea" xsi:type="string">afterMethods</item> <item name="filhos" xsi:type="array"> <item name="%your_feature_name%" xsi:type="array"> <item name="component" xsi:type="string">%path/to/your/feature_js_component%</item> </item> </item> </item> <!-- Declare componentes adicionais após o pagamento. FIM --> </item> </item> </item> </item> </item> </item> </item> </item> </item> </argumento> </argumentos> </referenceBlock> </body> </page>
(Somente para o modo de produção) Etapa 5: Executar comandos da CLI
No modo de produção, você precisará executar mais alguns comandos como:

php bin/magento setup:di:compile php bin/magento setup:static-content:deploy php bin/cache do magento:limpo

Pacote de extensão de check-out Magento 2
A página de checkout é, de longe, o destino mais importante de qualquer site online, que pode trazer um cliente para um consumidor ou afastá-lo do ponto de venda.
Felizmente, esta extensão de checkout do Magento 2 ajuda a otimizar seu checkout sem esforço.
Confira o terno agora!
Veja também:
Como personalizar o processo de checkout no Magento 2
Como adicionar código de desconto ao checkout no Magento