Support » Plugin: Claudio Sanches - PagSeguro for WooCommerce » Desconto por meio de pagamento – XML checkout transparente Pagseguro

  • Resolved Jefferson

    (@jrtideias)


    Olá pessoal,
    Estou tentando adicionar um desconto de acordo com o meio de pagamento, no caso desconto para quem pagar via boleto.

    Vi em outro tópico sobre o filtro woocommerce_pagseguro_checkout_xml, utilizei ele para tentar manipular o XML.
    Porém parece que ele nem entra na minha função. Já tentei dar um wp_die e exit dentro da função e nada acontece, tentei imprimir alguma coisa e também não funcionou.

    add_filter( 'woocommerce_pagseguro_checkout_xml', 'filter_woocommerce_pagseguro_checkout_xml', 10, 2 );
    
        function filter_woocommerce_pagseguro_checkout_xml( $xml, $order ) {
    
          $newxml = simplexml_load_string($xml);
    
          $paymentMethodConfigs = $newxml->addChild( 'paymentMethodConfigs' );
          $paymentMethodConfig = $paymentMethodConfigs->addChild( 'paymentMethodConfig' );
          $paymentMethod = $paymentMethodConfig->addChild( 'paymentMethod' );
          $group = $paymentMethod->addChild( 'group', 'BOLETO' );
    
          $configs = $paymentMethodConfig->addChild( 'configs' );
          $config = $configs->addChild( 'config'  );
          $config->addChild( 'key', 'DISCOUNT_PERCENT'  );
          $config->addChild( 'value', '10.00'  );
    
          return $newxml->asXML();
        };

    Se alguém ja utilizou esse filtro e puder ajudar, por favor.

    Obrigado

Viewing 6 replies - 1 through 6 (of 6 total)
  • Plugin Author Claudio Sanches

    (@claudiosanches)

    No caso esse filtro já passa um objeto SimpleXMLElement e por isso despensa utilizar simplexml_load_string(), sem contar que usar $newxml->asXML() vai causar erros no plugin que vai tentar fazer o mesmo em uma string, sendo que esperava ter de volta o objeto SimpleXMLElement.
    Fazendo isso já deve funcionar, se você esta usando a estrutura correta do XML do PagSeguro, é claro.

    Jefferson, conseguiu fazer funcionar? Utilizei seu código e as dicas do Claudio mas ainda não consegui.

    Thread Starter Jefferson

    (@jrtideias)

    Não consegui Diogo. Acredito que a estrutura do XML não está de acordo com o PagSeguro, só pode ser isso.
    Como é um projeto pessoal acabei removendo a opção de desconto para pagamento no boleto, em breve pretendo colocar outro serviço de pagamento.

    Se conseguir resolver não deixe de postar aqui, pode ser util para outras pessoas.

    Abs

    Boa tarde.
    Como faço para inserir 5% de desconto no pagamento via boleto com Pagseguro para Woocommerce? Existe alguma solução para isso?

    Abs.

    Encontrei uma solução usando o extraAmount

    add_filter( 'woocommerce_pagseguro_payment_xml', function( $xml, $order ) {
    
    	$newxml = $xml;
    
    	if($newxml->method == 'boleto'){
    		$total = $order->total;
    		$new_total = $total * 0.1;
    		$new_total = '-'.round($new_total, 2);
    		$new_total = number_format($new_total, 2);
    
    		$newxml->addChild( 'extraAmount', $new_total );
    	}
    
    	return $newxml;
    }, 10, 2 );

    Obrigado marcelo2605, vou testar sua solução!

Viewing 6 replies - 1 through 6 (of 6 total)
  • The topic ‘Desconto por meio de pagamento – XML checkout transparente Pagseguro’ is closed to new replies.