GERAÇÃO DE BOLETO- BANCO HSBC

(Arquimedes) #1

segue exemplo de passagem de parâmetro para uma aplicação fora do scriptcase utilizando o projeto boletophp do boleto bancario do banco HSBC, podendo ser adaptado para qualquer banco do projeto.

http://www.netmake.com.br/knowledge/article-299.html

Atenciosamente Arquimedes

www.scriptcasebrasil.com.br

(antony.ferreira) #2

Tem alguma função para ler o arquivo de retorno e dar baixa nos pagamentos dos boletos?

(Arquimedes) #3

estou desenvolvendo uma utilizado para da baixa em boletos do HSBC, brevemente estarei disponibilizando tambem.

Atenciosamente Arquimedes

www.scriptcasebrasil.com.br

(antony.ferreira) #4

Você tem algum exemplo de qualquer outro banco? To quebrando a cabeça aqui pra ver como que é feito a leitura.

(Arquimedes) #5

voce pode utilizar essa funcao para leitura, estar faltando apenas inserir o valor da linha na sua base que eu nao sei qual é o campo da tabela para fazer o update e alterar o status dos boleto para pago

<?php //ABRE O ARQUIVO TXT $ponteiro = fopen ("C:\\banco.txt", "r"); //LÊ O ARQUIVO ATÉ CHEGAR AO FIM while (!feof ($ponteiro)) { //LÊ UMA LINHA DO ARQUIVO $linha = fgets($ponteiro, 4096); //IMPRIME NA TELA O RESULTADO echo $linha."
"; } //FECHA O PONTEIRO DO ARQUIVO fclose ($ponteiro); ?>
(antony.ferreira) #6

Vou testar aqui pra ver se da certo, vlw.

(antony.ferreira) #7

Consegui ler o arquivo teste.ret e imprimiu na tela o resultado do que eu tenho no arquivo:

02RETORNO01COBRANCA 101000010101 BANCO ITAU TESTE 341BANCO ITAU S.A.10101010600BPI00101010101 000001
10203218102000176414600020427 00006256 175000062565 I06011009 00006256 000000000000001209500139628 000000000000000000000000000000000000000000000000000000000000000000000000000000000000001209500000000000000000000000000 01100900000000000000000000000 B3000002
10203218102000176414600020427 00006426 175000064264 I06011009 00006426 000000000000001209574804341 000000000000000000000000000000000000000000000000000000000000000000000000000000000000001209500000000000000000000000000 01100900000000000000000000000 B3000001
10203218102000176414600020427 00006468 175000064686 I06011009 00006468 000000000000001209500115057 000000000000000000000000000000000000000000000000000000000000000000000000000000000000001209500000000000000000000000000 01100900000000000000000000000 B3000002
10203218102000176414600020427 00006808 175000068083 I06011009 00006808 000000000000001800000118861 000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000 01100900000000000000000000000 B2000003
10203218102000176414600020427 00006832 175000068323 I06011009 00006832 000000000000001800010425254 000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000 01100900000000000000000000000 B5000004
10203218102000176414600020427 00006836 175000068364 I06011009 00006836 000000000000001800010425254 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306100000000000610000000000000 01100900000000000000000000000 CP000027
000000000000000000000000000000000000000000000000000000000000000000000000000000000000001475000000000000000000000000000 01100900000000000000000000000 B2001027
9201341 000000000000000000000000000000 000000000000000000000000000000 000000000000000000000000000000 000000000000000000000000000000004660000102600000010168862 001028

(Arquimedes) #8

blz, agora é so fazer o vinculo dos valores de $linha
{campo_pago} = $linha;
atravez do laço de repetição para alterar todos os pagamentos daquele dia ou arquivo txt

Atenciosamente Arquimedes

(antony.ferreira) #9

Na minha tabela eu tenho um campo chamado Pagamento = (S ou N), se tiver N é que o pagamento não foi realizado, e S quando o pagamento for realizado, quando o nosso numero do arquivo de retorno for igual ao nosso numero do da minha tabela eu tenho que atualizar.
Como eu poderia fazer isso?

(Arquimedes) #10

VOCE PODE ADAPTAR ESSE CODIGO, ELE VERIFICA SE O PAGAMENTO FOI EFETUADO, DEPENDENDO DO RESULTADO ELE ALTERAR O RESULTADO NA TABELA

sc_lookup(ds_sn,“SELECT valor_creditado FROM contrato_entrada WHERE contrato_id = ‘{contrato_id}’ and codigo =’{codigo}’”);

if({ds_sn[0][0]} == ‘nao’)
{
sc_lookup(dataset,"SELECT ce.valor_entrada, c.valor_pago FROM contrato_entrada ce, contrato c WHERE ce.contrato_id = c.codigo and ce.contrato_id = ‘{contrato_id}’ and ce.valor_creditado= ‘nao’ and ce.codigo = ‘{codigo}’ ");

$entrada = {dataset}[0][0]; // aqui voce coloca o campo para receber o valor do codigo barra
$valor_pago= {dataset}[0][0];// nesse voce verifica o codigo de barra cadastrado no banco


if($entrada == $valor_pago) // aqui voce pode verifica se os codigos de barras sao iguais,  casso sim ele ira atualizar a tabela
{

$total =‘null’;
$soma=$total ;

sc_master_value('valor_pago', $soma);
sc_exec_sql('UPDATE contrato SET valor_pago = $soma WHERE codigo = {contrato_id}');
}	

else
{
sc_alert(“erro de logica”);
}

}

elseif({ds_sn[0][0]} == ‘sim’)
{

sc_lookup(dataset,"SELECT SUM(valor_entrada ) FROM contrato_entrada WHERE contrato_id = '{contrato_id}' and valor_creditado= 'sim' ");

$total = {dataset}[0][0];

sc_master_value('valor_pago', $total);

sc_exec_sql('UPDATE contrato SET valor_pago = $total WHERE codigo = {contrato_id}');

}

atenciosamente Arquimedes