Skip to content
This repository has been archived by the owner on Apr 24, 2023. It is now read-only.

Commit

Permalink
Merge pull request #61 from pagseguro/desenvolvimento
Browse files Browse the repository at this point in the history
Change direct payment flow
  • Loading branch information
s2it-moscou committed Sep 18, 2017
2 parents 7bbff65 + 48eb3d8 commit c0d8137
Show file tree
Hide file tree
Showing 36 changed files with 2,157 additions and 369 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
Changelog
---------
3.2.0
- Alterado fluxo do checkout transparente para o fluxo padrão do Magento (onepage)
- Atualizada tela de cofiguração do módulo (admin), adicionando categorias e possibilitando habilitar métodos transparentes (boleto, débito online e cartão de crédito) individualmente

3.1.0
- Adicionada biblioteca de máscaras (Vannila-Masker)
- Corrigidos bugs no checkout transparente
Expand Down
44 changes: 40 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@ Com o módulo instalado e configurado, você pode pode oferecer o PagSeguro como
- Integração com a [API de Pagamentos](https://dev.pagseguro.uol.com.br/documentacao/pagamentos)
- Integração com a [API de Notificações](https://pagseguro.uol.com.br/v2/guia-de-integracao/api-de-notificacoes.html#!rmcl)

## Índice
**[Requisitos](#requisitos)**<br>
**[Instalação](#instalação)**<br>
**[Configuração](#configuração)**<br>
**[Transações](#transações)**<br>
**[Dúvidas](#dúvidas)**<br>
**[Changelog](#changelog)**<br>
**[Notas](#notas)**<br>
**[Contribuições](#contribuições)**<br>
**[Licença](#licença)**<br>

## Requisitos
- [Magento](https://www.magentocommerce.com/) Community 1.9.0 até 1.9.3.4 (ainda em fase de testes nas versões 1.6.x, 1.7.x, 1.8.x)
- [PHP](http://www.php.net/) 5.4.27+, 5.5.x+, 5.6.x+ (ainda em fase de testes nas versões 7.x)
Expand All @@ -19,10 +30,11 @@ Com o módulo instalado e configurado, você pode pode oferecer o PagSeguro como
- Certifique-se de que não há instalação de outros módulos para o PagSeguro em seu sistema;
- Caso utilize a compilação do Magento, desative-a e limpe-a *(Sistema -> Ferramentas -> Compilação)*;
- Baixe a última versão do módulo **[nesse link](https://github.com/pagseguro/magento/raw/master/UOL_PagSeguro-3.1.0.tgz)** ou então baixe o repositório como arquivo zip através do botão do GitHub;
- Baixe a última versão do módulo **[nesse link](https://github.com/pagseguro/magento/raw/master/UOL_PagSeguro-3.2.0.tgz)** ou então baixe o repositório como arquivo zip através do botão do GitHub;
- Na área administrativa do seu Magento, acesse o menu *Sistema/System -> Magento Connect -> Magento Connect Manager*. Caso tenha uma versão anterior do módulo instalada faça a remoção agora;
- No Magento Connect Manger, dentro da seção Direct package file upload, clique em **Escolher arquivo/Choose file**, selecione o arquivo UOL_PagSeguro-x.x.x.tgz (baixado anteriormente), clique no botão de upload e acompanhe a instalação do módulo no console da página;
- Caso utilize a compilação, volte para a área administrativa do Magento, ative-a e execute-a novamente;
- Pronto, ao finalizar o processo o módulo do PagSeguro estará instalando no seu Magento! Siga para a [próxima seção](#configuração) para configurar e começar a usar o módulo.

> Caso tenha uma versão do módulo do PagSeguro anterior à 2.3 instalada, copie o arquivo *remove-module-2.2.php* para a raíz de instalação do seu Magento e execute o arquivo no browser, ex.: www.meusite.com.br/magento/remove-module-2.2.php. Siga as instruções na tela para a remoção dos arquivos.
Expand All @@ -31,8 +43,9 @@ Configuração
---
Para acessar e configurar o módulo acesse o menu PagSeguro -> Configurações. As opções disponíveis estão descritas abaixo.

- **ativar módulo**: ativa/desativa o módulo.
- **nome de exibição**: define o nome que será utilizado para o meio de pagamento na tela de checkout.
-------------------------
**Configurações Gerais**

- **ambiente**: especifica em que ambiente as transações serão feitas *(produção/sandbox)*.
- **e-mail**: e-mail cadastrado no PagSeguro.
- **token**: token cadastrado no PagSeguro.
Expand All @@ -43,14 +56,37 @@ Para acessar e configurar o módulo acesse o menu PagSeguro -> Configurações.
- **ativar log**: ativa/desativa a geração de logs.
- **diretório**: informe o local e nome do arquivo a partir da raíz de instalação do Magento onde se deseja criar o arquivo de log. Ex.: /pagseguro.log.
- *Por padrão o módulo virá configurado para salvar o arquivo de log em /var/pagseguro.log*.
- **checkout**: especifica o modelo de checkout que será utilizado. É possível escolher entre checkout padrão, checkout lightbox e checkout transparente.
- **listar transações abandonadas?**: ativa/desativa a pesquisa de transações que foram abandonadas no checkout do PagSeguro.
- **template de e-mail**: define qual o template de email sua loja usuará para o envio do email de recuperação de venda.
- **oferecer desconto para ...**: ativa/desativa desconto para checkouts utilizando este meio de pagamento
- **percentual de desconto**: define o percentual de desconto a ser concedido para o meio de pagamento escolhido
- **transações -> abandonadas**: permite consultar as transações que foram abandonadas nos últimos 10 dias, desta forma você pode enviar emails de recuperação de venda. O e-mail conterá um link que redirecionará o comprador para o fluxo de pagamento, exatamente no ponto onde ele parou.
- **listar parcelamento**: Habilita a exibição de uma listagem de parcelas na tela de visualização do produto. (Irá exibir o maior parcelamento disponível para o produto na tela de exibição do mesmo)

-------------------------
**Configurar Tipos de Checkout**

- *PagSeguro (Padrão ou Lightbox)*
- **ativar**: ativa/desativa o meio de pagamento PagSeguro (padrão ou lightbox).
- **nome de exibição**: define o nome que será utilizado para o meio de pagamento na tela de checkout.
- **checkout**: especifica o modelo de checkout que será utilizado. É possível escolher entre checkout padrão ou checkout lightbox.


- *Checkout Transparente - Cartão de Crédito*
- **ativar**: ativa/desativa o meio de pagamento Checkout Transparente - Cartão de Crédito.
- **nome de exibição**: define o nome que será utilizado para esse meio de pagamento na tela de checkout.


- *Checkout Transparente - Boleto Bancário*
- **ativar**: ativa/desativa o meio de pagamento Checkout Transparente - Boleto Bancário.
- **nome de exibição**: define o nome que será utilizado para esse meio de pagamento na tela de checkout.


- *Checkout Transparente - Débito Online*
- **ativar**: ativa/desativa o meio de pagamento Checkout Transparente - Débito Online.
- **nome de exibição**: define o nome que será utilizado para esse meio de pagamento na tela de checkout.


Transações
------------
---
Expand Down
Binary file removed UOL_PagSeguro-3.1.0.tgz
Binary file not shown.
Binary file added UOL_PagSeguro-3.2.0.tgz
Binary file not shown.
23 changes: 23 additions & 0 deletions app/code/community/UOL/PagSeguro/Block/Form/Boleto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php
/**
* Form block for boleto payment
*/
class UOL_PagSeguro_Block_Form_Boleto extends Mage_Payment_Block_Form
{
protected function _construct()
{
parent::_construct();
$paymentModel = Mage::getSingleton('UOL_PagSeguro_Model_PaymentMethod');
$this->setBoletoSession($paymentModel->getSession());
$this->setTemplate('uol/pagseguro/form/boleto.phtml');
}

protected function _prepareLayout()
{
if ($this->getLayout()->getBlock('head')) {
$this->getLayout()->getBlock('head')->addItem('skin_js', 'uol/pagseguro/js/direct-payment.js');
$this->getLayout()->getBlock('head')->addItem('skin_js', 'uol/pagseguro/js/boleto.js');
$this->getLayout()->getBlock('head')->addItem('skin_css', 'uol/pagseguro/css/direct-payment.css');
}
}
}
26 changes: 26 additions & 0 deletions app/code/community/UOL/PagSeguro/Block/Form/CreditCard.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php
/**
* Form block for credit card payment
*/
class UOL_PagSeguro_Block_Form_CreditCard extends Mage_Payment_Block_Form
{
protected function _construct()
{
parent::_construct();
$totals = Mage::getSingleton('checkout/session')->getQuote()->getTotals()['grand_total'];
$this->setGrandTotal($totals->getData()['value']);

$paymentModel = Mage::getSingleton('UOL_PagSeguro_Model_PaymentMethod');
$this->setCreditCardSession($paymentModel->getSession());
$this->setTemplate('uol/pagseguro/form/creditcard.phtml');
}

protected function _prepareLayout()
{
if ($this->getLayout()->getBlock('head')) {
$this->getLayout()->getBlock('head')->addItem('skin_js', 'uol/pagseguro/js/direct-payment.js');
$this->getLayout()->getBlock('head')->addItem('skin_js', 'uol/pagseguro/js/credit-card.js');
$this->getLayout()->getBlock('head')->addItem('skin_css', 'uol/pagseguro/css/direct-payment.css');
}
}
}
23 changes: 23 additions & 0 deletions app/code/community/UOL/PagSeguro/Block/Form/OnlineDebit.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php
/**
* Form block for online debit payment
*/
class UOL_PagSeguro_Block_Form_OnlineDebit extends Mage_Payment_Block_Form
{
protected function _construct()
{
parent::_construct();
$paymentModel = Mage::getSingleton('UOL_PagSeguro_Model_PaymentMethod');
$this->setOnlineDebitSession($paymentModel->getSession());
$this->setTemplate('uol/pagseguro/form/onlinedebit.phtml');
}

protected function _prepareLayout()
{
if ($this->getLayout()->getBlock('head')) {
$this->getLayout()->getBlock('head')->addItem('skin_js', 'uol/pagseguro/js/direct-payment.js');
$this->getLayout()->getBlock('head')->addItem('skin_js', 'uol/pagseguro/js/online-debit.js');
$this->getLayout()->getBlock('head')->addItem('skin_css', 'uol/pagseguro/css/direct-payment.css');
}
}
}
32 changes: 32 additions & 0 deletions app/code/community/UOL/PagSeguro/Helper/Data.php
Original file line number Diff line number Diff line change
Expand Up @@ -574,4 +574,36 @@ protected function getOrderMagetoDateConvert($date)
{
return date("d/m/Y H:i:s", Mage::getModel("core/date")->timestamp($date));
}

public function getPagSeguroDirectPaymentJs()
{
if (Mage::getStoreConfig('payment/pagseguro/environment') === 'production') {
return 'https://stc.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js';
}

return 'https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js';
}

/**
* Format original document and return it as an array, with it "washed" value
* and type
* @param string $document
* @return array
* @throws Exception
*/
public function formatDocument($document)
{
$documentNumbers = preg_replace('/[^0-9]/', '', $document);
switch (strlen($documentNumbers)) {
case 14:
return ['number' => $documentNumbers, 'type' => 'CNPJ'];
break;
case 11:
return ['number' => $documentNumbers, 'type' => 'CPF'];
break;
default:
throw new Exception('Invalid document');
break;
}
}
}
4 changes: 2 additions & 2 deletions app/code/community/UOL/PagSeguro/Helper/Requirements.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ public function validateRequirements()
$version = str_replace('.', '', phpversion());

if ($version < 540) {
$msg = $this->__('PagSeguroLibrary: É necessária a versão 5.4.0 do PHP ou maior.');
$msg = $this->__('PagSeguroLibrary: É necessária a versão 5.4.27 do PHP ou maior.');
$req['version']['text'] = $msg;
$req['version']['status'] = false;
} else {
$req['version']['text'] = $this->__('Versão do PHP superior à 5.4.0.');
$req['version']['text'] = $this->__('Versão do PHP superior à 5.4.27.');
$req['version']['status'] = true;
}

Expand Down
55 changes: 55 additions & 0 deletions app/code/community/UOL/PagSeguro/Model/Boleto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php

/**
* @property Mage_Sales_Model_Order order
*/
class UOL_PagSeguro_Model_Boleto extends Mage_Payment_Model_Method_Abstract
{

protected $_canAuthorize = true;
protected $_canCapture = true;
protected $_canCapturePartial = false;
protected $_canRefund = false;
protected $_canUseCheckout = true;
protected $_canUseForMultishipping = true;
protected $_canUseInternal = true;
protected $_canVoid = true;
protected $_code = 'pagseguro_boleto';
protected $_isGateway = true;
protected $_formBlockType = 'uol_pagseguro/form_boleto';

public function assignData($data)
{
$info = $this->getInfoInstance();

if ($data->getBoletoCpf()) {
$info->setBoletoCpf($data->getBoletoCpf());
}

if ($data->getBoletoHash()) {
$info->setBoletoHash($data->getBoletoHash());
}

Mage::getSingleton('customer/session')
->setData('boletoHash', $info->getBoletoHash())
->setData('boletoDocument', $info->getBoletoCpf());

return $this;
}

public function validate()
{
parent::validate();
$info = $this->getInfoInstance();
return $this;
}

/**
* @return string
*/
public function getOrderPlaceRedirectUrl()
{
return Mage::getUrl('pagseguro/payment/request');
}

}
3 changes: 1 addition & 2 deletions app/code/community/UOL/PagSeguro/Model/Checkout.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ public function toOptionArray()

return array(
array('value' => 'PADRAO', 'label' => $helper->__('Padrão')),
array('value' => 'LIGHTBOX', 'label' => $helper->__('Lightbox')),
array('value' => 'TRANSPARENTE', 'label' => $helper->__('Transparente')),
array('value' => 'LIGHTBOX', 'label' => $helper->__('Lightbox'))
);
}
}
90 changes: 90 additions & 0 deletions app/code/community/UOL/PagSeguro/Model/CreditCard.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<?php

/**
* @property Mage_Sales_Model_Order order
*/
class UOL_PagSeguro_Model_CreditCard extends Mage_Payment_Model_Method_Abstract
{
protected $_canAuthorize = true;
protected $_canCapture = true;
protected $_canCapturePartial = false;
protected $_canRefund = false;
protected $_canUseCheckout = true;
protected $_canUseForMultishipping = true;
protected $_canUseInternal = true;
protected $_canVoid = true;
protected $_code = 'pagseguro_credit_card';
protected $_isGateway = true;
/**
* @var string, path to the template form block
*/
protected $_formBlockType = 'uol_pagseguro/form_creditCard';
/**
* Assign block data
* @param type $data
* @return $this
*/
public function assignData($data)
{
$info = $this->getInfoInstance();

if ($data->getCreditCardCpf()) {
$info->setCreditCardCpf($data->getCreditCardCpf());
}

if ($data->getCreditCardHash()) {
$info->setCreditCardHash($data->getCreditCardHash());
}

if ($data->getCreditCardHolder()) {
$info->setCreditCardHolder($data->getCreditCardHolder());
}

if ($data->getCreditCardHolderBirthdate()) {
$info->setCreditCardHolderBirthdate($data->getCreditCardHolderBirthdate());
}

if ($data->getCreditCardToken()) {
$info->setCreditCardToken($data->getCreditCardToken());
}

if ($data->getCreditCardInstallment()) {
$info->setCreditCardInstallment($data->getCreditCardInstallment());
}

if ($data->getCreditCardInstallmentValue()) {
$info->setCreditCardInstallmentValue($data->getCreditCardInstallmentValue());
}

Mage::getSingleton('customer/session')
->setData('creditCardHash', $info->getCreditCardHash())
->setData('creditCardDocument', $info->getCreditCardCpf())
->setData('creditCardHolder', $info->getCreditCardHolder())
->setData('creditCardBirthdate', $info->getCreditCardHolderBirthdate())
->setData('creditCardToken', $info->getCreditCardToken())
->setData('creditCardInstallment', $info->getCreditCardInstallment())
->setData('creditCardInstallmentValue', $info->getCreditCardInstallmentValue());

return $this;
}

/**
* Validate the payment before request
* @return $this
*/
public function validate()
{
parent::validate();
$info = $this->getInfoInstance();

return $this;
}

/**
* @return string
*/
public function getOrderPlaceRedirectUrl()
{
return Mage::getUrl('pagseguro/payment/request');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,7 @@ private function getMaxInstallment($installments)
*/
public function enabled()
{
return (Mage::getStoreConfig('payment/pagseguro/active') == 1 &&
Mage::getStoreConfig('payment/pagseguro/installments') == 1) ?
return (Mage::getStoreConfig('payment/pagseguro/installments') == 1) ?
true :
false;
}
Expand Down
Loading

0 comments on commit c0d8137

Please sign in to comment.