Skip to content

Commit

Permalink
Merge pull request #27 from pallomabritoGN/master
Browse files Browse the repository at this point in the history
Release 1.0.0
  • Loading branch information
jvoliveiraGN authored Jul 27, 2021
2 parents 424a24f + dd52358 commit 2afc445
Show file tree
Hide file tree
Showing 1,591 changed files with 22,651 additions and 156,548 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# v1.0.0
* Fix: Dependências atualizadas
* Add: Pix adicionado
* Fix: Compatibilidade com o openMage

# v0.4.2
* Fix: Realiza verificação da versão do TLS do servidor.

Expand Down
67 changes: 45 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
# Módulo Oficial da Gerencianet para o Magento - Versão 0.4.2
# Módulo Oficial da Gerencianet para o Magento 1.9 / OpenMage

**Em caso de dúvidas, você pode verificar a [Documentação](https://docs.gerencianet.com.br) da API na Gerencianet e, necessitando de mais detalhes ou informações, entre em contato com nossa consultoria técnica, via nossos [Canais de Comunicação](https://gerencianet.com.br/central-de-ajuda).**

## Requisitos

- PHP >= 7.0.0
- Magento 1.9.x OU OpenMage LTS 19.4.x

## Instalação

### Instalar usando o [modgit](https://github.com/jreinke/modgit):
Expand All @@ -10,19 +15,15 @@
$ modgit init
$ modgit add gerencianet https://github.com/gerencianet/gn-api-magento.git

- Atualize o cache da sua loja acessando `Sistema > Gerenciador de Cache > Atualizar Cache`.

### Instalar manualmente:

- Baixe a [última versão](https://github.com/gerencianet/gn-api-magento/archive/master.zip) do módulo.
- Descompacte o arquivo baixado e copie as pastas app, lib e skin para dentro do diretório principal do Magento*.
- Defina as seguintes permissões:

775 para todos os diretórios;
644 para todos os arquivos;
777 para app/etc/, var/ e media/
- Execute os comandos:

isso seria equivalente a executar os comandos:

sudo find . -type d -exec chmod 755 {} \;
```sudo find . -type d -exec chmod 755 {} \;
sudo find . -type f -exec chmod 644 {} \;
sudo chmod 777 -R app/etc/;
sudo chmod 777 -R var/;
Expand All @@ -32,28 +33,50 @@ isso seria equivalente a executar os comandos:
*Ao substituir as pastas no seu projeto, o sistema pode informar que alguns arquivos serão sobrescritos. Não se preocupe, pode confirmar o procedimento pois a instalação não afeterá nenhum arquivo já existente em seu projeto.
## Requisitos
## Configuração
- PHP >= 5.4.0
- Magento 1.7.x, 1.8.x ou 1.9.x
Acessando `Sistema > Configuração > Formas de Pagamento`, 4 novos menus serão mostrados:
## Configuração
- Gerencianet Pagamentos - Configurações Gerais
- Gerencianet - Boleto
- Gerencianet - Cartão de Cŕedito
- Gerencianet - Pix
## **Gerencianet Pagamentos - Configurações Gerais**
![Config](https://i.imgur.com/iVxDlsd.png)
Acessando `Sistema > Configuração > Formas de Pagamento`, 3 novos menus serão mostrados:
- **Habilitado:** Serve para habilitar ou desabilitar o módulo.
- **Ambiente:** Serve para descrever se as transações acontecerão em ambiente de Produção ou Desenvolvimento.
- **Modo debug:** Habilita o modo debug do módulo.
- **Identificador da conta:** Identificador de Conta da Gerencianet.
- **Credenciais de Desenvolvimento ou Produção:** Aqui você informa as suas credenciais, Client Id e Client Secret do ambiente selecionado.
- Checkout Transparente Gerencianet
- Boleto Bancário - Gerencianet
- Cartão de Cŕedito - Gerencianet
### **Gerencianet - Boleto**
![Boleto](https://i.imgur.com/NkbkCoE.png)
No **Checkout Transparente Gerencianet**, informe as credenciais da sua aplicação e o identificador da conta, obtidos a partir da sua conta Gerencianet.
- **Habilitado:** Serve para habilitar ou desabilitar a funcionalidade de Boletos.
- **Título:** Altera o nome do método de pagamento no checkout.
- **Dias para vencimento:** Validade do Boleto.
- **Multa após vencimento:** Valor da multa a ser cobrada após o vencimento.
- **Juros após vencimento:** Valor de juros a ser cobrado.
- **Instruções no boleto:** Aqui você tem quatro campos que podem ser preenchido com mensagens no boleto, desde que as opções de juros e multa estejam zeradas.
Para habilitar e configurar informações do boleto, como as linhas de instrução e a quantidade de dias para vencimento, veja **Boleto Bancário - Gerencianet**.
### **Gerencianet - Cartão de Crédito**
![Cartao](https://i.imgur.com/nGfS06C.png)
- **Habilitado:** Serve para habilitar ou desabilitar a funcionalidade de cartão de crédito.
- **Título:** Altera o nome do método de pagamento no checkout.
Para habilitar a opção de cartão de crédito, veja **Cartão de Crédito - Gerencianet**.
Observação: A **data de nascimento** é obrigatória para cobranças via cartão e o **cpf** é obrigatório para qualquer tipo de pagamento. Acesse `Sistema > Configuração > Configuração do cliente > Opções de Nome e Endereço`. Marque "obrigatório" para "Exibir Data de Nascimento" e "Exibir CPF/CNPJ".
Por padrão, o modulo utiliza sempre 4 linhas de endereço (Acesse `Sistema > Configuração > Configuração do cliente > Opções de Nome e Endereço`. Marque 4 no campo Número de linhas), respectivamente **street**, **number**, **complement** e **neighborhood**.
### **Gerencianet - Pix**
![Pix](https://i.imgur.com/6j2IvPP.png)
Além disso, a **data de nascimento** é obrigatória para cobranças via cartão e o **cpf** é obrigatório para qualquer tipo de pagamento. Acesse `Sistema > Configuração > Configuração do cliente > Opções de Nome e Endereço`. Marque "obrigatório" para "Exibir Data de Nascimento" e "Exibir CPF/CNPJ".
- **Habilitado:** Serve para habilitar ou desabilitar a funcionalidade de Pix.
- **Título:** Altera o nome do método de pagamento no checkout.
- **Chave Pix:** Sua chave Pix cadastrada no aplicativo da Gerencianet.
- **Certificado Pix:** Certificado gerado no painel da Gerencianet.
- **Tempo de validade do Pix:** Validade do Pix.
- **Validar mTLS:** Habilita o mTLS.
225 changes: 225 additions & 0 deletions app/code/local/Gerencianet/Transparent/Block/Pix/Form.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
<?php
/**
* Gerencianet
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL).
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
*
* @category Payment
* @package Gerencianet_Transparent
* @copyright Copyright (c) 2016 Gerencianet (http://www.gerencianet.com.br)
* @author Gerencianet
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class Gerencianet_Transparent_Block_Pix_Form extends Mage_Payment_Block_Form {

/**
* Block constructor
*/
protected function _construct() {
parent::_construct();
$sessionInstance = Mage::getModel("core/session")->getSessionQuote();
$order = Mage::getModel($sessionInstance)->getQuote();
$address = $order->getBillingAddress();
$order_total = $order->getGrandTotal();

$customerDocument = preg_replace( '/[^0-9]/', '', $order->getCustomerTaxvat());
if (strlen($customerDocument)==11 && $this->validaCPF($customerDocument)) {
$juridical=false;
} else if (strlen($customerDocument)==14 && $this->validaCNPJ($customerDocument)) {
$juridical = true;
} else {
$customerDocument = "";
$juridical=false;
}

if ($order->getCustomerEmail()) {
$email = $order->getCustomerEmail();
} else if ($address->getEmail()) {
$email = $address->getEmail();
} else {
$email = "";
}

$phone_number = preg_replace( '/[^0-9]/', '', $address->getTelephone());
if (strlen($phone_number)<10 || strlen($phone_number)>11) {
$phone_number = "";
}

if ($customerDocument!="") {
if ($juridical) {
if ($order->getCustomer()->getRazaoSocial()) {
$name = $order->getCustomer()->getRazaoSocial();
} else {
if ($order->getCustomerFirstname!="") {
$name = $order->getCustomerFirstname();
} else if ($address->getFirstname()!="") {
$name = $address->getFirstname();
}
}
} else {
if ($order->getCustomerName()) {
$name = $order->getCustomerName();
} else if ($order->getCustomerFirstname!="" && $order->getCustomerLastname()!="") {
$name = $order->getCustomerFirstname() . ' ' . $order->getCustomerLastname();
} else {
$name = $address->getFirstname() . " " . $address->getLastname();
}

}
} else {
$name="";
}

if (strlen($name)<1 || !preg_match("/^[ ]*(?:[^\\s]+[ ]+)+[^\\s]+[ ]*$/",$name) || $name=="undefined") {
$name = "";
}

$dataOrder = array(
'customer_data_name' => $name,
'customer_data_document' => $customerDocument,
'customer_data_juridical' => $juridical,
'customer_data_email'=>$email,
'customer_data_phone_number'=>$phone_number,
'order_total' => $order_total
);

$this->setData($dataOrder)->setTemplate('gerencianet/pix/form.phtml');

}


/**
* Prepares layout for show on screen
*/
protected function _prepareLayout(){

$jsBlock = Mage::app()->getLayout()->createBlock('core/text', 'js_gerencianet_pix');
$jsBlock->setText("
<script type='text/javascript' src='".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS, true)."gerencianet/jquery-1.12.3.min.js'; ?>'></script>
<script type='text/javascript' src='".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS, true)."gerencianet/jquery.maskedinput.js'; ?>'></script>
<script type='text/javascript'>
//<![CDATA[
jQuery.noConflict();
//]]>
</script>
");

$head = Mage::app()->getLayout()->getBlock('after_body_start');

if($head) {
$head->append($jsBlock);
}

}


/**+
* Get current order object
* @return Mage_Sales_Model_Order
*/
public function getOrder() {
if (!$this->_order) {
$this->_order = Mage::registry('current_order');
if (!$this->_order) {
$sessionInstance = Mage::getModel("core/session")->getSessionQuote();
$this->_order = Mage::getModel($sessionInstance)->getQuote();
if (!$this->_order) {
return false;
}
}
}
return $this->_order;
}

private function validaCPF($cpf) {
$soma = 0;

if (strlen($cpf) <> 11)
return false;

for ($i = 0; $i < 9; $i++) {
$soma += (($i+1) * $cpf[$i]);
}

$d1 = ($soma % 11);

if ($d1 == 10) {
$d1 = 0;
}

$soma = 0;


for ($i = 9, $j = 0; $i > 0; $i--, $j++) {
$soma += ($i * $cpf[$j]);
}

$d2 = ($soma % 11);

if ($d2 == 10) {
$d2 = 0;
}

if ($d1 == $cpf[9] && $d2 == $cpf[10]) {
return true;
}
else {
return false;
}
}

private function validaCNPJ($cnpj) {

if (strlen($cnpj) <> 14)
return false;

$soma = 0;

$soma += ($cnpj[0] * 5);
$soma += ($cnpj[1] * 4);
$soma += ($cnpj[2] * 3);
$soma += ($cnpj[3] * 2);
$soma += ($cnpj[4] * 9);
$soma += ($cnpj[5] * 8);
$soma += ($cnpj[6] * 7);
$soma += ($cnpj[7] * 6);
$soma += ($cnpj[8] * 5);
$soma += ($cnpj[9] * 4);
$soma += ($cnpj[10] * 3);
$soma += ($cnpj[11] * 2);

$d1 = $soma % 11;
$d1 = $d1 < 2 ? 0 : 11 - $d1;

$soma = 0;
$soma += ($cnpj[0] * 6);
$soma += ($cnpj[1] * 5);
$soma += ($cnpj[2] * 4);
$soma += ($cnpj[3] * 3);
$soma += ($cnpj[4] * 2);
$soma += ($cnpj[5] * 9);
$soma += ($cnpj[6] * 8);
$soma += ($cnpj[7] * 7);
$soma += ($cnpj[8] * 6);
$soma += ($cnpj[9] * 5);
$soma += ($cnpj[10] * 4);
$soma += ($cnpj[11] * 3);
$soma += ($cnpj[12] * 2);


$d2 = $soma % 11;
$d2 = $d2 < 2 ? 0 : 11 - $d2;

if ($cnpj[12] == $d1 && $cnpj[13] == $d2) {
return true;
}
else {
return false;
}
}

}
46 changes: 46 additions & 0 deletions app/code/local/Gerencianet/Transparent/Block/Pix/Info.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?php
/**
* Gerencianet
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL).
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
*
* @category Payment
* @package Gerencianet_Transparent
* @copyright Copyright (c) 2016 Gerencianet (http://www.gerencianet.com.br)
* @author Gerencianet
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class Gerencianet_Transparent_Block_Pix_Info extends Mage_Payment_Block_Info
{
/**
* Block constructor
*/
protected function _construct()
{
parent::_construct();
$this->setTemplate('gerencianet/pix/info.phtml');
}

/**
* Retrieve current order model instance
*
* @return Mage_Sales_Model_Order
*/
public function getOrder()
{
$order = Mage::registry('current_order');

$info = $this->getInfo();

if (!$order) {
if ($this->getInfo() instanceof Mage_Sales_Model_Order_Payment) {
$order = $this->getInfo()->getOrder();
}
}
return($order);
}
}
Loading

0 comments on commit 2afc445

Please sign in to comment.