Forum Replies Created

Viewing 6 replies - 1 through 6 (of 6 total)
  • pedrogodoy

    (@pedrogodoy)

    a pagar.me é uma empresa de Getway que possui sistema de API. O desenvolvedor do plugin, por livre e espontânea vontade criou uma ferramenta FREE e Open Source para agilizar a vida de todos. Não confunda as coisas ok.

    Magento é outra plataforma, aqui estamos falando de WordPress.

    É preciso analisar os códigos que estão no plugin com a documentação da pagar.me
    https://docs.pagar.me/reference

    Ou contratar um dev que possa fazer isso pra você.

    Por aqui o plugin funciona perfeitamente. Criei 3 lojas recentemente e todas estão rodando sem erro.

    abs.

    pedrogodoy

    (@pedrogodoy)

    Amigo, não trabalho na pagar.me ok. sou apenas um dev.

    O seu problema está muito genérico, podem ser muitas coisas.

    O que te aconselho a fazer é deixar seu site mais rápido. Me parece que o usuário fica esperando muito tempo processar o checkout, e acaba saindo da página.

    Uma opção é contratar uma hospedagem mais rápida e a outra é otimizar o Woo. Nesse link mostra como:
    https://gist.github.com/gregrickaby/2846416

    O Woo por padrão carrega uma serie de scripts desnecessários que pode ser removidos sem afetar sua loja, porém existem outros que ao serem removidos vão dar pau. Exercicio de paciência ai pra ajustar tudo.

    Se a sua loja já está otimizada, você precisa detalhar melhor seu problema ok.

    Espero ter ajudado. abs.

    Thread Starter pedrogodoy

    (@pedrogodoy)

    “Essa volição vai entrar apenas após o usuário digitar os dados do cartão, correto?”
    Na verdade não, essa validação ocorre no checkout antes do popup da pagar.me.

    Uma outra solução é validar pelo JS. É mais rápido e o plugin já utiliza essa validação. Eu comecei a esboçar uma alteração no JS e deu erro, fui para o PHP e funcionou de cara, portanto parei por ai. Quando tiver oportunidade corrijo no JS e posto aqui.

    *ao alterar o plugin, coloque nos comentários no começo da página uma referência à sua alteração. abs.

    Thread Starter pedrogodoy

    (@pedrogodoy)

    Consegui resolver amigo!

    Não é uma solução permanente, portanto deve ser aprimorada de acordo com a sua necessidade ok. Segue:

    Arquivo do Plugin:
    – wp-content/plugins/woocommerce-pagarme/includes/class-wc-pagarme-api.php
    – vá ate a LINHA 663
    – o que precisa ser feito é adicionar uma condição para validar os campos de CEP e TELEFONE.
    – usei a validação abaixo:

    if ( ! empty( $_POST['pagarme_checkout_token'] ) )

    e substitui:

    if ( ! empty( $_POST['pagarme_checkout_token'] ) ) {
    				$token = sanitize_text_field( wp_unslash( $_POST['pagarme_checkout_token'] ) );
    				$data  = $this->generate_checkout_data( $order, $token );
    
    				// Cancel the payment is irregular.
    				if ( isset( $data['error'] ) ) {
    					$this->cancel_transaction( $order, $token );
    					$order->update_status( 'failed', $data['error'] );
    
    					return array(
    						'result'   => 'success',
    						'redirect' => $this->gateway->get_return_url( $order ),
    					);
    				}
    
    				$transaction = $this->do_transaction( $order, $data, $token );
    			} else {
    				
    				$transaction = array( 'errors' => array( array( 'message' => __( 'Missing credit card data, please review your data and try again or contact us for assistance.', 'woocommerce-pagarme' ) ) ) );
    				
    			}

    por:

    if ( ! empty( $_POST['pagarme_checkout_token'] ) ) {
    				$token = sanitize_text_field( wp_unslash( $_POST['pagarme_checkout_token'] ) );
    				$data  = $this->generate_checkout_data( $order, $token );
    
    				// Cancel the payment is irregular.
    				if ( isset( $data['error'] ) ) {
    					$this->cancel_transaction( $order, $token );
    					$order->update_status( 'failed', $data['error'] );
    
    					return array(
    						'result'   => 'success',
    						'redirect' => $this->gateway->get_return_url( $order ),
    					);
    				}
    
    				$transaction = $this->do_transaction( $order, $data, $token );
    			} else {
    				
    				//LINHA 663-672 ADICINAS 03/01/18 - POR PEDRO GODOY
    				$cont_phone = strlen( $_POST['billing_phone'] );
    				$cont_cep = strlen( $_POST['billing_postcode'] );
    								
    				if( $cont_phone < 15 ) :					
    					$transaction = array( 'errors' => array( array( 'message' => __( 'Preencha corretamente o <strong>Telefone</strong>.', 'woocommerce-pagarme' ) ) ) );
    					
    				elseif( $cont_cep < 9 ) :					
    					$transaction = array( 'errors' => array( array( 'message' => __( 'Preencha corretamente o <strong>CEP</strong>.', 'woocommerce-pagarme' ) ) ) );
    					
    				else :					
    					$transaction = array( 'errors' => array( array( 'message' => __( 'Missing credit card data, please review your data and try again or contact us for assistance.', 'woocommerce-pagarme' ) ) ) );
    					
    				endif;				
    				
    			}

    Fiz uma validação simples por quantidade de caracteres:

    $cont_phone = strlen( $_POST['billing_phone'] );
    if( $cont_phone < 15 ) 

    você pode fazer o ajuste que achar melhor. No meu caso, apenas essa validação funcionou. O cliente parou de receber pedidos com erro.

    Espero que possa ter ajudado.

    abs.,

    Dentro do seu arquivo functions.php você pode colocar um script assim:

    function jurosSimples($valor) {

    $pagarme = get_option( ‘woocommerce_pagarme-credit-card_settings’ );
    $parcelas = $pagarme[‘max_installment’];
    $taxa = $pagarme[‘interest_rate’];

    $taxa = $taxa / 100;
    $m = $valor * (1 + $taxa * $parcelas);
    $valorParcela = number_format($m / $parcelas, 2, “,”, “.”);
    return $valorParcela;
    }

    e no seu Thema ( woocommerce/single-product.php ), você coloca algo parecido com isso aqui:

    <?php
    global $woocommerce;
    $currency = get_woocommerce_currency_symbol();
    $price = get_post_meta( get_the_ID(), ‘_regular_price’, true);
    $sale = get_post_meta( get_the_ID(), ‘_sale_price’, true);
    $pagarme = get_option( ‘woocommerce_pagarme-credit-card_settings’ );
    ?>

    <p class=”parcelamento”>
    ou em <?php echo $pagarme[‘max_installment’]; ?>x de <?php echo $currency; ?><?php echo(($sale) ? jurosSimples($sale) : jurosSimples($price)); ?>
    </p>

    Acredito que no localhost não vai funcionar. Cria um cupom de desconto de 100% e testa a rotina de compra. Depois estando tudo certo, coloca online, faz o HTTPS funcionar primeiro, e testa a compra utilizando a API de teste disponibilizada pelo Pagar.me. Este seria o processo mais recomendado.

Viewing 6 replies - 1 through 6 (of 6 total)