• Nenhum resultado encontrado

Manual Técnico Boleto Eletrônico Online

N/A
N/A
Protected

Academic year: 2021

Share "Manual Técnico Boleto Eletrônico Online"

Copied!
18
0
0

Texto

(1)

PUBLIC

Manual Técnico

Boleto Eletrônico Online

Gateway de Pagamentos HSBC

Cobrança Não Registrada

Versão: 2.5 Julho/2014

(2)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 2

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

(3)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 3

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.

(4)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 4

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.

(5)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 5

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

Auto-conferê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).

(6)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 6

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?

Obs.

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

Mensagens

que serão

mostradas no

boleto

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

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.

(7)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 7

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:

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.

CEDENTE

HSBC

SACADO

2. Cedente efetua uma REQUISIÇÃO

INTERNA para o link de geração de boleto do HSBC

3. HSBC devolve PDF com o boleto gerado

4. Cedente captura PDF retornado e o apresenta em uma página hospedada no seu servidor 1. Efetua requisição para uma página hospedada no servidor do cedente

5. Cedente apresenta boleto gerado como se o mesmo fosse gerado em seu servidor

(8)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 8

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.

(9)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 9

12. ANEXO I -

Check List de Integração

1 A conexão deve obrigatoriamente ser SSL (Porta 443)

2

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

maiúsculas e minúsculas. O ServletState deve ser passado juntamente do endereço

(URL), e os demais na linha do POST.

3

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

diretamente do browser do cliente para o nosso sistema. (Referrer, JavaScript,

etc.).

(Vide as figuras ao final deste documento)

4

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

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.

(10)

Gateway de Pagamentos HSBC – Julho/2014

(11)

Gateway de Pagamentos HSBC – Julho/2014

(12)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 12

13. ANEXO II - Exemplo de desenvolvimento ASP

<%@language=VBScript%>

<html> <head>

<title>gera_boleto</title> <style>

body { margin: 20px; font: 11pxsans-serif; color: #000; }

th { font: bold11pxsans-serif; color: #000; padding: 4px10px; border-bottom: 1pxsolid#9E9E9E; }

td { font: 11pxsans-serif; color: #000; text-align: right; padding: 4px10px; border-bottom: 1pxsolid#9E9E9E; }

hr { border: 10px020px0; color: #9E9E9E; background-color: #9E9E9E; height: 1px; width: 100%; }

#erro { font: bold16pxsans-serif; color: #F00 }

.tit { font: bold16pxsans-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 ");

(13)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 13

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á.

(14)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 14

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á.

(15)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 15

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";

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-8");

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-8");

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");

(16)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 16

data += "&" + URLEncoder.encode("numeroSacado", "UTF-8") + "=" + URLEncoder.encode(numeroSacado, "UTF-8"); data += "&" + URLEncoder.encode("complementoSacado", "UTF-8") + "=" + URLEncoder.encode(complementoSacado,

"UTF-8");

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á.

(17)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 17

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;

(18)

Gateway de Pagamentos HSBC – Julho/2014

© Copyright HSBC Bank Brasil S.A. - Banco Múltiplo 2011 – Todos os direitos reservados.

PUBLIC - 18

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á.

Referências

Documentos relacionados

Além desta verificação, via SIAPE, o servidor assina Termo de Responsabilidade e Compromisso (anexo do formulário de requerimento) constando que não é custeado

No primeiro capítulo a pesquisa se concentrou no levantamento de dados da escola no Projeto Político Pedagógico (PPP) e análise dos indicadores do SPAECE. No

De acordo com o Consed (2011), o cursista deve ter em mente os pressupostos básicos que sustentam a formulação do Progestão, tanto do ponto de vista do gerenciamento

Para preservar a identidade dos servidores participantes da entrevista coletiva, esses foram identificados pela letra S (servidor) e um número sequencial. Os servidores que

O score de Framingham que estima o risco absoluto de um indivíduo desenvolver em dez anos DAC primária, clinicamente manifesta, utiliza variáveis clínicas e laboratoriais

O Tech Visa é uma medida StartUP Portugal + iniciada a 1 de janeiro de 2019, com vista à certificação de empresas tecnológicas e inovadoras para efeitos de concessão de

Neste estágio, assisti a diversas consultas de cariz mais subespecializado, como as que elenquei anteriormente, bem como Imunoalergologia e Pneumologia; frequentei o berçário

4.2.9 Ações do Tribunal de Contas no Município Foi pesquisado aqui, se a população tinha conhecimento das atribuições que o Tribunal de Contas da Paraíba realiza no município