Ir para conteúdo
Fórum Script Brasil
  • 0

Interface módulo PagSeguro & OSCommerce


Luiz Ito

Pergunta

Olá, estou fazendo a interface do módulo de PagSeguro com envio PAC/Sedex e preciso de ajuda no código PHP.

O programa pagseguro.php executa a função adicionar array

include_once('pagseguro/pgs.php');

foreach ($order->products as $product) {

$pgs->adicionar (array (

'id' => (string) $product['id'],

'descricao' => $product['name'] . ' ' . $product['model'],

'quantidade' => $product['qty'],

'valor' => $product['price'],

'peso' => (int) number_format($product['weight'], 2, '', '') ,

'frete' => (int) number_format($order->info['shipping_cost'], 2, '','' ) ,

));

e a função adicionar array está no include pgs.php

function adicionar($item) {

if ('array' !== gettype($item))

return $this->error("Item precisa ser um array.");

if(isset($item[0]) && 'array' === gettype($item[0])){

foreach ($item as $elm) {

if('array' === gettype($elm)) {

$this->adicionar($elm);

}

}

return $this;

}

$tipos=array(

"id" => array(1,"string", '@\w@' ),

"quantidade" => array(1,"string,integer", '@^\d+$@' ),

"valor" => array(1,"double,string,integer", '@^\d*\.?\d+$@'),

"descricao" => array(1,"string", '@\w@' ),

"frete" => array(0,"string,integer", '@^\d+$@' ),

"peso" => array(0,"string,integer", '@^\d+$@' ),

);

foreach($tipos as $elm=>$valor){

list($obrigatorio,$validos,$regexp)=$valor;

if(isset($item[$elm])){

if(strpos($validos,gettype($item[$elm])) === false ||

(gettype($item[$elm]) === "string" && !preg_match($regexp,$item[$elm]))){

return $this->error("Valor invalido passado para $elm.");

}

}elseif($obrigatorio){

return $this->error("O item adicionado precisa conter $elm");

}

}

$this->_itens[] = $item;

return $this;

}

O valor do frete já está calculado no módulo dos Correios e está correto.

O problema é o valor do frete adicionado n vezes ao total do pedido porque tem o foreach para cada item de produto adquirido.

Preciso que o valor do frete

'frete' => (int) number_format($order->info['shipping_cost'], 2, '','' ) ,

seja adicionado apenas uma única vez no pedido.

Como fazer a codificação correta? Qual o array que contem o valor do frete após a execução do adicionar array? $pgs ?

Grato pela ajuda.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...