mozgbrasil/magento-cielo-php_72

Integração ao cielo

dev-master 2019-04-05 01:37 UTC

This package is auto-updated.

Last update: 2024-04-05 16:52:44 UTC


README

valid XHTML

Mozg\Cielo

Sinopse

Integração a Cielo 3.0

Motivação

Atender o mercado de módulos para Magento oferecendo melhorias e um excelente suporte

Vídeo(s) Demonstrativo

1 2 3 4
A Clique aqui Clique aqui _ _
B _ _ _ _
C _ _ _ _
D _ _ _ _

Suporte / Dúvidas

Para obter o devido suporte Clique aqui, relatando o motivo da ocorrência o mais detalhado possível e anexe o print da tela para nosso entendimento

Preço

Clique aqui

Recursos do módulo

  • [✓] Transação
  • [✓] Consulta
  • [✓] Captura
  • [✓] Reembolso
  • [✓] Cancelamento

Característica técnica

No checkout é feito o processo de autorização

No retorno de "Transação autorizada" é feito redirecionamento para a página de sucesso

Na página de sucesso é enviado infomações para o recurso de notificação da transação

Via CRON deve ser processado a notificação da transação,

No processamento da notificação caso o pagamento seja confirmado, deve ser alterado o "state/status" do pedido para "processing" ou seja "Processando", liberando as ações para processar a fatura e o envio

A captura da transação deve ser feita acessando a fatura no Magento e clicando no botão "Capturar", caso seja feita a captura pelo sistema da Cielo não deve ser exibido no Magento o status de "Pagamento confirmado" quando feito a consulta usando a API da Cielo

Antes do envio da mercadoria, sempre confira as informações do pedido, se o status da transação está sendo exibido que o pagamento foi confirmado, inclusive junto a operadora financeira se a transação foi capturada, caso algo esteja inconsistente será necessário cancelar o pedido até a correção da ocorrência

Quando o pedido é enviado o status é alterado para "complete" ou seja "Completo"

Foi implementada automação para a cada 5 minutos ser feito a consulta do status da transação para ser atualizado o status do pedido

Setup Cron

Para o uso do método é necessário ativar a CRON para o Magento

Clique aqui para visualizar o documento da MOZG

Certifique-se de que ação esteja sendo executado a cada minuto

Esse módulo usa o cronjob para processar as notificações

O módulo executa as notificações que foram recebidas há pelo menos 5 minutos.

Testando na Heroku

Gostaria de apresentar o aplicativo que disponibilizei para a plataforma Heroku

Com apenas 1 clique, o aplicativo cria sua loja virtual usando a plataforma de comércio eletrônico Magento e instala os módulos da MOZG

https://github.com/mozgbrasil/heroku-magento#descrição

Instalação - Atualização - Desinstalação - Desativação

--

Sugiro "printar" as telas com todos os procedimentos executados

Envie para nós as imagens das telas na eventualidade de quaisquer dificuldades

--

Este módulo destina-se a ser instalado usando o Composer

Execute o seguinte comando no terminal, para visualizar a existencia do Composer e sua versão

composer --version

Caso não tenha o Composer em seu ambiente, sugiro ler o seguinte artigo Clique aqui

--

É necessário que o servidor tenha o suporte a extensão ionCube PHP Loader

Para visualizar a existência da extensão nesse ambiente denominado PHP CLI, execute o seguinte comando no terminal

php -v

Para visualizar se essa extensão está ativa em seu servidor no ambiente denominado PHP WEB

Certique se da presença do arquivo phpinfo.php na raiz do seu projeto

<?php phpinfo(); ?>

Caso não exista o arquivo phpinfo.php na raiz do projeto Magento, crie o mesmo adicionado o conteúdo acima

Acesse o arquivo pelo browser

Em seguida pesquise pelo termo "ionCube PHP Loader"

Caso o seu servidor não tenha o suporte a extensão, entre em contato com sua empresa de hospedagem e peça para que eles ativem a extensão

Caso tenha a permissão e queira ativar a extensão, Clique aqui

Em "Loader Downloads API", efetue download do pacote compatível com o seu servidor

Descompacte o pacote e faça upload do arquivo "loader-wizard.php" para seu servidor, onde será demonstrado o passo a passo para a ativação da extensão

Clique aqui para ver os processos executados

--

Na presença do "ionCube PHP Loader" efetue o download do seguinte arquivo e coloque na raiz do seu servidor e acesse, se funcionar quer dizer que o "ionCube" está lendo esse tipo de encriptação

https://raw.githubusercontent.com/mozgbrasil/heroku-magento/master/phpinfo-ioncube-encoder10-x86-64-php_72.php

--

Para utilizar o(s) módulo(s) da MOZG é necessário aceitar o Acordo de licença do usuário final

--

Sugiro manter um ambiente de testes para efeito de testes e somente após os devidos testes aplicar os devidos procedimento no ambiente de produção

--

Sugiro efetuar backup da plataforma Magento e do banco de dados

--

Antes de efetuar qualquer atualização no Magento sempre mantenha o Compiler e o Cache desativado

--

Certique se da presença do arquivo composer.json na raiz do seu projeto Magento e que o mesmo tenha os parâmetros semelhantes ao modelo JSON abaixo

{
  "minimum-stability": "dev",
  "prefer-stable": true,
  "license": [
    "proprietary"
  ],
  "repositories": [
    {
      "type": "composer",
      "url": "https://packages.firegento.com"
    }
  ],
  "extra": {
    "magento-root-dir": "./",
    "magento-deploystrategy": "copy",
    "magento-force": true
  }
}

Caso não exista o arquivo composer.json na raiz do projeto Magento, crie o mesmo adicionado o conteúdo acima

Para instalar o módulo execute o comando a seguir no terminal do seu servidor

composer require mozgbrasil/magento-cielo-php_72:dev-master

Você pode verificar se o módulo está instalado, indo ao backend em:

STORES -> Configuration -> ADVANCED/Advanced -> Disable Modules Output

--

Para atualizar o módulo execute o comando a seguir no terminal do seu servidor

Antes de efetuar qualquer processo que envolva atualização no Magento é recomendado manter o Compiler e Cache desativado

composer update

Na ocorrência de erro, renomeie a pasta /vendor/mozgbrasil e execute novamente

Para checar a data do módulo execute o seguinte comando

grep -ri --include=*.json 'time": "' ./vendor/mozgbrasil

--

Para desinstalar o módulo execute o comando a seguir no terminal do seu servidor

composer remove mozgbrasil/magento-cielo-php_72

--

Para desativar o módulo

  1. Antes de efetuar qualquer processo que envolva atualização sobre o Magento é necessário manter o Compiler e Cache desativado

  2. Caso queira desativar os módulos da MOZG renomeie a seguinte pasta app/code/local/Mozg

A desativação do módulo pode ser usado para detectar se determinada ocorrência tem relação com o módulo

Como configurar o método de pagamento

Para configurar o método de pagamento, acesse no backend em:

STORES -> Configuration -> Sales/Payment Methods -> Cielo (powered by MOZG)

Você terá os campos a seguir

Cielo API 3.0 - Configurações Padrão

Configurações necessárias

Modo Teste ou Produção

Deve ser informado o devido ambiente

Merchant ID para o ambiente de teste

Efetue o cadastro no seguinte ambiente para obter os dados de integração como: MerchantId e MerchantKey

https://cadastrosandbox.cieloecommerce.cielo.com.br/

Merchant Key Ambiente de teste

Efetue o cadastro no seguinte ambiente para obter os dados de integração como: MerchantId e MerchantKey

https://cadastrosandbox.cieloecommerce.cielo.com.br/

Merchant ID para o ambiente de produção

A informação deve ser fornecido pela Cielo

Merchant Key Ambiente de produção

A informação deve ser fornecido pela Cielo

Merchant ID Checkout Cielo

A informação deve ser fornecido pela Cielo

Avançado: Processamento de Pedidos Magento

Status do pedido: ordem de criação

Status dos pedidos recém-criados, antes da confirmação de resultado de pagamento via notificações de servidor da operadora

Status do pedido: autorização de pagamento

Status dos pedidos após autorização confirmada por uma notificação de AUTORIZAÇÃO da operadora

Status do pedido: pagamento confirmado

Status dos pedidos após captura confirmada por uma notificação de AUTORIZAÇÃO da operadora

Status do pedido: cancelamento de pedido

Status dos pedidos após cancelamento confirmada por uma notificação de CANCELAMENTO da operadora

Se as encomendas já estiverem faturadas, não poderão ser canceladas

Status do pedido: captura de pagamento (produtos virtuais)

Selecione somente o status atribuído ao estado concluído, deixe vazio para usar o mesmo que os produtos normais

Status do pedido: Reembolsado

Status dos pedidos após reembolso confirmada por uma notificação de REEMBOLSO da operadora

Status do pedido: Reembolsado Parcial

Status dos pedidos após reembolso (parcial) confirmada por uma notificação de REEMBOLSO_PARCIAL da operadora. Recomendamos que não defina este status e deixe Magento decidir o status.

Status do pedido: pedidos pendentes

Status dos pedidos após notificação de PENDENCIA da operadora

Criar uma fatura pendente (apenas para captura manual)

Isso criará uma fatura pendente se a notificação de AUTORIZAÇÃO for recebida.

Nota: isto fará com que Magento empurre todas as encomendas para o estado: 'Processamento' uma vez que a fatura é criada, ignorando todas as outras definições.

Tipo de Captura

A opção "automática" deve ser selecionado, na necessidade do uso dessa automação que deve ser executada no processamento da notificação que é executada via CRON

A opção "manual" deve ser selecionado, na necessidade de capturar a transação manualmente, essa ação é feita acessando a fatura do pedido e clicando no botão "Capturar"

Status do pedido: Capturar no embarque

Se você habilitar esta função será feito uma solicitação de captura para a operadora se você fizer o envio

Ativar Descancelar pedido

Se uma pedido é cancelada por algum motivo, mas recebeu uma notificação de que o pagamento é autorizado, isso cancelará automaticamente o pedido

Cancelamento\Reembolso automático quando o pedido é cancelado

Ativar / Desativar reembolso automático ao cancelar um pedido

E-mail da fatura

Ativar / desativar atualizações de e-mails

Enviar e-mail de notificação do status do pedido

Ativar / desativar e-mails de atualização para todas as alterações no status do pedido para o cliente

Ativar log de depuração

Deve ser armazenado os processos do módulo em var/log/

O arquivo

DATE_mozg.log

se trata de log do módulo sendo um log mais detalhado contendo todos os processos inclusive das execuções realizadas pelas bibliotecas externas do módulo

O arquivo

payment_METHOD.log

Avançado: Cielo Notificações

Ignorar notificação de reembolso

Se o reembolso for feito na operadora, e a mesma enviar uma notificação de reembolso para o Magento, deve ser criado automaticamente uma nota de crédito. Se você definir essa configuração como 'Sim', isso não acontecerá porque ele não processará nenhuma das notificações de REEMBOLSO recebidas.

Avançado: Experiência de Checkout

Redirecionar o destino após o cancelamento

Determina como os compradores são redirecionados após cancelar um pagamento.

Método de pagamento método de renderização

Determina se os métodos de pagamento serão exibidos com seu logotipo ou apenas o nome.

Idioma local (opcional)

Isso substituirá o local do cliente padrão do armazenamento do Magento.

Deixe vazio para deixar Magento decidir (Ex: nl_NL)

Código do país ISO (opcional)

Isso irá substituir o país do endereço de faturamento do comprador ao determinar quais métodos de pagamento serão exibidos.

Cartão de Crédito Cielo

Ativar

Para "ativar" ou "desativar" o uso do método

Ordem de exibição

É a ordem apresentada em métodos de entrega no passo de fechamento de pedido

Título

Nome do método que deve ser exibido

Pagamentos aplicáveis aos países

Você pode definir se o método deve funcionar para "Todos os Países aceito" ou "Especificar Países "

Pagamentos específicos aos países

Você deve selecionar os países que o método deve ser funcional

Tipos de Cartão de Crédito

Selecione as bandeiras liberadas pela operadora

Criar Entrega

Se você habilitar isso, será criado automaticamente uma remessa se a fatura for criada

Visível em

Determine a visibilidade desse método de pagamento no frontend e/ou backend do Magento

Autenticar

Define se o comprador será direcionado ao Banco emissor para autenticação do cartão

Para essa opção é enviado o parâmetro ReturnUrl, não deve funcionar para dominios que contenham caracteres especiais conforme as regras da Cielo

Para pedidos feito no backend não ative essa opção, pois não deve funcionar o redirecionamento para a URL de autenticação

Analise de Fraude

Deve funcionar somente no ambiente de produção

Ativar Parcelamentos

Define o uso de parcelas

Parcelas padrão

Para a coluna "Moeda" informe a sigla da moeda por exemplo BRL

Para a coluna "Montante (incl.)" informe o valor para a exibição da parcela

Para a coluna "Número máximo de parcelas" informe o número de parcelas que será exibida até o valor previamente informando para a exibição da parcela

Para a coluna "Taxa de juros (%) 0.0" informe a taxa de juro usada

A regra para a exibição da parcela é definida com base na faixas de preços

O módulo já vem pré-configurado usando a seguinte regra

Nessa regra

entre R$ 0,00 até R$ 100,00 é exibido 1 parcela

entre R$ 101,00 até R$ 200,00 é exibido 2 parcelas

entre R$ 201,00 até R$ 600,00 é exibido 3 parcelas

entre R$ 601,00 até R$ 800,00 é exibido 4 parcelas

entre R$ 801,00 até R$ 10.000,00 é exibido 5 parcelas

entre R$ 10.000,00 até R$ 100.000,00 é exibido 6 parcelas

Altere conforme sua necessidade

Desativar em total geral zero

Desative esta forma de pagamento no checkout quando o total geral da cotação for 0.

Cartão de Débito Cielo

Ativar

Para "ativar" ou "desativar" o uso do método

Ordem de exibição

É a ordem apresentada em métodos de entrega no passo de fechamento de pedido

Título

Nome do método que deve ser exibido

Pagamentos aplicáveis aos países

Você pode definir se o método deve funcionar para "Todos os Países aceito" ou "Especificar Países "

Pagamentos específicos aos países

Você deve selecionar os países que o método deve ser funcional

Tipos de Cartão de Débito

Selecione as bandeiras liberadas pela operadora

Visível em

Determine a visibilidade desse método de pagamento no frontend e/ou backend do Magento

Desativar em total geral zero

Desative esta forma de pagamento no checkout quando o total geral da cotação for 0.

Boleto Cielo

Ativar

Para "ativar" ou "desativar" o uso do método

Ordem de exibição

É a ordem apresentada em métodos de entrega no passo de fechamento de pedido

Título

Nome do método que deve ser exibido

Pagamentos aplicáveis aos países

Você pode definir se o método deve funcionar para "Todos os Países aceito" ou "Especificar Países "

Pagamentos específicos aos países

Você deve selecionar os países que o método deve ser funcional

Tipos de Boleto

Selecione as bandeiras liberadas pela operadora

Status do pedido não pago

Com Boleto é possível pagar menos do que o valor total. Selecione aqui o status, se este for o caso. Se você deixar isso em branco, ele tomará o status de pedido de pagamento autorizado como status padrão

Status do pedido pago em excesso

Com Boleto é possível pagar mais do que o valor total. Selecione aqui o status, se este for o caso. Se você deixar isso em branco, ele tomará o status de pedido de pagamento autorizado como status padrão

Visível em

Determine a visibilidade desse método de pagamento no frontend e/ou backend do Magento

Transferência Eletrônica Cielo

Ativar

Para "ativar" ou "desativar" o uso do método

Ordem de exibição

É a ordem apresentada em métodos de entrega no passo de fechamento de pedido

Título

Nome do método que deve ser exibido

Pagamentos aplicáveis aos países

Você pode definir se o método deve funcionar para "Todos os Países aceito" ou "Especificar Países "

Pagamentos específicos aos países

Você deve selecionar os países que o método deve ser funcional

Tipos de Transferência Eletrônica

Selecione as bandeiras liberadas pela operadora

Status do pedido não pago

Com Boleto é possível pagar menos do que o valor total. Selecione aqui o status, se este for o caso. Se você deixar isso em branco, ele tomará o status de pedido de pagamento autorizado como status padrão

Status do pedido pago em excesso

Com Boleto é possível pagar mais do que o valor total. Selecione aqui o status, se este for o caso. Se você deixar isso em branco, ele tomará o status de pedido de pagamento autorizado como status padrão

Visível em

Determine a visibilidade desse método de pagamento no frontend e/ou backend do Magento

Checkout Cielo

Ativar

Para "ativar" ou "desativar" o uso do método

Ordem de exibição

É a ordem apresentada em métodos de entrega no passo de fechamento de pedido

Título

Nome do método que deve ser exibido

Pagamentos aplicáveis aos países

Você pode definir se o método deve funcionar para "Todos os Países aceito" ou "Especificar Países "

Pagamentos específicos aos países

Você deve selecionar os países que o método deve ser funcional

Nome que aparecerá na fatura

Informe o nome que aparecerá na fatura

Ativar Antifraud

Defina o uso

Status do pedido não pago

Com Boleto é possível pagar menos do que o valor total. Selecione aqui o status, se este for o caso. Se você deixar isso em branco, ele tomará o status de pedido de pagamento autorizado como status padrão

Status do pedido pago em excesso

Com Boleto é possível pagar mais do que o valor total. Selecione aqui o status, se este for o caso. Se você deixar isso em branco, ele tomará o status de pedido de pagamento autorizado como status padrão

Visível em

Determine a visibilidade desse método de pagamento no frontend e/ou backend do Magento

Perguntas mais frequentes "FAQ"

Oque fazer após a instalação do módulo ?

::

Crie uma conta de teste em

https://cadastrosandbox.cieloecommerce.cielo.com.br/

Onde será fornecido o seu MerchantId e MerchantKey

Configure no método o seu MerchantId e MerchantKey

Para efeito de testes, pode ser usado os seguintes cartões de testes

http://mozg.com.br/dicas/dicas-magento1#cartões-de-crédito-para-testes

Efetue a finalização de um pedido sobre o ambiente de teste onde será feito o processamento da transação

Se foi exibido a tela de finalização quer dizer que foi processado sua transação

::

Deve ser enviado e-mail para a Cielo solicitando homologação dessa integração e solicitando os dados para ser usados em ambiente de produção

::

Envie o seguinte email para cieloecommerce@cielo.com.br

Assunto: "Número do Estabelecimento: ??? / Razão Social: ??? / Sobre: ???"

A/C Suporte Cielo

Favor iniciar processo de homologação

Fico no aguardo dos dados do ambiente de produção para prosseguirmos com processo de homologação

Conforme imagem em anexo o processo está funcional sobre esse ambiente

- URL do produto

    http://phpstack-97926-416875.cloudwaysapps.com/teste.html

- Usuário e Senha (caso seja necessário)

    mailer@mozg.com.br / 123456

::

A Cielo deve enviar e-mail com os devidos procedimentos

Não envie de e-mail a Cielo contendo assinatura e logotipos pois o mesmo pode ser bloqueado

O corpo do e-mail tem que ser branco somente com a interação de homologação

30 minutos depois de enviar o e-mail ligar para confirmar se eles receberem o e-mail

Dados que a Cielo solicita quando se liga para a confirmação do e-mail ( Número do estabelecimento, razão social e CNPJ)

::

Sobre "cartões internacionais"

Conforme

https://developercielo.github.io/faq/faq-api-3-0#24-a-api-cielo-ecommerce-aceita-pagamento-com-diferentes-moedas-e-cartões-internacionais

A Cielo aceita cartões internacionais, mas as transações são processadas em Reais "R$/BRL"

Portanto a moeda base da loja deve ser "R$/BRL"

A seguir temos um topico sobre a cotação de moedas

http://mozg.com.br/dicas/dicas-magento1#cotação-de-moedas-magento-cambio

Sobre "Pagamento por e-mail"

A pratica de "Pagamento por e-mail" consiste conter no e-mail do pedido ou similar um link para o usuario acessar e efetuar o pagamento

No módulo da Cielo consta a integração "Checkout Cielo" que permite essa funcionalidade

Como cancelar um pedido

Para cancelar um pedido pelo magento, acesse a fatura previamente criada e clique no botão "Cancelar" em seguida acesse o pedido e clique no botão "Cancelar

Como fazer o reembolso

Acesse a fatura previamente criada e clique no botão "Reembolso"

Obs. o botão "Reembolso" só deve ser exibido quando tiver sido feito a captura

Na visualização do pedido ao clicar no botão "Reembolsar" o Magento só exibe o botão nomeado como "Reembolso Offline", ao clicar nesse botão só é feito a ação de Reembolso para o Magento

Na visualização da fatura do pedido ao clicar no botão "Reembolsar" o Magento deve exibir os botões nomeados como "Reembolso Offline" e "Reembolso", ao clicar no botão "Reembolso" é disparado ação "Online" ou seja é disparado ação para a operadora de pagamento "Cancelar" a transação relacionada ao pedido

Sobre erro de validação do cartão de crédito "Número do Cartão de Crédito não condiz com o tipo do cartão"

No Magento as validações de cartão de crédito é feita pelo script nativo da própria plataforma Magento

ou seja o seguinte script

/js/prototype/validation.js

::

Na ocasião habilitei o método nativo do Magento "Credit Card (saved)" que também usa o validador nativo onde o número do cartão em questão não passou pelo validador

Esse teste é uma forma de detectar se a ocorrência parte de módulos de terceiros ou se trata de ocorrência relativa ao Magento

::

Detectei que a validação não estava funcionando porque o projeto estava usando uma versão defasada do Magento que tem esse problema de validação

O projeto estava na versão 1.7.0.2 e a atual versão do Magento é 1.9.3.3

Como recomendado é sugerido sempre manter o projeto atualizado devido as melhorias e correções

::

Recomendei o uso de forma temporária do validador do Magento 1.9.3.3, até que o cliente atualize o projeto para a nova versão do Magento

https://raw.githubusercontent.com/firegento/magento/magento-1.9.3.3/js/prototype/validation.js

::

Uma forma para testar o validador é a seguinte

  1. No checkout não digite nada e clique no botão de finalizar pedido, verá que será disparado o evento do validador apontando as ocorrência de não preenchimento

  2. Digite a informação no devido campo e clique no botão de finalizar pedido, com as informações correta o validador deve ser processado sem exibição de alerta

::

Caso queira testar todas as bandeiras acesse

https://mozg.com.br/dicas/dicas-magento1#cartões-de-crédito-para-testes

Sobre o armazenamento da parcela

Para o método de pagamento: Braspag API V2 ou Cielo API 3.0 ou Redecard Komerci Webservice

A seleção da parcela é feita no Magento e armazenada no Magento

Para resgatar a parcela, podemos usar o seguinte script modelo

$order = Mage::getModel('sales/order')->load('855');
$payment = $order->getPayment();
$additionaInformation = $payment->getData('additional_information');
$installment = $additionaInformation['number_of_installments'];
echo $installment;

::

Para o método de pagamento: Checkout Cielo

A seleção da parcela é feita no ambiente da Cielo

No /checkout/ do Magento não é solicitado a seleção da parcela, por isso não temos o armazenamento e a exibição da mesma no gerenciamento do pedido em "Informações de Pagamento"

Gerenciando o Checkout Cielo

https://cieloecommerce.cielo.com.br/Backoffice/

Sobre URL: de Retorno, Notificação e Mudança de Status para o método "Checkout Cielo"

Para as Urls

  • URL de Retorno

Sugiro não informar nada

  • URL de Notificação

    http://SEU_DNS/mozg_cielo/process/notification/checkout_cielo/robo/

  • URL de Mudança de Status

    http://SEU_DNS/mozg_cielo/process/notification/checkout_cielo/robo/

Sobre a bandeira selecionada no ambiente "Checkout Cielo"

Na notificação enviada pela Cielo, é

Como alterar a imagem do método

Pode ser adicionado a imagem, contendo qualquer uma das nomenclaturas a seguir

  • method-boleto.png
  • method-creditcard.png
  • method-debitcard.png
  • method-eletronictransfer.png

E adicione a imagem no diretório do seu template

/skin/frontend//default/images/mozg_cielo

Dados de contato - Cielo

Cielo E-Commerce cieloecommerce@cielo.com.br Tel: 4002-9700 (Capitais e regiões metropolitanas) e 0800-570-1700 (Demais localidades)

Enviar assunto no seguinte formato:

Número do Estabelecimento: ??? / Razão Social: ??? / Sobre: ???

ou acesse

Para entrar em contato com a Cielo

Manual

https://developercielo.github.io/manual/cielo-ecommerce

https://developercielo.github.io/manual/checkout-cielo

Contribuintes

Equipe Mozg

License

Comercial License

Badges

Join the chat at https://gitter.im/mozgbrasil Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads Daily Downloads Reference Status Dependency Status

🐈