Suporte » Plugins » WooCommerce – Pagar com 2 métodos de pagamento

  • Resolvido Kezily

    (@kezily)


    Olá,

    Estou com uma dificuldade há alguns dias em um projeto de um cliente e talvez alguém aqui possa me ajudar:

    – Nessa loja virtual o revendedor pode informar no checkout quanto de dinheiro ele recebeu do cliente dele, e assim o valor restante será pago com cartão de crédito.

    – Eu fiz de uma forma que o valor informado pelo revendedor em dinheiro gera um desconto (add_fee()), então o restante pode ser pago com cartão (https://prnt.sc/s98jqc)

    – O problema é que no painel (na lista de pedidos e nas Análises) eu preciso que seja considerado o valor total do pedido (sem “descontar” o desconto). Ou seja, se o pedido foi de R$100 e foram R$40 em dinheiro e R$60 em cartão, no painel deve-se considerar o valor de R$100, porém, da forma que fiz ele considera só os R$60.

    Há uma forma do cliente poder escolher duas formas de pagamento no checkout?

    Ou ainda, há uma forma de fazer com que no painel o pedido considere o valor total do pedido sem o desconto gerado pelo add_fee()?

    Fico no aguardo de caso alguém consiga me auxiliar com isso.

    Obrigada.

Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • Moderador Mario Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Olá, Kezily.

    É um caso de uso bem interessante esse…

    Para manter o que você fez, teria que ir no arquivo woocommerce/includes/admin/reports/class-wc-admin-report.php e procurar pelos filtros correspondentes. Por exemplo, o filtro woocommerce_reports_get_order_report_data.

    Mas podem ter outros problemas, como total pago por clientes, valores diferentes em integrações/exportações, afinal no WooCommerce é um desconto, mas no restante do negócio é um pagamento em dinheiro.

    Então eu vejo duas formas:

    1 – Alterar apenas o pago pelo gateway
    2 – Tentar usar duas formas de pagamento

    A 1 é mais fácil: procure por filtros no gateway que está usando.
    Qual plugin que é? Ou criou uma integração você mesmo?

    A 2 é mais complicada: na verdade, teria que mudar bastante coisa, pois os pedidos não dão suporte a isso naturalmente.

    O que acha? A 1 atende?

    Se sim, podemos usar os metadados do carrinho e do pedido para armazenar o valor do “pago em dinheiro” e os filtros:

    woocommerce_cart_needs_payment
    woocommerce_order_needs_payment

    Para filtrar o resultado de needs_payment. Assim garantimos que ele está considerando o total do pedido menos o pago em dinheiro.

    Para validar tudo, recomendaria a ação woocommerce_after_checkout_validation. Por exemplo, podemos checar que o total é maior ou igual ao valor informado em dinheiro.

    E por fim, caímos no método process_order_payment do checkout (se ainda precisar de pagamento). Nele não temos filtros antes do dado passar para o gateway, por isso, teria que ver se tem como alterar o “total cobrado” dentro do plugin.

    Provavelmente sim, procure por process_payment lá.

    Espero ter ajudado.

    Acabei descartando o desconto pelo add_fee() e utilizei o woocommerce_calculated_total para enviar ao gateway de pagamento apenas o valor a ser pago no momento (descontando o valor em dinheiro).

    Desta forma, após a aprovação do pagamento, no painel é mostrado o valor inteiro e não com desconto.

    De qualquer forma, obrigada pela ajuda @mariovalney

Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • Você deve estar conectado para responder a este tópico.