• Cadastro
  • Fóruns
  • Manual
  • Projetos
  • Seminário
  • Tradução
  • Tutoriais
  • Dicas
Início

Itens ativos

  • Gerenciar sites na mesma instalação
  • Sumiu o link para módulos e permissão
  • Flashvideo
  • Node, tradução ideal.
  • Tradução
  • Indexação
  • Modulo para site de Escola, que separa um conteudo para cada aluno....
  • Infinitas dúvidas sobre breadcrumb...
  • Search and replace
  • como descomprimir?
mais

Pesquisa

Google
Web Drupal Brasil

Login do usuário

  • Criar nova conta
  • Solicitar uma nova senha

Parceiros

Assine o RSS do Drupal-BR

RSS dos itens mais ativos

RSS do conteúdo

RSS dos comentários

Início » Fóruns » Suporte » Módulos

Modificação do uc_boleto para pagseguro, como enviar as variaveis de produto?

Opa meus amigos...

Eu baixei o código do módulo de pagamento por boletos feito pelo diego, e estou alterando o código para funcionar junto com o pagseguro (www.pagseguro.com.br). Estou com um problema para enviar as seguintes variaveis:

item_id_x
item_descr_x
item_quant_x
item_valor_x

(este "x" é substituido por um número identificador)

Bom, navegando pela documentação da API do ubercart, eu cheguei numa função que parece que me fornece tudo o que eu quero: http://www.ubercart.org/docs/api/hook_cart_display

O problema agora é utilizar a função na parte que eu quero. Vejam a parte do código que eu alterei:

  $data = array(

        'email_cobranca'   => variable_get('uc_boleto2_email_pagseguro', ''),
        //'refTran'  => variable_get('uc_boleto2_convenio', '').$valor_reftran,
        //'dtVenc'   => $vencimento,
        'tipo'     => 'CP',
        'moeda'     => 'BRL',
        'item_valor_1'    => $valor_total, // limite de 500, ou seja, 5,00 reais
    'cliente_nome'     => $nome_cliente,
        'cliente_end' => substr($order->delivery_street1, 0, 64),
    'cliente_cidade'   => substr($order->delivery_city, 0, 64),
    'cliente_uf'       => uc_get_zone_code($order->delivery_zone),
    'cliente_cep'      => substr($order->delivery_postal_code, 0, 16),

// codigo adicionado por mim

          hook_cart_display($item);
                  foreach($item) {
                  'item_id_' . $item->nid => $item->nid;
                  'item_descr_' . $item->nid => $item->title;
                  'item_quant_' . $item->nid => $item->qty;
                  'item_valor_' . $item->nid => $item->#value;
                  };


// fim do codigo adicionado por mim

        'cart_order_id' => $order->order_id,
        'urlRetorno'    => url('cart/boleto2/complete/'. uc_cart_get_id(), NULL, NULL, FALSE),
        //'tpPagamento'         => '2',
        //'msgLoja'             =>utf8_decode($msg_loja),
  );

Da forma que escrevi, a página de carrinho me retorna o seguinte erro:

Parse error: syntax error, unexpected ';', expecting ')' in /home/webdesigner/www/natalimports/sites/all/modules/uc_boleto2/uc_boleto2.module on line 293

O lance é que eu sei o que está causando o erro, mas não sei escrever este trecho de código de outra forma, que faça ele funcionar =\

‹ Como adicionar eventos a campos de formulários? Exibir campos CCK apenas para usuários com determinados papéis, ›
Enviado por marcus_vbp em sex, 27/06/2008 - 10:27.
  • Módulos
  • Por favor, se logue ou se registre para poder enviar comentários
  • 525 leituras

Ei gente, isso é importante

Ei gente, isso é importante para mim, e eu realmente estou pesquisando e não estou encontrando uma resposta.

--
http://www.marcusvbp.com.br
http://www.nh18.com.br
http://inofensivo.blog.br

Enviado por marcus_vbp em seg, 30/06/2008 - 11:31.
  • Por favor, se logue ou se registre para poder enviar comentários

Linha....

Onde é a linha 293?

Paulino Michelazzo
http://www.michelazzo.com.br
http://www.michelazzo.blog.br

Enviado por pmichelazzo em seg, 30/06/2008 - 16:36.
  • Por favor, se logue ou se registre para poder enviar comentários

Paulino, é a primeira linha

Paulino, é a primeira linha que eu adicionei (hook_cart_display($item);). como eu disse, sei onde estar o erro, o problema é que eu nao consigo fazer de outra forma =\

Obrigado pela resposta.
--
http://www.marcusvbp.com.br
http://www.nh18.com.br
http://inofensivo.blog.br

Enviado por marcus_vbp em seg, 30/06/2008 - 18:15.
  • Por favor, se logue ou se registre para poder enviar comentários

Tente

Não executei o código, somente o li. Tente alterar a vírgula no final de 'cliente_cep' => substr($order->delivery_postal_code, 0, 16), para ponto-e-vírgula.

Abs

Paulino Michelazzo
http://www.michelazzo.com.br
http://www.michelazzo.blog.br

Enviado por pmichelazzo em seg, 30/06/2008 - 22:28.
  • Por favor, se logue ou se registre para poder enviar comentários

Marcus, eu não tive como

Marcus, eu não tive como testar, mas olhando por cima notei alguns possiveis problemas, o primeiro é esse teu foreach que esta errado, ele tem que ser no formato

foreach (expressao_array as $valor)
instrucoes
foreach (expressao_array as $chave => $valor)
instrucoes

Mas passando por ai, ainda tem o problema de todo aquele teu código adicionado estar dentro do array, o que eu não entendi é quantos valores de cada item você pretende enviar, sei la, a idéia não ficou bem clara pra mim. Não teria como você utilizar a hook_cart_display($item) fora do array, pegar os valores e ai sim alimentar os campos do array?

Eu teria que ver com calma a função no ubercart, só vi rapidamente, então é mais palpite do que uma solução, infelizmente to bem sem tempo essa semana, só no meio de julho é que tudo acalma pra mim, mas no que eu conseguir te ajudar vou postando ai.

abs

------------------------
Associação Kung Fu Tigre - http://www.akft.com.br

Enviado por diegohermes@dru... em ter, 01/07/2008 - 02:29.
  • Por favor, se logue ou se registre para poder enviar comentários

Diego, obrigado pela

Diego, obrigado pela resposta.

Vou dar uma olhada, não sabia que o foreach estava errado.

A idéia é passar os produtos a quantidade, o id e o valor do produto para o boleto do pagseguro.

Segundo a documentação fornecida pelo próprio pagseguro, eu tenho que passar as váriaveis assim:

item_id_x
item_descr_x
item_quant_x
item_valor_x

onde este "x" no final de cada variavel é um numero... Por exemplo se tivesse dois produtos no carrinho, deveria ser passado algo assim:

item_id_1 = '1'
item_descr_1 = 'TV DE PLASMA'
item_quant_1 = '1'
item_valor_1 = '3.000'

item_id_2 = '2'
item_descr_2 = 'playstation'
item_quant_2 = '1'
item_valor_2 = '500'

--
http://www.marcusvbp.com.br
http://www.nh18.com.br
http://inofensivo.blog.br

Enviado por marcus_vbp em ter, 01/07/2008 - 10:21.
  • Por favor, se logue ou se registre para poder enviar comentários

Pessoas, é o seguinte, fiz

Pessoas, é o seguinte, fiz uma solução alternativa devido a um estouro no prazo... está funcionando mas tenho um problema com acentos... qualquer palavra acentuada que é enviada à página do pagseguro fica com a letr acentuada trocada. Isso é um claro problema de incompatibilidade entre charsets... Alguém sabe como faço para resolver isso?

--
http://www.marcusvbp.com.br
http://www.nh18.com.br
http://inofensivo.blog.br

Enviado por marcus_vbp em qui, 03/07/2008 - 15:26.
  • Por favor, se logue ou se registre para poder enviar comentários

Ei gente, alguma idéia de

Ei gente, alguma idéia de como resolvo o problema na acentuação?

--
http://www.marcusvbp.com.br
http://www.nh18.com.br
http://inofensivo.blog.br

Enviado por marcus_vbp em seg, 07/07/2008 - 12:53.
  • Por favor, se logue ou se registre para poder enviar comentários

Po cara... akele problema eh

Po cara... akele problema eh de syntax php... pelo que reparei, vc esta fazendo um foreach dentro da declaração de um array... viagem total...

$data = array(
  'email_cobranca'   => variable_get('uc_boleto2_email_pagseguro', ''),
  //...
);
hook_cart_display($item);
foreach(ALGUMA_COISA as $item) {
  $data['item_id_' . $item->nid] = $item->nid;
  //...
};

Assim seria a implementação correta...

flw!
--
Pedro Faria de Miranda Pinto
http://www.eusouopedro.com
http://www.phpavancado.net
Bate Papo sobre Drupal? irc://irc.freenode.net/drupal-br

Enviado por pedrofaria em seg, 07/07/2008 - 14:41.
  • Por favor, se logue ou se registre para poder enviar comentários

Mais uma vez, obrigado

Mais uma vez, obrigado Pedro!

Vou testar e posto o resultado aqui.

--
http://www.marcusvbp.com.br
http://www.nh18.com.br
http://inofensivo.blog.br

Enviado por marcus_vbp em seg, 07/07/2008 - 17:53.
  • Por favor, se logue ou se registre para poder enviar comentários

Valeu pedro, consegui fazer

Valeu pedro, consegui fazer usando o código que você me forneceu. O resultado final foi:

      $item = uc_cart_get_contents();
        $i = 1;
        foreach($item as $item) {
          $data['item_id_' . $i] = $item->nid;
          $data['item_descr_' . $i] = $item->title;
          $data['item_quant_' . $i] = $item->qty;
          $data['item_valor_' . $i] = ($item->price)*100;
          $i++;
        };

--
http://www.marcusvbp.com.br
http://www.nh18.com.br
http://inofensivo.blog.br

Enviado por marcus_vbp em seg, 07/07/2008 - 22:41.
  • Por favor, se logue ou se registre para poder enviar comentários

Marcus, dando uma rápida

Marcus,

dando uma rápida olhada neste teu código, sugiro que tu mude para:

// Dados gerais do pedido
$data = array(
  'cart_order_id'     => $order->order_id,
  'cliente_nome'      => $nome_cliente,
  'cliente_end'       => substr($order->delivery_street1, 0, 64),
  'cliente_cidade'    => substr($order->delivery_city, 0, 64),
  'cliente_uf'        => uc_get_zone_code($order->delivery_zone),
  'cliente_cep'       => substr($order->delivery_postal_code, 0, 16),
  'email_cobranca'    => variable_get('uc_boleto2_email_pagseguro', ''),
  'moeda'             => 'BRL',
  'tipo'              => 'CP',
  'urlRetorno'        => url('cart/boleto2/complete/'. uc_cart_get_id(), NULL, NULL, FALSE),

//  'dtVenc'            => $vencimento,
//  'msgLoja'           => utf8_decode($msg_loja),
//  'refTran'           => variable_get('uc_boleto2_convenio', '') . $valor_reftran,
//  'tpPagamento'       => '2',
);

// Dados de cada um dos produtos
foreach(uc_cart_get_contents() as $item) {
  $data['item_id_' . $item->nid]    = $item->nid;
  $data['item_descr_' . $item->nid] = $item->title;
  $data['item_quant_' . $item->nid] = $item->qty;
  $data['item_valor_' . $item->nid] = $item->value;
};

Eu não li os comentários, então não sei sequer se alguém já respondeu... :P

abraço,

massa

PS: se tu estiver usando Drupal 6, substitua a função substr() por drupal_substr()

Enviado por brmassa@drupal.org em ter, 08/07/2008 - 13:35.
  • Por favor, se logue ou se registre para poder enviar comentários

Fala Massa! Obrigrado por

Fala Massa!

Obrigrado por responder. eu resolvi meu problema com esta listagem já... inclusive postei aqui como comentário. Meus problemas agora sao outros:

http://drupal-br.org/suporte/e-commerce-com-drupal/modulo-de-pagamentos-...

--
http://www.marcusvbp.com.br
http://www.nh18.com.br
http://inofensivo.blog.br

Enviado por marcus_vbp em ter, 08/07/2008 - 15:38.
  • Por favor, se logue ou se registre para poder enviar comentários
Designimage

Este site é feito, orgulhosamente, com Drupal.