opencart-extension / PagSeguro-Checkout-Transparente

Módulo PagSeguro Checkout Transparente para OpenCart
GNU General Public License v2.0
26 stars 17 forks source link

Valor das parcelas incorreto #14

Closed marceloamp2 closed 3 years ago

marceloamp2 commented 6 years ago

Olá,

No total de compras com o frete está dando por exemplo R$ 251,00 e nas parcelas do cartão de crédito está 3 X 88,72 e com isso ocorre o erro de valor das parcelas incorreto.

Marcelo

vmfadvancedwind commented 6 years ago

Pra adicionar outro detalhe, ele não está considerando valores de impostos no campo itemAmount1 e isso faz com que installmentValue nunca fique certo e o pagseguro sempre rejeite. Pode ser que o seu caso seja derivado do mesmo problema, se tiver configurações de impostos.

EDIT: Aliás, mesmo na forma de pagamento boleto isso tá errado. Ele manda os preços sem o valor do imposto lá também.

Um exemplo de print_r($data) na variável contendo os dados enviados pro pagseguro

Array ( [email] => (removido) [token] => (removido) [paymentMode] => default [paymentMethod] => creditCard [currency] => BRL [notificationURL] => (removido) [reference] => Pedido #16 [itemId1] => 50 [itemDescription1] => Micofenolato De Mofetila | 500mg - 50 comprimidos [itemAmount1] => 289.00 ||||||||AQUI NÃO ESTÁ CONSIDERANDO IMPOSTOS||||||| [itemQuantity1] => 2 [extraAmount] => 0.00 [senderName] => (removido) [senderCPF] => (removido) [senderAreaCode] => 12 [senderPhone] => 1212121 [senderEmail] => (removido)@sandbox.pagseguro.com.br [senderHash] => (removido) [shippingAddressStreet] => Rua Teste [shippingAddressNumber] => 121 [shippingAddressDistrict] => Teste [shippingAddressPostalCode] => (removido) [shippingAddressCity] => Barueri [shippingAddressState] => SP [shippingAddressCountry] => BRA [shippingType] => 2 [shippingCost] => 17.20 [creditCardToken] => 9aad43f522ed4a20b9a66a5d63e887e2 [installmentQuantity] => 1 [installmentValue] => 699.24 |||||ARQUI ESTÁ CERTO, COM IMPOSTOS [noInterestInstallmentQuantity] => 18 [creditCardHolderName] => (removido) [creditCardHolderCPF] => (removido) [creditCardHolderBirthDate] => 27/11/2017 [creditCardHolderAreaCode] => 12 [creditCardHolderPhone] => 1212121 [billingAddressStreet] => Rua Teste [billingAddressNumber] => 121 [billingAddressDistrict] => Teste [billingAddressPostalCode] => (removido) [billingAddressCity] => Barueri [billingAddressState] => SP [billingAddressCountry] => BRA )

Erro retornado do pagseguro

{"error":{"code":"53041","message":"installment value invalid value: 699.24"}}

marceloamp2 commented 6 years ago

No meu caso a soma das parcelas não está correta, nem chega a enviar. Se envio ocorre o mesmo erro.

valdeir2000 commented 6 years ago

@marceloamp2 e @vmfadvancedwind acabei de lançar uma modificação.

Segue alterações que fiz: https://github.com/opencart-extension/PagSeguro-Checkout-Transparente/commit/a38de46534359225d923f994ef1069a9dcc3666b

https://github.com/opencart-extension/PagSeguro-Checkout-Transparente/commit/b98385386710ab4ab45988da20bf626426032637

Se possível, deem um feedback.

Download para OC 3.x https://github.com/opencart-extension/PagSeguro-Checkout-Transparente/releases/tag/1.4.1

marceloamp2 commented 6 years ago

Versão Opencart: 3.0.2.0 Eu consegui resolver o problema adicionando o = na linha abaixo no arquivo pagseguro_cartao.twig

151 {% if max_parcelas_sem_juros|length >= 1 %}

Após isso consegui realizar o pagamento por cartão tanto em sandbox quanto em produção. Outro problema que ocorreu é que o pedido não está aparecendo no histórico de pedidos do opencart porque está sendo marcado como "Pedido abandonado" sendo necessário escolher esse filtro para ele aparecer.

vmfadvancedwind commented 6 years ago

@valdeir2000 Ainda não resolve o problema completamente. Com a sua alteração, ele continua dando o mesmo erro de antes, mas agora é por causa que ExtraAmount já tem o frete, e depois ele soma com ShippingCost e aí novamente o valor das parcelas não bate com o valor do produto.

Uma correção temporária que confirma isso é colocar

$data['shippingCost'] = "0.00";

Antes de enviar. Com essa mudança, ele funciona. Embora imagino que o mais correto seria o frete vir separado do extra amount

andressacb commented 6 years ago

Oi pessoal, estou com problema nessa parte também. Ele fecha o pedido com o valor correto, mas quando vai para o pagseguro vai com o valor errado. Alterei essa linha e fechou com o valor correto. $data["extraAmount"] = $order_info["total"] - $this->cart->getSubTotal(); para $data["extraAmount"] = 0;

mas ai se coloco um cupom de desconto, vai errado para o pagseguro.

valdeir2000 commented 6 years ago

@andressacb corrigir esse problema.

No OC 3.x, quando uso um cupom de desconto com frete grátis, ele acaba aparecendo no totals como se houvesse uma cobrança. Confuso.

Esse problema resolvi dessa forma.

/* Tipo e Valor do Frete */
if ($this->cart->hasShipping() && !$shipping_free){
    $data['shippingType'] = $this->model_extension_payment_pagseguro->getShippingType();

    $data['shippingCost'] = number_format($this->session->data['shipping_method']['cost'], 2, '.', '');

        $data["extraAmount"] -= $this->session->data['shipping_method']['cost']; //Correção
}

https://github.com/opencart-extension/PagSeguro-Checkout-Transparente/releases/tag/1.4.2

vmfadvancedwind commented 6 years ago

@valdeir2000 Precisa colocar number_format nesse extraAmount depois da correção ou pode dar problema do formato do pagseguro. Dá pra simplesmente mover onde estava algumas linhas acima $data['extraAmount'] = number_format($data['extraAmount'], 2, '.', ''); Pra depois dessa correção

3-dimensional commented 6 years ago

Alguma solução definitiva pra esse problema já existe?