Ir para conteúdo

Featured Replies

Postado

Onde está o link para download do WHMCS.RET.rar ?


Postado

@afixar

Onde esta o link para download?

 

 

Caro Oliver,

 

Estou criando uma versão que irá fazer o controle da entrada dos boletos, total de repasse ao banco entre outros.

Como ninguém se ofereceu para ajudar e muito menos contribuir (R$), optei por hora não distribuir o produto.  

 

Lembrando que, ao obter o código do Alexandre, além de contribuir com a programação, paguei por reconhecer o tempo e o esforço. 

Então provavelmente a nova versão será vendida por um valor acessível.

 

Agradeço a compreensão de todos,

Marcus Vinícius Nash 

 

 

 

 

 



Postado

Eu só precisava de um script que enviasse, lesse o arquivo de retorno e marcasse no banco de dados os cliente que pagaram como pagos

Juntei parte de código dali, daqui, mudei algumas coisas e consegui

Segue o script

 

envia_arquivo.html

 

form method="post" action="importa_retorno.php" enctype="multipart/form-data"
labelArquivo/label
input type="file" name="arquivo" /
input type="submit" value="Enviar" /
/form

 

 

##########config.php#########

<?php
$host = "localhost";
$user = "root";
$pass = "";
 
$base = "teste";
 
#####################  Conexão com o banco de dados  ################################
$conexao = mysql_connect($host, $user, $pass);
$banco = mysql_select_db($base) or die ("Não foi possível selecionar o Banco de dados.");
?>

#####importa_retorno.php##########

 

 

<?php
include_once("config.php");
function formataData($data) {
      if($data=="")
           return "";
        //formata a data par ao padrão americano MM/DD/AA
        $data =  substr($data, 2, 2) . "/". substr($data, 0, 2) . "/" . substr($data, 4, 4);

        //formata a data, a partir do padrão americano, para o padrão DD/MM/AAAA
        return date("d/m/Y", strtotime($data));

    }
// Pasta onde o arquivo vai ser salvo
$_UP['pasta'] = 'uploads/';

// Tamanho máximo do arquivo (em Bytes)
$_UP['tamanho'] = 2048 * 2048 * 2; // 2Mb

// Array com as extensões permitidas
$_UP['extensoes'] = array('ret', 'cmp');

// Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único)
$_UP['renomeia'] = false;

// Array com os tipos de erros de upload do PHP
$_UP['erros'][0] = 'Não houve erro';
$_UP['erros'][1] = 'O arquivo no upload é maior do que o limite do PHP';
$_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML';
$_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente';
$_UP['erros'][4] = 'Não foi feito o upload do arquivo';

// Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro
if ($_FILES['arquivo']['error'] != 0) {
die("Não foi possível fazer o upload, erro:<br />" . $_UP['erros'][$_FILES['arquivo']['error']]);
exit; // Para a execução do script
}

// Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar

// Faz a verificação da extensão do arquivo
$extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));
if (array_search($extensao, $_UP['extensoes']) === false) {
echo "Por favor, envie arquivos com as seguintes extensões: ret ou cmp";
}

// Faz a verificação do tamanho do arquivo
else if ($_UP['tamanho'] < $_FILES['arquivo']['size']) {
echo "O arquivo enviado é muito grande, envie arquivos de até 4Mb.";
}

// O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta
else {
// Primeiro verifica se deve trocar o nome do arquivo
if ($_UP['renomeia'] == true) {
// Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg
$nome_final = time().'.ret';
} else {
// Mantém o nome original do arquivo
$nome_final = $_FILES['arquivo']['name'];
}

// Depois verifica se é possível mover o arquivo para a pasta escolhida
//if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) {
// Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo
//echo "Upload efetuado com sucesso!";
//echo '<br /><a href="' . $_UP['pasta'] . $nome_final . '">Clique aqui para acessar o arquivo</a>';
//} else {
// Não foi possível fazer o upload, provavelmente a pasta está incorreta
//echo "Não foi possível enviar o arquivo, tente novamente";
//}
if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) {
            $lendo = @fopen($_UP['pasta']."/".$nome_final,"r");
            if (!$lendo){
                echo "Erro ao abrir a URL.";
                exit;
            }
            $i = 0;
            
            while (!feof($lendo)){
                $i++;
                $linha = fgets($lendo,9999);
                $t_u_segmento = substr($linha,13,1);//Segmento T ou U
                $t_tipo_reg = substr($linha,7,1);//Tipo de Registro
                if($t_u_segmento == 'T'){
                    $t_cod_banco = substr($linha,0,3);//Código do banco na compensação
                    $t_lote = substr($linha,3,4);//Lote de serviço - Número seqüencial para identificar um lote de serviço.
                    $t_n_sequencial = substr($linha,8,5);//Nº Sequencial do registro no lote
                    $t_cod_seg = substr($linha,15,2);//Cód. Segmento do registro detalhe
                    $t_cod_conv_banco = substr($linha,23,6);//Código do convênio no banco - Código fornecido pela CAIXA, através da agência de relacionamento do cliente. Deve ser preenchido com o código do Cedente (6 posições).
                    $t_n_banco_sac = substr($linha,32,3);//Numero do banco de sacados
                    $t_mod_nosso_n = substr($linha,39,2);//Modalidade nosso número
                    $t_id_titulo_banco = substr($linha,38,19);//Identificação do titulo no banco - Número adotado pelo Banco Cedente para identificar o Título.
                    $t_cod_carteira = substr($linha,57,1);//Código da carteira - Código adotado pela FEBRABAN, para identificar a característica dos títulos. 1=Cobrança Simples, 3=Cobrança Caucionada, 4=Cobrança Descontada
                    $t_num_doc_cob = substr($linha,58,11);//Número do documento de cobrança - Número utilizado e controlado pelo Cliente, para identificar o título de cobrança.
                    $t_dt_vencimento = substr($linha,73,8);//Data de vencimento do titulo - Data de vencimento do título de cobrança.
                    $t_v_nominal = substr($linha,81,13);//Valor nominal do titulo - Valor original do Título. Quando o valor for expresso em moeda corrente, utilizar 2 casas decimais.
                    $t_cod_banco2 = substr($linha,96,3);//Código do banco
                    $t_cod_ag_receb = substr($linha,99,5);//Codigo da agencia cobr/receb - Código adotado pelo Banco responsável pela cobrança, para identificar o estabelecimento bancário responsável pela cobrança do título.
                    $t_dv_ag_receb = substr($linha,104,1);//Dígito verificador da agencia cobr/receb
                    $t_id_titulo_empresa = substr($linha,105,25);//identificação do título na empresa - Campo destinado para uso da Empresa Cedente para identificação do Título. Informar o Número do Documento - Seu Número.
                    $t_cod_moeda = substr($linha,130,2);//Código da moeda
                    $t_tip_inscricao = substr($linha,132,1);//Tipo de inscrição - Código que identifica o tipo de inscrição da Empresa ou Pessoa Física perante uma Instituição governamental: 0=Não informado, 1=CPF, 2=CGC / CNPJ, 9=Outros.
                    $t_num_inscricao = substr($linha,133,15);//Número de inscrição - Número de inscrição da Empresa (CNPJ) ou Pessoa Física (CPF).
                    $t_nome = substr($linha,148,40);//Nome - Nome que identifica a entidade, pessoa física ou jurídica, Cedente original do título de cobrança.
                    $t_v_tarifa_custas = substr($linha,198,13);//Valor da tarifa/custas
                    $t_id_rejeicoes = substr($linha,213,10);//Identificação para rejeições, tarifas, custas, liquidação e baixas
                    $t_data_credito = substr($linha, 200,8);

                }
                if($t_u_segmento == 'U'){
                    $t_id_titulo_banco;
                    $u_cod_banco = substr($linha,0,3);//Código do banco na compensação
                    $u_lote = substr($linha,3,4);//Lote de serviço - Número seqüencial para identificar um lote de serviço.
                    $u_tipo_reg = substr($linha,7,1);//Tipo de Registro - Código adotado pela FEBRABAN para identificar o tipo de registro: 0=Header de Arquivo, 1=Header de Lote, 3=Detalhe, 5=Trailer de Lote, 9=Trailer de Arquivo.
                    $u_n_sequencial = substr($linha,8,5);//Nº Sequencial do registro no lote
                    $u_cod_seg = substr($linha,15,2);//Cód. Segmento do registro detalhe
                    $u_juros_multa = substr($linha,17,15);//Jurus / Multa / Encargos - Valor dos acréscimos efetuados no título de cobrança, expresso em moeda corrente.
                    $u_desconto = substr($linha,32,15);//Valor do desconto concedido - Valor dos descontos efetuados no título de cobrança, expresso em moeda corrente.
                    $u_abatimento = substr($linha,47,15);//Valor do abat. concedido/cancel. - Valor dos abatimentos efetuados ou cancelados no título de cobrança, expresso em moeda corrente.
                    $u_iof = substr($linha,62,15);//Valor do IOF recolhido - Valor do IOF - Imposto sobre Operações Financeiras - recolhido sobre o Título, expresso em moeda corrente.
                    $u_v_pago = substr($linha,77,15);//Valor pago pelo sacado - Valor do pagamento efetuado pelo Sacado referente ao título de cobrança, expresso em moeda corrente.
                    $u_v_liquido = substr($linha,92,15);//Valor liquido a ser creditado - Valor efetivo a ser creditado referente ao Título, expresso em moeda corrente.
                    $u_v_despesas = substr($linha,107,15);//Valor de outras despesas - Valor de despesas referente a Custas Cartorárias, se houver.
                    $u_v_creditos = substr($linha,122,15);//Valor de outros creditos - Valor efetivo de créditos referente ao título de cobrança, expresso em moeda corrente.
                    $u_dt_ocorencia = substr(substr($linha,137,8),4,4).'-'.substr(substr($linha,137,8),2,2).'-'.substr(substr($linha,137,8),0,2);//Data da ocorrência - Data do evento que afeta o estado do título de cobrança.
                    $u_dt_efetivacao = formataData(substr($linha,  145,8));//Data da efetivação do credito - Data de efetivação do crédito referente ao pagamento do título de cobrança.
                    $u_dt_efetivacao1 = substr($linha,145,2);//Data da efetivação do credito - Data de efetivação do crédito referente ao pagamento do título de cobrança.
                    $u_dt_efetivacao2 = substr($linha,145,4);//Data da efetivação do credito - Data de efetivação do crédito referente ao pagamento do título de cobrança.

                    $u_dt_debito = substr($linha,157,8);//Data do débito da tarifa
                    $u_cod_sacado = substr($linha,167,15);//Código do sacado no banco
                    $u_cod_banco_comp = substr($linha,210,3);//Cód. Banco Correspondente compens - Código fornecido pelo Banco Central para identificação na Câmara de Compensação, do Banco ao qual será repassada a Cobrança do Título.
                    $u_nn_banco = substr($linha,213,20);//Nosso Nº banco correspondente - Código fornecido pelo Banco Correspondente para identificação do Título de Cobrança. Deixar branco (Somente para troca de arquivos entre Bancos).
 
                    $u_juros_multa = substr($u_juros_multa,0,13).'.'.substr($u_juros_multa,13,2);
                    $u_desconto = substr($u_desconto,0,13).'.'.substr($u_desconto,13,2);
                    $u_abatimento = substr($u_abatimento,0,13).'.'.substr($u_abatimento,13,2);
                    $u_iof = substr($u_iof,0,13).'.'.substr($u_iof,13,2);
                    $u_v_pago = substr($u_v_pago,0,13).'.'.substr($u_v_pago,13,2);
                    $u_v_liquido = substr($u_v_liquido,0,13).'.'.substr($u_v_liquido,13,2);
                    $u_v_despesas = substr($u_v_despesas,0,13).'.'.substr($u_v_despesas,13,2);
                    $u_v_creditos = substr($u_v_creditos,0,13).'.'.substr($u_v_creditos,13,2);
 
                    $data_agora = date('Y-m-d');
                    $hora_agora = date('H:i:s');
                    $atualiza = "UPDATE numero SET status ='pago'  WHERE numero='$t_id_titulo_banco'";
                    $query = mysql_query($atualiza);
            
                }
            }
            if ($lendo){
                echo "Atualizado.";
                exit;
                } else {echo "houve um erro ao ler o arquivo";}
            fclose($lendo);
        }
}
 

        
            
?>

 

fonte de onde retirei o código para upload :

http://blog.thiagobelem.net/upload-de-arquivos-com-php/

fonte do script:

http://www.phpbelem.com.br/2010/12/importacao-de-arquivo-retorno-caixa-cef-sigcb-cnab-240/

As linhas do título foram mudadas para a correta identificação

################################################################

a pasta uploads deve pertencer apache ou www-data com permissões 777

no meu caso tive que reconfigurar o modsecurity


Postado

...

Para identificar o pagamento, melhor pelo numero do documento

esta na posiçao 52,5





Postado

@afixar gostaria de testar sua versão antiga com boletos do Sicredi, é possível?

 

É possível. Estou lhe enviando uma cópia mas por favor, compartilhe aqui suas experiências e ajustes feito para que o mesmo funcione. 


Postado

afixar

Posta seu script antigo aí

 

 

 

Estou disponibilizando novamente o código, não esqueça de dar seu feedback à todos explicando sua experiencia e dizendo se está OK com o banco que você usa. 

 

https://www.dropbox.com/s/ngpnni77karxwq7/WHMCS.RET.rar?dl=0 

 

Lembre-se, sua contribuição (não necessariamente financeira) é importante para nós, um projeto só vive com essa troca. 


Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.
Nota: Sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Infelizmente, seu conteúdo contém termos que não são permitimos. Edite seu conteúdo para remover as palavras destacadas abaixo.
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Informação Importante

Concorda com os nossos termos?