Manual Técnico Boleto Eletrônico Online



Documentos relacionados
Manual Técnico Boleto Eletrônico Online

Terceiro Milênio Informática

MANUAL TÉCNICO PARA UTILIZAÇÃO DO BOLETO SERVICE

Guia de Integração para Transferência

Manual Técnico. Gateway de Pagamentos HSBC Débito Online PUBLIC. Versão 2.3 Maio/2013

COBRANÇA NÃO REGISTRADA

GUIA RECIBO BANCÁRIO COBRANÇA NÃO REGISTRADA - SLIM

Cobrança e Módulo Cedente

TUTORIAL COM OS PROCEDIMENTOS DE

Meio de pagamento do Itaú na Internet Itaú Shopline, o jeito seguro de pagar pela internet!

GUIA EMISSÃO E ENVIO DE BOLETO BANCÁRIO POR

Certidão Online Manual do Usuário

Módulo e-rede Prestashop v1.0. Manual de. Instalação do Módulo. estamos todos ligados

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

Cobrança Itaú. Conheça como funciona o serviço de protesto de títulos.

SIM Sistema de Informação Monitorada Ltda. Vise Boletos

Portal Sindical. Manual Operacional Empresas/Escritórios

PREFEITURA MUNICIPAL DO NATAL

Escritório Virtual Administrativo

18/04/2006 Micropagamento F2b Web Services Web rev 00

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Objetivos. Página - 2

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Módulo e-rede Magento v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Módulo de Acesso Remoto

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

MANUAL DE ANOTAÇÃO DE RESPONSABILIDADE TÉCNICA - ART (SP/MT/MS)

CARTILHA DE ORIENTAÇÕES PARA USUÁRIOS DO HÁBIL EMPRESARIAL

MANUAL CERTIDÃO ELETRÔNICA: REGISTROCIVIL.ORG / INTRANET

14 - Como para gerar o boleto para pagamento do período das notas lançadas? 16 - Se no mês, o meu cliente não tiver movimento, o que devo fazer?

SOLICITAÇÃO DE CERTIFICADO SERVIDOR WEB MICROSOFT IIS 5.x

CARTÃO DE CRÉDITO BANRISUL

Passo a Passo do Sistema de Cobrança do Banco do Nordeste

Manual de Integração Web Service

SUA SENHA É SIGILOSA, PESSOAL E INTRANSFERÍVEL.

Conteúdo. Especificação HTTP v1.1

MANUAL COTAÇAO WEB MANUAL MANUAL AVANÇO INFORMÁTICA AVANÇO INFORMÁTICA. [Digite seu endereço] [Digite seu telefone] [Digite seu endereço de ]

TUTORIAL COM OS PROCEDIMENTOS DE

Mostrar área de trabalho.scf. Manual do Produto EDI.

MANUAL DO USUÁRIO SISTEMA SERVELOJA

Manual de Instalação do Softphone (Discador) BVC Telecomunicações.

Consulta de endereço através do Cep

Tutorial do módulo Carteira Nacional de Militante

Sr. Advogado, leia com atenção antes de adquirir seu certificado digital:

MANUAL PARA CADASTRO E ACESSO

INDICE 1. CADASTRO DE CATEGORIAS CADASTRO DE BANCO CONTAS A RECEBER LANÇAMENTO AUTOMÁTICO DE CONTAS A RECEBER...

Cartilha da Nota Fiscal Eletrônica do Hábil Empresarial Profissional 7.0. Obrigado por usar nosso software! Koinonia Software Ltda.

Parte I CADASTRO DE SACADO

Manual de Operações. Versão 1.0. Janeiro/2009. Autor : Carlos Valotto

CARTILHA DO PRODUTO. Débito Direto Autorizado. Versão /2012

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

ROTEIRO NOTA FISCAL ELETRONICA A partir de Agosto/2012

Manual do Software de Cobrança Itaú

Cadastro Avaliação 2013 Manual de Instruções

Manual Sistema de Autorização Online GW

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira / j.edu@vqv.com.br

VIAÇÃO SÃO BENTO LTDA.

MANUAL DO SISTEMA. Versão 6.12

Manual do Usuário CFCWeb BA

Sua empresa adquiriu a Solução Nucleu Excence, e isto nos deixa orgulhosos.

Módulo Vendas Balcão. Roteiro passo a passo. Sistema Gestor New

Programação para Internet I

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Soluções em Recebimentos. Manual Técnico

INTRODUÇÃO À TECNOLOGIA SERVLETS

Personalizações do mysuite

MANUAL PARA CADASTRO E ACESSO

MANUAL DE UTILIZAÇÃO DO SISTEMA DE NOTA FISCAL ELETRÔNICA e-nota

Cobre Bem Tecnologia

Tutorial contas a pagar

2013 GVDASA Sistemas Cheques 1

INSTRUÇÕES DO PORTAL PÓS-VENDAS MUELLER

Módulo Consulta de Contribuinte Internet

NFE Nota Fiscal eletrônica. Versão 2.0 (07/2012)

SEMINÁRIO SOBRE BOLETO DE COBRANÇA

Manual de Integração Web Service. Prefeitura de Ituiutaba/MG

MANUAL DE IMPLEMENTAÇÃO DO MÓDULO NOTA FISCAL ELETRONICA

MANUAL TÉCNICO MÓDULO I I EMISSÃO DO CLIENTE

Procedimento passo a passo para gerar o arquivo da Nota Fiscal Paulista utilizando o aplicativo da Bematech WINMFD2

Manual de Digitação online de guia de SADT Desenvolvido por: Iuri Silva Setor: Inteligência Corporativa Unimed VR BEM VINDO AO SISTEMA VOXIS!

Passo-a-Passo para Criação de Conta no site Griaule e Download do Programa SDK e da Licença Fingerprint SDK 2009

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

GERENCIADOR DE CONTEÚDO

Ajax Asynchronous JavaScript and Xml

Sistema de Controle de Solicitação de Desenvolvimento

Tel. (0xx11) Fax (0xx11)

Manual de Utilização de Certificados Digitais. Microsoft Word 2010

MANUAL OPERACIONAL DE SISTEMAS

CARTILHA DE PROCEDIMENTOS PLANO ACRICELPREV

ISSQN MANUAL DE. UTILIZAÇÃO DA NOTA FISCAL ELETRÔNICA (NFe) 1ª edição

Manual. Manual Técnico Solução CobreBemX Versão

Elaborado por SIGA-EPT. Projeto SIGA-EPT: Manual do Usuário Almoxarifado

1. Tela de Acesso pg Cadastro pg Abas de navegação pg Abas dados cadastrais pg Aba grupo de usuários pg.

Ministério da Cultura

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

Manual de Utilização de Certificados Digitais. Microsoft Word 2003

Transcrição:

Manual Técnico Boleto Eletrônico Online Gateway de Pagamentos HSBC Cobrança Não Registrada Versão: 2.5 Julho/2014 PUBLIC

SUMÁRIO APRESENTAÇÃO 03 1. NOTAS PRELIMINARES 04 2. LEGISLAÇÃO 05 3. PROCESSOS DE CONTRTAÇÃO DO SERVIÇO 05 4. INTERFACE DO COMÉRCIO ELETRÔNICO DO CLIENTE 06 5. DATA DE VENCIMENTO 07 6. NÚMERO DO DOCUMENTO 08 7. INSTRUÇÕES 08 8. DADOS DO SACADO 08 9. RE-EMISSÃO 08 10. LOGO DO HSBC 08 11. TESTES 08 12. ANEXO I Check List de Integração 09 13. ANEXO Il Exemplo de desenvolvimento em ASP 12 14. ANEXO lll Exemplo de desenvolvimento em PHP 14 15. ANEXO IV Exemplo de desenvolvimento em JSP 15 16. ANEXO V Exemplo de desenvolvimento em ASP.NET/C# 17 PUBLIC - 2

EMISSÃO ONLINE PELO LINK DO HSBC - COBRANÇA NÃO REGISTRADA NOTAS PRELIMINARES PREENCHIMENTO DO BLOQUETO APRESENTAÇÃO Prezado Cliente. Nós do HSBC Bank Brasil S.A. Banco Múltiplo estamos lhe entregando o Manual Técnico Módulo da Cobrança Não Registrada - Emissão On-line pelo Link do HSBC, pois através dele, aqueles que lhe prestam suporte em Informática terão as orientações necessárias para manter a integração com a qualidade e agilidade de nossos serviços. O Manual Técnico da Cobrança Não Registrada - Emissão On-line pelo Link do HSBC fornece todas as informações para que a emissão dos bloquetos de cobrança possa ser realizada em nosso ambiente de processamento, o que lhe proporcionará agilidade e eficiência no momento de cobrar suas vendas on-line. No caso de dúvidas, contate seu gerente. PUBLIC - 3

1. NOTAS PRELIMINARES O QUE É A COBRANÇA NÃO REGISTRADA? A Cobrança Não Registrada Emissão On-line pelo link do HSBC é uma modalidade da Cobrança do HSBC, e objetiva atender aos clientes que efetuam vendas on-line e querem oferecer essa forma de pagamento a seus clientes. Assim, a emissão do bloqueto on-line é realizada nos sistemas do HSBC, com dados fornecidos pelo Cliente, disponibilizando uma imagem de bloqueto na Internet, para ser impressa por seus clientes sem que o Cliente tenha que desenvolver em seus sistemas a inteligência de formatação do boleto e do código de barras. Para operacionalizar o intercâmbio de informações pelas quais o Cliente saberá quais boletos emitidos pelo Link do HSBC foram pagos, este manual é complementado pelo Manual Técnico Padrão CNAB 400 ou CNAB 240. PUBLIC - 4

2. LEGISLAÇÃO A padronização do bloqueto de Cobrança, especificamente da Ficha de Compensação, obedece ao modelo CADOC 24044-4, instituído pelo Banco Central do Brasil, através da Carta Circular nº 2.414, de 07.10.93. e alterado pela Carta-Circular nº 2790 de 04.03.98. A alteração nas especificações do Código de Barras, com a introdução do Dígito de Autoconferência (DAC), ocorreu pela Carta Circular nº 2.531 do Bacen, de 24.02.95. A alteração nas especificações do Código de Barras, com a introdução do Fator de vencimento nos bloquetos de cobrança, ocorreu pela Carta Circular nº 125/2000 do Bacen, de 02.05.2000. 3. PROCESSO DE CONTRATAÇÃO DO SERVIÇO O Cliente deve contratar a Cobrança Não Registrada ofertada pelo HSBC. Esse módulo da cobrança é o mais recomendado porque em vendas pela Internet a mercadoria só é entregue ou o serviço só é realizado após a confirmação do pagamento realizado. O não pagamento do boleto emitido na internet não caracteriza dívida, portanto não pode haver processo de protesto do comprador. O Cliente assina também o Contrato de Prestação de Serviços para Disponibilização de Boletos de Cobrança por Meio Eletrônico. Após a contratação da Cobrança Não Registrada o HSBC definirá o CÓDIGO DE CEDENTE e o informará ao Cliente. O Cliente deverá informar o(s) número(s) de IP de seu(s) servidor(es) para o banco, que o(s) utiliza como parâmetro(s) de segurança. Não há limitação de quantidade de IPs que podem ser cadastrados. O motivo é que a solução exige que o servidor Web do Cedente abra uma conexão direta (Server-to-Server) com o servidor do HSBC. Esta conexão só é aceita se o IP de origem estiver cadastrado. (Ver item INTERFACE DO COMÉRCIO ELETRÔNICO DO CLIENTE COM O HSBC). PUBLIC - 5

4. INTERFACE DO COMÉRCIO ELETRÔNICO DO CLIENTE COM O HSBC O processo de Emissão On-line funciona da seguinte maneira (ver figura): 1. SACADO acessa o site da empresa e realiza sua compra, 2. SACADO, após cadastrar-se no site do cedente, seleciona forma de pagamento "Boleto de compensação". 3. SACADO efetua um submit para um link hospedado no servidor do CEDENTE 4. O Servidor do CEDENTE efetua uma conexão direta (Server-to-Server) via post (ver item observações abaixo do item 9) para o endereço: https://wwws5.hsbc.com.br/ofb-bol-cnr/servlets/geraboleto?servletstate=10 5. O POST enviado pelo Servidor do Cliente para o link do HSBC deve conter os seguintes dados para que a geração do boleto ocorra com sucesso: Nome do Campo Tipo de Dado Tamanho Formato Preenchimento Obrigatório? codigocedente NUMÉRICO 7 9999999 S datavencimento DATA 10 DD/MM/AAAA S valordocumento ALFANUMÉRICO 10 9999999.99 S numeroparcela NUMERICO 02 99 N totalparcelas NUMERICO 02 99 N numerodocumento NUMERICO 13 9999999999999 S L1 ALFANUMÉRICO 66 N L2 ALFANUMÉRICO 66 N L3 ALFANUMÉRICO 66 N L4 ALFANUMÉRICO 66 N L5 ALFANUMÉRICO 66 N unidadecedente ALFANUMÉRICO 54 N nomesacado ALFANUMÉRICO 30 S cpfcnpjsacado NUMERICO 14 99999999999999 S enderecosacado ALFANUMÉRICO 40 N numerosacado NUMERICO 05 N complementosacado ALFANUMÉRICO 10 N cepsacado ALFANUMÉRICO 10 99.999-999 N bairrosacado ALFANUMÉRICO 15 N cidadesacado ALFANUMÉRICO 15 N estadosacado ALFANUMÉRICO 02 N Obs. Mensagens que serão mostradas no boleto Atenção: os caracteres maiúsculos e minúsculos têm de ser respeitados, tanto os da URL quanto os do nome dos parâmetros do post. Os campos indicados na tabela acima com Preenchimento obrigatório n devem ser gerados com conteúdo branco. 6. HSBC valida se o cedente está cadastrado e se a requisição tem como origem os servidores do cedente. PUBLIC - 6

7. HSBC obtém informações do cedente, linha digitável e código de barras e monta o boleto. 8. HSBC devolve o boleto gerado em PDF para o Servidor do Cliente. 9. O Servidor do Cedente captura o PDF gerado e apresenta o mesmo em uma página própria (hospedada no seu servidor). Observações - Os dados informados pelo CEDENTE não são validados pelo HSBC (sacado, valor, data de vencimento, etc.). Portanto é responsabilidade do Cliente enviá-los com correção - IMPORTANTE: A chamada para a URL do HSBC, deve ser efetuada internamente através de conexão Server-to-Server do servidor do CEDENTE para o Servidor do HSBC. Caso o cedente disponibilize o link do HSBC em sua própria página (ex: se colocar a URL do HSBC como Action de um Form HTML), o boleto não será gerado, pois neste caso a requisição / conexão estará partindo do IP do sacado e não do IP do Servidor do CEDENTE. Vide figura abaixo: 1. Efetua requisição para uma página hospedada no servidor do cedente 2. Cedente efetua uma REQUISIÇÃO INTERNA para o link de geração de boleto do HSBC SACADO CEDENTE HSBC 5. Cedente apresenta boleto gerado como se o mesmo fosse gerado em seu servidor 4. Cedente captura PDF retornado e o apresenta em uma página hospedada no seu servidor 3. HSBC devolve PDF com o boleto gerado 5. Data de Vencimento Recomendamos que a data de vencimento definida pelo Cliente seja sempre a do dia posterior à compra ou maior, para possibilitar a seu cliente o pagamento, caso ele realize a compra após o horário do expediente bancário. PUBLIC - 7

6. Número do Documento - campo numerodocumento Este número é único para o título, deve ser controlado pelo Cliente e será utilizado na conciliação dos pagamentos liquidados, pois será enviado ao Cliente no arquivo retorno de liquidação. 7. Instruções O campo instruções tem por finalidade orientar o Caixa quanto ao recebimento do bloqueto. Para compor o conjunto de mensagens, o Cliente poderá utilizar como modelo as instruções padrões listadas na seção Tabela de Notas Explicativas - nota 9, do Manual Técnico - Módulo I, Padrão CNAB 400. As instruções serão enviadas nos campos L1, L2, L3, L4 e L5 da mensagem. 8. Dados do sacado Como o boleto será emitido pelo site, dados do sacado além de nome e CPF/CNPJ não são obrigatórios. 9. RE-EMISSÃO Sugerimos ao Cliente que coloque em seu site, de forma acessível ao consumidor, a possibilidade de emitir novamente o boleto bancário referente à sua compra, evitando assim que perdas de boleto transformem-se em perdas de vendas para o Cliente. O link de re-emissão deve repetir o processo de chamada do site do HSBC, com nova data de vencimento, se necessário, de forma a possibilitar o pagamento em qualquer agência de qualquer banco. 10. LOGO DO HSBC Eventualmente é possível utilizar o logo do HSBC para indicar a opção de forma de pagamento com boleto. Caso o Cliente deseje utilizá-lo, deve entrar em contato com o gerente para que esse o oriente. 11. TESTES Antes de colocar a opção de pagamento por boleto bancário em seu site, o Cliente deverá aguardar a sinalização de seu gerente para iniciar os testes de conexão, para que haja a devida homologação técnica. Este procedimento é indispensável para se garantir a qualidade da conexão e da geração do boleto. Recomendamos ao cliente que se certifique de que o Check list de integração (Anexo I) foi verificado. PUBLIC - 8

12. ANEXO I - Check List de Integração 1 A conexão deve obrigatoriamente ser SSL (Porta 443) Os nomes de parâmetros, principalmente o ServletState e o código do cedente, devem respeitar a nomenclatura definida no documento de integração, inclusive 2 maiúsculas e minúsculas. O ServletState deve ser passado juntamente do endereço (URL), e os demais na linha do POST. Quando o HSBC recebe a solicitação HTTP Post, valida se o IP de origem da conexão é o IP que está cadastrado no sistema, ou seja, o IP do servidor Web do cliente. Não funciona se for feito um redirect ou qualquer outro tipo de chamada que parta 3 diretamente do browser do cliente para o nosso sistema. (Referrer, JavaScript, etc.). (Vide as figuras ao final deste documento) Valores de parâmetro na querystring do POST devem estar URLEncoded conforme formato MIME application/x-www-form-urlencoded. Ex: Espaços são convertidos 4 para +, Caracteres especiais são convertidos para %xy, onde xy é o código hexadecimal do caractere, etc. Detalhamento/Exemplo de solução O programa da loja, que roda no servidor (JSP, ASP, CGI) terá que ter lógica semelhante à seguinte: var resultadohsbc = executapostparaurldohsbc(parâmetros,...); printoutputparacliente(resultadohsbc); Neste exemplo, a variável resultadohsbc, após executado o trecho em questão, estaria carregada com a resposta da URL do HSBC. Desta forma, quem faz o POST para o HSBC é o servidor de hospedagem da loja, e não o browser do cliente. O resultado do POST é incluído dinamicamente, pelo sistema da loja, no conteúdo da página para o cliente. Vide figuras abaixo: PUBLIC - 9

PUBLIC - 10

PUBLIC - 11

13. ANEXO II - Exemplo de desenvolvimento ASP <%@language=vbscript%> <html> <head> <title>gera_boleto</title> <style> body { margin: 20px; font: 11px sans-serif; color: #000; th { font: bold 11px sans-serif; color: #000; padding: 4px 10px; border-bottom: 1px solid #9E9E9E; td { font: 11px sans-serif; color: #000; text-align: right; padding: 4px 10px; border-bottom: 1px solid #9E9E9E; hr { border: 10px 0 20px 0; color: #9E9E9E; background-color: #9E9E9E; height: 1px; width: 100%; #erro { font: bold 16px sans-serif; color: #F00.tit { font: bold 16px sans-serif; color: #000; </style> </head> <body> <% Server.ScriptTimeout = 300 '####################################################### '### CONEXÃO MSXML2 PARA BUSCAR DADOS '####################################################### set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") on error resume next '####################################################### '### CONEXÃO PARA PASSAR PARAMETROS E RECEBER O HTML '####################################################### codigocedente = "3752950" datavencimento = "10/02/2008" valordocumento = "0001043.67" numeroparcela = "01" totalparcelas = "02" numerodocumento = "0000000000001" L1 = "Senhor(a) Caixa, favor seguir as instruções abaixo:" L2 = "1. Não receber este documento após a data de seu vencimento" L3 = "2. Valores expressos em Reais" L4 = "3. Não receber por depósito bancário" L5 = "Reader's Digest Brasil" unidadecedente = "NOME FAKE DO BRASIL" nomesacado = "NOME FAKE DA SILVA" cpfcnpjsacado = "12345678901234" enderecosacado = "RUA DO CARMO" numerosacado = "43" complementosacado = "10 ANDAR" cepsacado = "22.222-222" bairrosacado = "CENTRO" cidadesacado = "RIO DE JANEIRO" estadosacado = "RJ" url = "https://wwws5.hsbc.com.br/ofb-bol-cnr/servlets/geraboleto?servletstate=10" xmlhttp.open "POST", url, false xmlhttp.setrequestheader "Content-Type", "application/x-www-form-urlencoded" xmlhttp.send "codigocedente=" & codigocedente& "&datavencimento=" & datavencimento & "&valordocumento=" & valordocumento & "&numeroparcela=" & numeroparcela& "&totalparcelas=" & totalparcelas & "&numerodocumento=" & numerodocumento & "&L1=" & L1 & "&L2=" & L2 & "&L3=" & L3 & "&L4=" & L4 & "&L5=" & L5 & "&unidadecedente=" & unidadecedente & "&nomesacado=" & nomesacado & "&cpfcnpjsacado=" & cpfcnpjsacado & "&enderecosacado=" & enderecosacado & "&numerosacado=" & numerosacado & "&complementosacado=" & complementosacado & "&cepsacado=" & cepsacado & "&bairrosacado=" & bairrosacado & "&cidadesacado=" & cidadesacado & "&estadosacado=" & estadosacado //boleto = xmlhttp.responsetext //Response.Write "retorno: " & boleto Response.ContentType = "application/pdf" //Para abrir o arquivo no navegador, definir a propriedade abaixo como "inline" //Para forçar o download do arquivo, definir a propriedade abaixo como "attachment" //Para definir o nome do arquivo, definir a propriedade filename abaixo com o nome desejado, // no caso está definido como BoletoHSBC.pdf mas pode ser qualquer nome de arquivo que melhor // atenda à necessidade do cliente //Para não definir nome do arquivo, apenas deixar em branco ou apagar a propriedade filename abaixo Response.AppendHeader("content-disposition", "inline;filename=boletohsbc.pdf "); Response.BinaryWrite xmlhttp.responsebody PUBLIC - 12

set xmlhttp = nothing %> </body> </html> Observação: O exemplo acima se destina ao entendimento da solução a ser desenvolvida, e não à utilização exatamente como está. PUBLIC - 13

14. ANEXO III - Exemplo de desenvolvimento PHP <?php $sock = fsockopen("ssl://wwws5.hsbc.com.br", 443, $errno, $errstr, 30); if(!$sock) die ("$errstr ($errno)\n"); $data = "ServletState=10&codigoCedente=3709590 &datavencimento=30/08/2007&valordocumento=1.00&numeroparcela=1&totalparcelas=1&numerodocumento=0000000000159&l1=inst rução1&l2=instrução 2&L3=Instrução 3&L4=Instrução 4&L5=Instrução5&unidadeCedente=01&nomeSacado=Alexandre&cpfCnpjSacado=01848547927&enderecoSacado=Rua Cel. de tal, 397 - Apto.2&numeroSacado=&complementoSacado=&cepSacado=04.676-010&bairroSacado=Belenzinho&cidadeSacado=São Paulo&estadoSacado=SP"; $d1 = explode('&', $data); $data = ""; for($i=0;$i<sizeof($d1);$i++) { list($field, $value) = explode('=', $d1[$i]); $data.= $field. "=". urlencode($value). "&"; fputs($sock, "POST /OFB-BOL-CNR/servlets/GeraBoleto HTTPS/1.0\r\n"); fputs($sock, "Host: wwws5.hsbc.com.br\r\n"); fputs($sock, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($sock, "Content-length: ". strlen($data). "\r\n"); fputs($sock, "Accept: */*\r\n"); fputs($sock, "\r\n"); fputs($sock, "$data\r\n"); fputs($sock, "\r\n"); $headers = ""; while ($str = trim(fgets($sock, 4096))) { $headers.= "$str\n"; $body = ""; while (!feof($sock)) { $body.= fgets($sock, 4096); fclose($sock); /** * Cabeçalho de resposta * */ //print "<!--\n". $headers. "\n-->\n\n"; /** * Corpo do documento retornado * */ print $body;?> Observação: O exemplo acima se destina ao entendimento da solução a ser desenvolvida, e não à utilização exatamente como está. PUBLIC - 14

15. ANEXO IV - Exemplo de desenvolvimento JSP <%@ page language="java" contenttype="text/html; charset=iso-8859-1" pageencoding="iso-8859-1"%> <%@page import="java.net.url" %> <%@page import="java.net.urlencoder" %> <%@page import="java.net.urlconnection" %> <%@page import="java.io.outputstreamwriter" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <%@page import="java.io.datainputstream"%> <html> <head> <title>jsp Form Demo</title> <style type="text/css"> label{ margin-right:20px; input{ margin-top:5px; </style> </head> <body> <b>página Encontrada!</b> <% System.out.println("Preparando chamada..."); String val = request.getparameter("issubmitted"); int issubmitted = 0; if (val!= null) { System.out.println("Preparando dados..."); issubmitted = Integer.parseInt(val); if (issubmitted == 1) { String codigocedente = "3752950"; String datavencimento = "10/02/2008"; String valordocumento = "0001043.67"; String numeroparcela = "01"; String totalparcelas = "02"; String numerodocumento = "0000000000001"; String L1 = "Senhor(a) Caixa, favor seguir as instruções abaixo:"; String L2 = "1. Não receber este documento após a data de seu vencimento"; String L3 = "2. Valores expressos em Reais"; String L4 = "3. Não receber por depósito bancário"; String L5 = "Reader's Digest Brasil"; String unidadecedente = "NOME FAKE DO BRASIL"; String nomesacado = "NOME FAKE DA SILVA"; String cpfcnpjsacado = "12345678901234"; String enderecosacado = "RUA DO CARMO"; String numerosacado = "43"; String complementosacado = "10 ANDAR"; String cepsacado = "22.222-222"; String bairrosacado = "CENTRO"; String cidadesacado = "RIO DE JANEIRO"; String estadosacado = "RJ"; 8"); 8"); String data = URLEncoder.encode("codigoCedente", "UTF-8") + "=" + URLEncoder.encode(codigoCedente, "UTF-8"); data += "&" + URLEncoder.encode("dataVencimento", "UTF-8") + "=" + URLEncoder.encode(dataVencimento, "UTF-8"); data += "&" + URLEncoder.encode("valorDocumento", "UTF-8") + "=" + URLEncoder.encode(valorDocumento, "UTF-8"); data += "&" + URLEncoder.encode("numeroParcela", "UTF-8") + "=" + URLEncoder.encode(numeroParcela, "UTF-8"); data += "&" + URLEncoder.encode("totalParcelas", "UTF-8") + "=" + URLEncoder.encode(totalParcelas, "UTF-8"); data += "&" + URLEncoder.encode("numeroDocumento", "UTF-8") + "=" + URLEncoder.encode(numeroDocumento, "UTF- data += "&" + URLEncoder.encode("L1", "UTF-8") + "=" + URLEncoder.encode(L1, "UTF-8"); data += "&" + URLEncoder.encode("L2", "UTF-8") + "=" + URLEncoder.encode(L2, "UTF-8"); data += "&" + URLEncoder.encode("L3", "UTF-8") + "=" + URLEncoder.encode(L3, "UTF-8"); data += "&" + URLEncoder.encode("L4", "UTF-8") + "=" + URLEncoder.encode(L4, "UTF-8"); data += "&" + URLEncoder.encode("L5", "UTF-8") + "=" + URLEncoder.encode(L5, "UTF-8"); data += "&" + URLEncoder.encode("unidadeCedente", "UTF-8") + "=" + URLEncoder.encode(unidadeCedente, "UTF-8"); data += "&" + URLEncoder.encode("numeroDocumento", "UTF-8") + "=" + URLEncoder.encode(numeroDocumento, "UTF- data += "&" + URLEncoder.encode("nomeSacado", "UTF-8") + "=" + URLEncoder.encode(nomeSacado, "UTF-8"); data += "&" + URLEncoder.encode("cpfCnpjSacado", "UTF-8") + "=" + URLEncoder.encode(cpfCnpjSacado, "UTF-8"); data += "&" + URLEncoder.encode("enderecoSacado", "UTF-8") + "=" + URLEncoder.encode(enderecoSacado, "UTF-8"); PUBLIC - 15

data += "&" + URLEncoder.encode("numeroSacado", "UTF-8") + "=" + URLEncoder.encode(numeroSacado, "UTF-8"); "UTF-8"); data += "&" + URLEncoder.encode("complementoSacado", "UTF-8") + "=" + URLEncoder.encode(complementoSacado, data += "&" + URLEncoder.encode("cepSacado", "UTF-8") + "=" + URLEncoder.encode(cepSacado, "UTF-8"); data += "&" + URLEncoder.encode("bairroSacado", "UTF-8") + "=" + URLEncoder.encode(bairroSacado, "UTF-8"); data += "&" + URLEncoder.encode("cidadeSacado", "UTF-8") + "=" + URLEncoder.encode(cidadeSacado, "UTF-8"); data += "&" + URLEncoder.encode("estadoSacado", "UTF-8") + "=" + URLEncoder.encode(estadoSacado, "UTF-8"); // Enviado Dados para a emissão do boleto System.out.println("Montando URL de conexão..."); URL url = new URL("https://wwws5.hsbc.com.br/OFB-BOL-CNR/servlets/GeraBoleto?ServletState=10"); // Montando a conexão com o Servidor URLConnection conn = url.openconnection(); conn.setdoinput(true); conn.setdooutput(true); conn.setrequestproperty("content-type", "application/x-www-form-urlencoded"); OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); DataInputStream input; System.out.println("Enviando dados..."); wr.write(data); wr.flush(); // Get response data. System.out.println("Retorno da chamada..."); input = new DataInputStream (conn.getinputstream ()); BufferedOutputStream bufferedoutputstream = new BufferedOutputStream(response.getOutputStream()); int bytesread = 0; byte[] buffer = new byte[1024]; response.setcontentlength(connection.getcontentlength()); response.setcontenttype("application/pdf"); //Para abrir o arquivo no navegador, definir a propriedade abaixo como "inline" //Para forçar o download do arquivo, definir a propriedade abaixo como "attachment" //Para definir o nome do arquivo, definir a propriedade filename abaixo com o nome desejado, // no caso está definido como BoletoHSBC.pdf mas pode ser qualquer nome de arquivo que melhor // atenda à necessidade do cliente //Para não definir nome do arquivo, apenas deixar em branco ou apagar a propriedade filename abaixo response.setheader("content-disposition", "inline; filename=boletohsbc.pdf"); response.setheader("cache-control", "cache, must-revalidate"); response.setheader("pragma", "public"); while ((bytesread = bufferedinputstream.read(buffer))!= -1) { bufferedoutputstream.write(buffer, 0, bytesread); bufferedoutputstream.flush(); input.close (); %> </body> </html> Observação: O exemplo acima se destina ao entendimento da solução a ser desenvolvida, e não à utilização exatamente como está. PUBLIC - 16

16. ANEXO V - Exemplo de desenvolvimento ASP.NET/C# using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace TesteWeb { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { protected void Button1_Click(object sender, EventArgs e) { if (txtteste.text!= "") { string url = "https://wwws5.hsbc.com.br/ofb-bol-cnr/servlets/geraboleto?servletstate=10"; chamaurl(url); private void chamaurl(string url) { String codigocedente = "3752950"; String datavencimento = "10/02/2008"; String valordocumento = "0001043.67"; String numeroparcela = "01"; String totalparcelas = "02"; String numerodocumento = "0000000000001"; String L1 = "Senhor(a) Caixa, favor seguir as instruções abaixo:"; String L2 = "1. Não receber este documento após a data de seu vencimento"; String L3 = "2. Valores expressos em Reais"; String L4 = "3. Não receber por depósito bancário"; String L5 = "Reader's Digest Brasil"; String unidadecedente = "NOME FAKE DO BRASIL"; String nomesacado = "NOME FAKE DA SILVA"; String cpfcnpjsacado = "12345678901234"; String enderecosacado = "RUA DO CARMO"; String numerosacado = "43"; String complementosacado = "10 ANDAR"; String cepsacado = "22.222-222"; String bairrosacado = "CENTRO"; String cidadesacado = "RIO DE JANEIRO"; String estadosacado = "RJ"; String data = "codigocedente" + "=" + codigocedente ; data += "&" + "datavencimento" + "=" + datavencimento; data += "&" + "valordocumento" + "=" + valordocumento; data += "&" + "numeroparcela" + "=" + numeroparcela; data += "&" + "totalparcelas" + "=" + totalparcelas; data += "&" + "numerodocumento" + "=" + numerodocumento; data += "&" + "L1" + "=" + L1; data += "&" + "L2" + "=" + L2; data += "&" + "L3" + "=" + L3; data += "&" + "L4" + "=" + L4; data += "&" + "L5" + "=" + L5; data += "&" + "unidadecedente" + "=" + unidadecedente; data += "&" + "numerodocumento" + "=" + numerodocumento; data += "&" + "nomesacado" + "=" + nomesacado; data += "&" + "cpfcnpjsacado" + "=" + cpfcnpjsacado; data += "&" + "enderecosacado" + "=" + enderecosacado; data += "&" + "numerosacado" + "=" + numerosacado; PUBLIC - 17

data += "&" + "complementosacado" + "=" + complementosacado; data += "&" + "cepsacado" + "=" + cepsacado; data += "&" + "bairrosacado" + "=" + bairrosacado; data += "&" + "cidadesacado" + "=" + cidadesacado; data += "&" + "estadosacado" + "=" + estadosacado; Encoding encoding = Encoding.ASCII; byte[] dados = encoding.getbytes(data); // Prepara chamada HttpWebRequest orequest = (HttpWebRequest)WebRequest.Create(url); orequest.method = "POST"; orequest.contenttype = "application/x-www-form-urlencoded"; orequest.contentlength = dados.length; Stream oreqstream = orequest.getrequeststream(); //Envia os dados oreqstream.write(dados, 0, dados.length); oreqstream.close(); //Recupera resposta HttpWebResponse oresponse = (HttpWebResponse)oRequest.GetResponse(); Stream orespstream = oresponse.getresponsestream(); int buffer = 1024; byte[] databuffer = new byte[buffer]; int count = 0; MemoryStream ms = new MemoryStream(); while ((count = orespstream.read(databuffer, 0, buffer)) > 0) { ms.write(databuffer, 0, count); orespstream.close(); Response.AddHeader("Content-Type", "application/pdf"); //Para abrir o arquivo no navegador, definir a propriedade abaixo como "inline" //Para forçar o download do arquivo, definir a propriedade abaixo como "attachment" //Para definir o nome do arquivo, definir a propriedade filename abaixo com o nome desejado, // no caso está definido como BoletoHSBC.pdf mas pode ser qualquer nome de arquivo que melhor // atenda à necessidade do cliente //Para não definir nome do arquivo, apenas deixar em branco ou apagar a propriedade filename abaixo Response.AddHeader("Content-Disposition", "inline; filename=boletohsbc.pdf;"); Response.AddHeader("Content-Length", ms.length.tostring()); Response.BinaryWrite(ms.ToArray()); Response.Flush(); Response.End(); Observação: O exemplo acima se destina ao entendimento da solução a ser desenvolvida, e não à utilização exatamente como está. PUBLIC - 18