Escolar Documentos
Profissional Documentos
Cultura Documentos
Versão 2.01
2
Índice
1. Objetivo ........................................................................................................................................... 4
2. Cenário geral.................................................................................................................................... 5
2.1. Configuração inicial da biblioteca ............................................................................................ 5
2.2. Ciclo de Vida da Transação....................................................................................................... 5
3. Particularidades para cada plataforma ........................................................................................... 7
3.1. Android ..................................................................................................................................... 7
3.1.1. Utilização da classe br.com.softwareexpress.sitef.android.CliSiTefI ................................... 9
3.1.2. Acessando a clisitef em outras atividades (Activity) ............................................................ 9
3.1.3. Configurando a clisitef para acesso a PinPads ................................................................... 10
3.1.4. Pareamento com o PinPad Bluetooth ................................................................................ 13
3.2. IOS .......................................................................................................................................... 14
3.2.1. Ingenico iSMP/iCMP ........................................................................................................... 14
3.2.2. PAX D200 ............................................................................................................................ 14
3.2.3. Gertec Mobipin ................................................................................................................... 15
3.2.4. Datecs Bluepad ................................................................................................................... 15
3.3. Windows Phone ..................................................................................................................... 16
3.3.1. Utilização da classe CliSiTefPRC.CliSiTef ............................................................................. 16
3.3.2. Integração com PinPad Bluetooth ...................................................................................... 18
4. Funções disponíveis ....................................................................................................................... 19
4.1. Android ................................................................................................................................... 19
4.2. iOS .......................................................................................................................................... 20
4.3. Windows Phone (8 e 8.1) ....................................................................................................... 21
5. Confirmação da transação: Processo Iterativo.............................................................................. 22
6. Arquivo de configuração: CLSIT ..................................................................................................... 23
6.1. Trace ....................................................................................................................................... 23
6.2. Android ................................................................................................................................... 23
6.3. IOS .......................................................................................................................................... 24
6.4. Windows Phone ..................................................................................................................... 25
7. Problemas comuns ........................................................................................................................ 26
7.1. Problemas de comunicação com os Pinpads ............................................................................. 26
3
1. Objetivo
Este documento descreve como utilizar os portes da CliSiTef para plataformas móveis de forma a
atender as particularidades dos diferentes smartphones e dispositivos móveis. Para um completo
entendimento destes portes é pré-requisito o domínio total da interface de acesso ao SiTef via DLL descrita
no documento “SiTef - Interface Simplificada com a aplicação”.
4
2. Cenário geral
2.1. Configuração inicial da biblioteca
A Aplicação deve inicialmente configurar a CliSiTef, através da função ConfiguraIntSiTefInterativoEx(),
passando IP do SiTef, código de empresa/terminal e parâmetros adicionais (descritos posteriormente neste
documento).
Normalmente este procedimento é necessário apenas quando a aplicação sobe pela primeira vez, ou
quando os parâmetros de IP do SiTef/empresa/terminal são alterados dinamicamente.
5
4. Processo Iterativo para confirmação/não-confirmação – valem as mesmas características descritas
no passo 5.
6
3. Particularidades para cada plataforma
3.1. Android
Observação: até a versão da clisitef 4.0.112.38 (inclusive), a plataforma Android utilizava uma outra
estrutura de arquivos e componente .jar. Para maiores informações sobre esta e outras versões anteriores,
consulte o documento “SiTef - Interface CliSiTef Mobile - v1.21.pdf”.
Para utilizar a CliSiTef em aplicações Android, é necessário incluir as seguintes bibliotecas no projeto:
1. clisitef-android.jar
2. libclisitef.so
A CliSiTef é acessada pela Automação através da componente Java, formada pelo pacote ‘clisitef-
android.jar’. Além da parte Java, existe um módulo que implementa a translação do mundo java para o
ambiente nativo do Android por meio de JNI. Este módulo é implementado pela biblioteca ‘libclisitef.so’.
Importante: caso o desenvolvedor esteja usando a IDE do Eclipse, vale ressaltar que as bibliotecas
dinâmicas .so devem ficar na pasta correspondente à arquitetura.
7
Já o arquivo ‘clisitef-android.jar’, independente de plataforma, pode ser colocado na pasta \libs do
projeto.
Exemplo típico da estrutura de arquivos em um projeto Android:
\assets\CLSIT
\libs\clisitef-android.jar
\libs\armeabi\libclisitef.so
\libs\armeabi-v7a\libclisitef.so
\libs\arm64v8\libclisitef.so
\libs\mips\libclisitef.so
\libs\mips64\libclisitef.so
\libs\x86\libclisitef.so
\libs\x86_64\libclisitef.so
Foi desenvolvida uma classe especial para Android, a fim de abstrair as necessidades de acesso ao
pinpad bluetooth e usb, tornando a utilização transparente para a aplicação.
br.com.softwareexpress.sitef.android.CliSiTefI
Acompanha também java-doc do pacote, que pode ser incorporada no Eclipse de forma a facilitar a
indicação dos argumentos dos métodos durante seu desenvolvimento.
Para facilitar a integração com a aplicação, somente um sub-conjunto de métodos ficará disponível
neste primeiro momento.
8
3.1.1. Utilização da classe br.com.softwareexpress.sitef.android.CliSiTefI
Para acoplar a classe à sua aplicação, basta chamar o construtor, passando como parâmetro o
contexto da aplicação.
Para receber eventos adicionais (como mudanças de status de conexão do PinPad), atribua um
android.os.Handler apropriado.
A tabela abaixo ilustra a lista de eventos enviados a aplicação para interface com o PinPad. Alguns
eventos podem ou não ser devolvidos, dependendo de cada PinPad.
Importante: a comunicação com pinpad´s USB só é possível em dispositivos Android com SDK 12 ou
superior.
Para manter compatibilidade com versões anteriores, a clisitef adota a seguinte heurística de
conexão:
1. Tenta-se obter a lista de dispositivos USB conectados.
2. Se reconhecer algum dos PinPads USB da lista acima, tenta-se fazer a conexão.
3. Se não obter um dispositivo válido, tenta obter um pinpad Bluetooth. Note que, neste caso, a
interface Bluetooth será automaticamente ligada. Além disso, a aplicação deve possuir
permissões no manifesto do projeto (veja a seção abaixo).
Para forçar a utilização da clisitef com exatamente um tipo de conexão com o pinpad (Bluetooth ou
USB), indique nos parâmetros adicionais do método configuraIntSiTefInterativoEx() o parâmetro
TipoPinPad, conforme a tabela abaixo:
Exemplo:
10
CliSiTef = new CliSiTefI(this.getApplicationContext ());
CliSiTef.configuraIntSiTefInterativoEx ("10.100.100.108", "00000000",
"SE000001", "[TipoPinPad=ANDROID_BT;]");
Na versão Android, a aplicação pode passar o endereço MAC da interface bluetooth do pinpad a ser
utilizado.
Esta funcionalidade pode ser interessante para acelerar o processo de conexão com um pinpad
específico, previamente pareado com o smartphone.
Para tanto, passe nos parâmetros adicionais do método configuraIntSiTefInterativoEx() o parâmetro
PinPad.MAC com o MAC Address correspondente.
Exemplo:
Nota: não há distinção entre maiúsculos e minúsculos, no nome do parâmetro ou de seu valor.
É importante ressaltar que os demais pinpads previamente pareados não serão utilizados.
Entretanto, se for habilitada a utilização de pinpad usb (via configuração anterior), poder-se-á utilizar o
pinpad USB que for reconhecido.
Na versão iOs, a aplicação pode passar o número serial do pinpad a ser utilizado.
Esta funcionalidade pode ser interessante para acelerar o processo de conexão com um pinpad
específico, previamente pareado com o iPhone.
Para tanto, passe nos parâmetros adicionais do método ConfiguraIntSiTefInterativo da classe
ClisitefAsynco parâmetro PinPad.SERIAL com o número serial do pinpad desejado.
Exemplo:
[clisitef ConfiguraIntSiTefInterativo : @”192.168.0.1"
pCodigoLoja:@”11111111” pNumeroTerminal:@”00000001”ConfiguraResultado:0
pParametrosAdicionais:@”[PinPad.SERIAL=1234567890];"];
É importante ressaltar que os demais pinpads previamente pareados não serão utilizados.
11
Depuração da aplicação ao usar um pinpad USB
Para depuração da aplicação com pinpad´s USB, muitas vezes será necessário colocar o dispositivo
para depuração TCP/IP, ao invés do convencional cabo USB. Neste caso, siga os passos abaixo:
1. Conecte o aparelho no computador com o cabo USB.
2. Certifique-se que o dispositivo está com o modo “Depuração de USB” habilitado.
3. Rode o comando:
adb tcpip 5555
4. Digite o comando de conexão ao dispositivo wifi, indicando seu IP (note que o DHCP pode dar IP´s
dinâmicos a cada conexão):
adb connect <IP do dispositivo Android>
Pronto, desta forma deve ser possível fazer a depuração wi-fi pelo Eclipse.
Para retornar o adb ao modo USB, conecte o dispositivo novamente na porta USB de seu
computador, e digite:
adb usb
Outras informações:
http://developer.android.com/guide/topics/connectivity/usb/index.html
12
3.1.4. Pareamento com o PinPad Bluetooth
Para garantir acesso aos recursos de Bluetooth e redes requeridos pela clisitef na sua aplicação, é
necessário adicionar algumas permissões no manifesto do projeto (arquivo .xml):
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
Para que a CliSiTef possa utilizar os pinpads Bluetooth suportados os mesmos devem ser pareados
nas configurações do Android, cada pinpad possui uma forma de pareamento e obtenção do pin, as
instruções para configuração dos pinpads deverão ser obtidas com os fabricantes.
13
3.2. IOS
15
3.3. Windows Phone
A CliSiTef é disponibilizada no ambiente Windows Phone (8.0 ou 8.1) através de um Windows Phone
Runtime Component. Este componente disponibiliza métodos equivalentes à documentação da CliSiTefI.
Para utilizar a CliSiTef em aplicações Windows Phone, é necessário incluir no projeto os arquivos:
1. CliSiTefPRC.dll
2. CliSiTefPRC.winmd
Para utilizar a CliSiTef na aplicação Windows Phone, basta chamar o construtor da classe CliSiTef,
usando o namespace CliSiTefPRC.
O evento OnNotify permite que a aplicação seja notificada de eventos adicionais (como mudanças de
status de conexão do PinPad). Para utilizar, basta incluir um método que siga a interface abaixo:
16
Exemplo:
...
clisitef.OnNotify += clisitef_OnNotify;
17
3.3.2. Integração com PinPad Bluetooth
Para garantir acesso aos recursos de Bluetooth e redes requeridos pela CliSiTef na sua aplicação, é
necessário incluir as capacidades ID_CAP_NETWORKING e ID_CAP_PROXIMITY no manifesto do projeto
(arquivo WMAppManifest.xml).
A versão Windows Phone também permite que a aplicação passe o endereço MAC da interface
bluetooth do pinpad a ser utilizado.
Esta funcionalidade pode ser interessante para acelerar o processo de conexão com um pinpad
específico, previamente pareado com o smartphone.
Para tanto, passe nos parâmetros adicionais do método ConfiguraIntSiTefInterativoEx() o parâmetro
PinPad.MAC com o MAC Address correspondente.
Exemplo:
É importante ressaltar que os demais pinpads previamente pareados não serão utilizados, mesmo no
caso em que o pinpad indicado esteja desligado.
18
4. Funções disponíveis
Neste capítulo estão listadas as funções da clisitef disponíveis nas plataformas móveis.
4.1. Android
Retorno Função
int carregaArquivosTraducao (java.lang.String arqTraducao)
Permite carregar um novo arquivo de mensagens para localização/tradução.
int carregaArquivosTraducao (java.lang.String arqTraducao,
java.lang.String arqTraducaoCielo)
int configuraIntSiTefInterativoEx (java.lang.String enderecoSiTef,
java.lang.String codigoLoja, java.lang.String numeroTerminal,
java.lang.String parametrosAdicionais)
int continuaFuncaoSiTefInterativo (java.lang.String buffer, int continuaNavegacao)
int correspondenteBancarioSiTefInterativo (java.lang.String cupomFiscal,
java.lang.String dataFiscal, java.lang.String horario, java.lang.String operador,
java.lang.String restricoes)
int descarregaMensagens ()
int escreveMensagemPermanentePinPad (java.lang.String mensagem)
int finalizaTransacaoSiTefInterativoEx(int confirma, java.lang.String cupomFiscal,
java.lang.String dataFiscal, java.lang.String horario,
java.lang.String parametrosAdicionais)
int iniciaFuncaoSiTefInterativo (int modalidade, java.lang.String valor,
java.lang.String cupomFiscal, java.lang.String dataFiscal, java.lang.String horario,
java.lang.String operador, java.lang.String restricoes)
int leCartaoDiretoSeguro (java.lang.String mensagem)
int leSenhaDireto (java.lang.String chaveSeguranca)
int leSimNaoPinPad (java.lang.String mensagem)
int obtemInformacoesPinPad ()
int obtemQuantidadeTransacoesPendentes (java.lang.String dataFiscal,
java.lang.String cupomFiscal)
int obtemVersao ()
Esta função é utilizada pelo terminal para obter as versões da CliSiTef e CliSiTefI.
Em caso de sucesso (retorno 0) utilize os métodos getVersaoCliSiTef() e
getVersaoCliSiTefI().
int pinpadConecta ()
19
int pinpadDesconecta ()
void setMessageHandler (android.os.Handler hndMessage)
Grava um handler para recepção de eventos genéricos
int validaCampoCodigoEmBarras (java.lang.String codigoEmBarras)
Int verificaPresencaPinPad()
4.2. iOS
As funções abaixo são as chamadas fornecidas pela classe ClisitefAsync, as chamadas a essas
funções são assíncronas, portanto para obter os resultados das chamadas é necessário
implementar os métodos delegate de retorno correspondentes descritos na definição da classe.
Função Delegate de Retorno
ConfiguraIntSiTefInterativo: (NSString*)pEnderecoIP respostaConfigura: (int)pResposta;
pCodigoLoja:(NSString*) pCodigoLoja
pNumeroTerminal:(NSString*) pNumeroTerminal
ConfiguraResultado:(short)ConfiguraResultado
pParametrosAdicionais:(NSString*)
pParametrosAdiionais;
IniciaFuncaoSiTefInterativo: (int)pModalidade respostaInicia: (int)pResposta;
pValor:(NSString*)pValor
pNumeroCupomFiscal:(NSString*)pNumeroCupomFiscal
pDataFiscal:(NSString*)pDataFiscal
pHorario:(NSString*)pHorario
pOperador:(NSString*)pOperador
pRestricoes:(NSString*)pRestricoes;
ContinuaFuncaoSiTefInterativo: (int)pContinua respostaContinua: (int)pResposta
pBuffer:(NSString*)pBuffer; pComando:(int)pComando
pTipoCampo:(long)pTipoCampo
pTamanhoMinimo:(short)pTamanhoMinimo
pTamanhoMaximo:(short)pTamanhoMaximo
pBuffer:(NSString*)pBuffer;
FinalizaTransacaoSiTefInterativo: (int)pConfirma respostaFinaliza;
pNumeroCupomFiscal:(NSString*)pNumeroCupomFiscal
pDataFiscal:(NSString*)pDataFiscal
pHorario:(NSString*)pHorario;
FinalizaTransacaoSiTefInterativoEx: (int)pConfirma respostaFinalizaEx: (int)pResposta;
pNumeroCupomFiscal:(NSString*)pNumeroCupomFiscal
pDataFiscal:(NSString*)pDataFiscal
pHorario:(NSString*)pHorario
pParametrosAdicionais:
20
(NSString*)pParametrosAdicionais;
LeCartaoSeguro: (NSString*)pMensagem; respostaLeCartaoSeguro:(int)Resultado;
LeSenhaDireto: (NSString*)pChave; respostaLeSenhaDireto:(int)Resultado
Senha:(NSString*)Senha;
Retorno Função
int CarregaArquivosTraducao (String^ arqTraducao)
Permite carregar um novo arquivo de mensagens para localização/tradução.
Na versão inicial, o arquivo deve ser carregado na pasta Assets da aplicação, indicando também
esta pasta no parâmetro arqTraducao. Exemplo:
clisitef.CarregaArquivosTraducao (“Assets\\mensagens_pt-br.txt”);
21
5. Confirmação da transação: Processo Iterativo
Nas versões Mobile, a CliSiTef irá realizar a confirmação da transação de modo diferente, por meio
da função FinalizaTransacaoSitefInterativoEx.
Se o retorno for 10000, deve-se chamar a função ContinuaFuncaoSitefInterativo e o processo
interativo deverá ser retomado. Enquanto a CliSiTef retornar 10000, a chamada deve ser repetida até que
o valor de retorno seja 0, indicando que tudo ocorreu bem, ou diferente de 0 e de 10000, indicando que
ocorreu alguma interrupção anormal. Os parâmetros desta função são:
22
6. Arquivo de configuração: CLSIT
6.1. Trace
Por padrão a gravação de informações de trace é desabilitada, para habilitar a gravação de traces
para diagnóstico de problemas pela equipe da Software Express, deve-se adicionar as seguintes
configurações no arquivo CLSIT:
[CliSiTef]
HabilitaTrace=1
[CliSiTefI]
HabilitaTrace=1
[PinPad]
HabilitaTrace=1
ChaveTrace= <Neste campo deve ser informada uma chave fornecida pelo suporte
técnico da Software Express>
Consulte as seções seguintes para maiores informações sobre traces para cada plataforma.
6.2. Android
O arquivo de configuração da CliSiTef (CLSIT) deverá ser incluído como um ‘asset’ da aplicação. Ao
instanciar a classe br.com.softwareexpress.sitef.android.*.CliSiTefI, este arquivo será copiado
automaticamente para a pasta ‘files’ da área de dados especificada para a aplicação:
/data/data/(package)/files.
Até a versão 1.007 da jclisitef-android.jar, era necessário especificar a área de dados da aplicação (
/data/data/(package) ).
Esta configuração era passada para a CliSiTef como um parâmetro adicional pelo método
ConfiguraIntSiTefInterativoEx, seguindo o formato: “[DiretorioApp=...]”.
Exemplo:
23
A partir da versão 1.008 da jclisitef-android.jar (2.000 da clisitef-android.jar), este valor é obtido
internamente, caso a automação não a configure.
Para geração e obtenção dos dados de trace em dispositivos Android, é necessário indicar a pasta
destino onde será gerado o trace. Isto é feito na seção CliSiTef, item DiretorioTrace.
No exemplo abaixo, configuramos a clisitef para armazenar o trace na memória interna do
dispositivo:
[CliSiTef]
DiretorioTrace=/sdcard
Importante: para que a clisitef gere o trace na memória interna, a aplicação deve ter permissão para
escrita. Isto é feito no arquivo AndroidManifest.xml de sua aplicação.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="..."
android:versionCode="1"
android:versionName="1.0">
...
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
...
</manifest>
6.3. IOS
O arquivo de configuração da CliSiTef (CLSIT) deverá estar localizado na pasta da aplicação (<Nome
da aplicação>.app), como um bundle resource.
O CLSIT e os arquivos de Trace podem ser transferidos do dispositivo utilizando-se aplicativos que
permitem acesso aos arquivos dos dispositivos iOS como por exemplo o iExplorer disponível para Windows
e Mac em http://www.macroplant.com/iexplorer/ (a versão 2.0 é freeware e ainda pode ser obtida pelo
site na seção de produtos descontinuados)
Os arquivos de trace serão gravados em: <Dispositivo>/apps/<nome do aplicativo>/Library
No caso dos simuladores os arquivos de Trace podem ser obtidos diretamente pelo sistema de
arquivos do Mac de desenvolvimento no caminho: /Users/<nome do usuário>/Library/Application
Suport/iPhone Simulator/<Versão>/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX/Library
24
6.4. Windows Phone
O arquivo de configuração da CliSiTef (CLSIT) deve ser incluído como um ‘asset’ na aplicação.
Para isso, certifique-se que a CLSIT esteja presente na pasta “Assets” de seu projeto, com a
propriedade “Build Action” configurada para “Content”.
Já na versão inicial desta plataforma, não é necessário informar a configuração “DiretorioApp”. O
componente internamente identificará a pasta da aplicação, e a localização do arquivo CLSIT.
Por uma limitação da versão inicial, os traces são gravados internamente na Isolated Storage da
aplicação.
Para recuperar o arquivo, deve-se utilizar a ferramenta Isolated Storage Explorer (isetool.exe),
normalmente instalada na pasta
Além disso, é necessário utilizar o código de produto (product id) da aplicação. Este código pode ser
obtido no arquivo Manifest do projeto.
O comando para recuperar os dados da Isolated Storage é:
isetool ts de <product-id>
exemplo:
isetool ts de {7ad8ab6a-50c3-4315-a7ca-7d544cd25412}
Outras informações:
http://msdn.microsoft.com/en-us/library/windows/apps/hh286408%28v=vs.105%29.aspx
25
7. Problemas comuns
26