pagseguro / pagseguro-sdk-php

Biblioteca de integração em PHP
298 stars 149 forks source link

Aplicar desconto. #187

Open Gabrielmoraesp opened 5 years ago

Gabrielmoraesp commented 5 years ago

Não consigo aplicar o desconto via checkout transparente.

O valor da compra 635,99 com frete. Quando tento aplicar 10% de desconto, retorna a mensagem dizendo que o valor da parcela é inválido. Valor da compra: R$ 635,99 (com frete) Desconto: 10% Valor total: R$ 572,39 Parcelas: 2

"<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>53041installment value invalid value: 286.20"

Quando o cliente digita o cartão, eu passo o valor final para o pagseguro via javascript(PagSeguroDirectPayment.getPaymentMethods e PagSeguroDirectPayment.getInstallments), já com o desconto.

O PagSeguro retorna as parcelas corretamente, com base no valor final(R$ 572,39).

Estou utilizando os métodos abaixo.

$creditCard->addPaymentMethod()->withParameters( \PagSeguro\Enum\PaymentMethod\Group::CREDIT_CARD, \PagSeguro\Enum\PaymentMethod\Config\Keys::DISCOUNT_PERCENT, 10 // (float) Percent );

O que devo fazer para conseguir aplicar o desconto?

maxdmo commented 5 years ago

Fala galera, alguém pra ajudar nessa issue?

Eu também estou com o mesmo problema, estou usando o Laravel, já tentei disparar pelo Guzzle usando as referências de campos mas não tive sucesso e olhando o $data criado pelo exemplo em createPayment.php ele parece não está passando as opções de desconto tbm.

maxdmo commented 5 years ago

Boa tarde.

Para quem estiver com o mesmo Problema, dentro do arquivo PaymentMethod.php

tem a seguinte verificação.

"if ($request->paymentMethodLenght() > 0) { ..."

Essa verificação mesmo tendo métodos de pagamento setados e já atribuidos nesta variável :

$paymentMethod = $request->getPaymentMethod();, mas essa verificação retorna 0 do mesmo modo.

Entâo eu solucionei o problema fazendo um count na variável setada desta forma:

"if (count($paymentMethod) > 0) {..."

Vou tentar fazer uma PR mais tarde.

Espero que ajude.

Att.