Está sendo cada vez mais frequente o uso de integração online para o registro de Boletos via API. O componente ACBrBoleto já suporta esse tipo de comunicação para alguns Bancos, seja via Rest ou Soap, mas como recebemos com frequência novas contribuições e com implementações de outros bancos os mesmos não tem um padrão entre eles. Foi necessário uma refatoração na camada do componente responsavel pela geração e integraçao Web do ACBrBoleto, o propósito é facilitar a manutenção e implementação de novos bancos, além de melhorias que se tornam necessárias na estrutura do componente.
As modificações realizadas não causam grande impacto na forma como já é utilizado o ACBrBoleto para envio de títulos por APIs, com exceção dos pontos citados abaixo, onde será necessário alterar na sua aplicação:
1- O método EnviarBoleto foi depreciado, passando a ser utilizado por padrão o método "Enviar". Ex:
ACBrBoleto.Enviar;
(obs: Mesmo depreciado o método EnviarBoleto ainda pode ser utilizado, tendo as mesmas funcionalidades, mas não sendo recomendado o seu uso).
2- O retorno de cada Título enviado, passa a ficar registrado e acessível a partir do próprio Título, na property "RetornoWeb". Podendo também ser acessado através do índice de cada Título, utilizando a property "ListaRetornoWeb" da classe ACBrBoleto. Sendo assim, se for realizado o envio de uma lista com vários títulos, será possível obter o retorno de cada título usando essa propriedade indexada. Ex:
ACBrBoleto.Enviar;
for i:= 0 to Pred(ACBrBoleto.TotalListaRetornoWeb) do
begin
lCodigoRetorno:= ACBrBoleto.ListaRetornoWeb[i].CodRetorno;
lMensagem:= ACBrBoleto.ListaRetornoWeb[i].MsgRetorno;
...
Pode notar que não há muitas diferenças da forma como era utilizado antes, o detalhe é que não se usa mais o método "Count" de uma lista, e sim o método "TotalListaRetornoWeb" para saber o total de Títulos transmitidos, utilizando esse índice na property ListaRetornoWeb[] do componente ACBrBoleto.
3- Apenas quando o Envio for uma Operação de "Consulta", poderá retornar uma lista com registros de vários títulos, nesse caso pode ser utilizada uma lista para obter os retorno. A mesma pode ser acessada utilizando o método "ListaConsultaRetornoWeb" do componente ACBrBoleto. Ex:
ACBrBoleto.Configuracoes.WebService.Operacao := tpConsulta;
ACBrBoleto.Enviar;
for i:= 0 to Pred(ACBrBoleto.ListaConsultaRetornoWeb.count) do
begin
lCodigoRetorno:= ACBrBoleto.ListaConsultaRetornoWeb[i].CodRetorno;
lMensagem:= ACBrBoleto.ListaConsultaRetornoWeb[i].MsgRetorno;
...
4- O Log de Envio passou a ser gerado em um arquivo único, onde fica gravado todos os processos ( Autenticação, dados de Envio gerado pelo componente "Json ou XML" e os dados de retorno). Além disso os logs podem ser obtidos pelo evento "OnGravarLog" do componente ACBrBoleto. Localizado em (Configurações/Arquivos).
A configuração para gravar log pode ser realizada em:
ACBrBoleto.Configuracoes.Arquivos.LogRegistro:= True;
ACBrBoleto.Configuracoes.Arquivos.PathGravarRegistro:= 'c:\temp';
As alterações acima também estão exemplificadas no programa demo ACBrBoleto disponível na pasta Exemplos do Projeto ACBr. Veja o código nos botões: "Registrar Boleto OnLine", "Consultar Boleto"
http://svn.code.sf.net/p/acbr/code/trunk2/Exemplos/ACBrBoleto/