Ir para o conteúdo

FAQ - SDK


Onde posso encontrar a documentação da PayStore?

A documentação da Paystore (API, SDK) deve ser acessada através do Portal Paystore, basta logar com suas credenciais de desenvolvedor.

Qual o ambiente de desenvolvimento (IDE) usado pela PayStore?

Recomendamos o uso do Eclipse, as versões homologadas atualmente são: Marks, Neon e Oxygen.

Qual a URL para a instalação do plugin no Eclipse?

http://177.69.97.18:3434

Posso usar a mesma configuração de um terminal em outro?

Não. Cada terminal precisa de um número único e previamente cadastrado. Do contrário, será apresentada a mensagem "Sequencial inválido".

Para que serve o arquivo PP.DAT?

Este arquivo contém informações de leitura de um cartão magnético e com chip. É utilizado para simular a leitura dos cartões no Emulador.

Por padrão, as informações dentro do arquivo estão comentadas. Caso seja necessário, vá em "Run Configuration" no seu Eclipse, com o plugin instalado, e, na sua configuração (PhScript POS VM), escolha opção desejada no “Card Emulator”.

image alt text

Esse arquivo foi criado para evitar a necessidade de se utilizar um PinPad no Emulador.

O Emulador também aceita colar o número do cartão (CTRL-V) no lugar da digitação dos números.

Não estou conseguindo fazer transações ou inicializar o terminal. O que pode ser?

Verifique as configurações de comunicação do terminal conforme abaixo:

INCLUIR TEXTO COM A SEQUÊNCIA DE MENUS E PARÂMETROS.

Para instalar a aplicação em um terminal físico, é necessário ter um cartão SD?

Não. Os terminais convencionais não suportam cartão SD.

Se a carga estiver na sua máquina, use um cabo USB ou serial, dependendo do modelo do terminal.

Os terminais Verifone suportam carga via pendrive.

Os terminais PAX não suportam carga via pendrive.

**O terminal está exibindo "Número de série inválido". O que pode ser? **

Provavelmente, está faltando o cadastro desse terminal na PayStore. Solicite que seu terminal seja cadastrado.

Se o problema persistir, contate o Suporte.

Por que está ocorrendo o erro "Bad request"?

Contate o Suporte informando data, hora e serial do equipamento, para que possamos investigar a causa desse problema.

Existe alguma forma de fazer a atualização da aplicação sem ser pela USB?

Sim. Através do sistema de carga remota, chamado de PhDM, é possível realizar cargas no terminal remotamente.

Se a necessidade é apenas instalar um App, basta colocá-lo na loja de aplicativos para ser baixado no terminal, sem precisar dar carga local ou executar atualização remota no terminal.

É possível efetuar a primeira carga via o sistema de telecarga (****PhDM**)?**

Não. A primeira carga deve ser feita por carga local, via USB ou serial.

Que aplicação eu devo carregar inicialmente no terminal?

Você vai receber um pacote que contém as seguintes aplicações:

  • PhVM: Máquina virtual responsável por executar/interpretar todos as demais aplicações escritas em Script.

  • PhAST: Aplicação principal.

  • App Tef: Aplicação financeira.

  • App PayStore: Aplicação responsável por conversar com a loja de aplicativos.

  • Apps dos adquirentes: São várias aplicações específicas para cada adquirente homologado na PayStore.

Esse pacote de aplicações é disponibilizada por nossa equipe de Suporte.

Como eu carrego a aplicação no terminal?

Verifique o documento "\Guias\Processo de carga" no GitLab através do link: https://gitlab.com/phoebus/phscript-sdk/blob/master/SDK/Guias/Processo%20de%20carga/ProcessoCarga.md

Onde consigo os drivers Windows para dar carga via USB nos terminais?

Entre em contato com o fabricante ou fornecedor dos seus terminais para solicitar os drivers.

Eu posso fazer uma venda digitando o número do cartão de crédito ou débito?

Depende. Se o adquirente permitir transações digitadas, sim. Por exemplo, a Global Payments e Adiq permitem transações digitadas. Já a Stone, não permite.

Por que está ocorrendo a mensagem "Operação manual não permitida"?

Provavelmente, você tentou fazer uma transação de venda digitada e o adquirente não permite.

Como posso simular a captura de um cartão no terminal virtual (Emulador)?

Será necessário utilizar o arquivo PP.DAT que contém informações de leitura de um cartão magnético e com chip. Esse arquivo é utilizado para simular a leitura dos cartões no Emulador.

Por padrão, as informações dentro do arquivo estão comentadas. Para utilizar, vá em "Run Configuration" no seu Eclipse, com o plugin instalado, e, na sua configuração (PhScript POS VM), escolha opção desejada no “Card Emulator”.

Esse arquivo foi criado para evitar a necessidade de se utilizar um PinPad no Emulador.

O Emulador também aceita colar o número do cartão (CTRL-V), no lugar da digitação dos números.

É possível carregar um App específico assim que o terminal for ligado?

Sim, é preciso sobrescrever a função outset().

Veja um exemplo abaixo:

/******************************************************************/

/* Função chamada no main da VM após as chamadas de main dos Apps, juntamente

  • com presentation da VM, junto dos demais Apps na VM, seguindo ordem de inicialização

  • @return invalid, true ou false

*/

extern function outset()

{

  • Coloque aqui a chamada de seu App.

return true;

}

/******************************************************************/

É possível configurar meu App para sempre ser exibido e tomar o controle do terminal, semelhante a um **_launcher _****do Android? **

Sim, isso seria como um terminal Android em modo Quiosque.

É necessário implementar a função "onIdleRefresh()" e “onIdle()”. Dessa maneira, mesmo que o usuário saia da aplicação, ela será reexecutada logo em seguida.

Veja um exemplo de como implementar:

/******************************************************************/

/* Função chamada ao final do primeiro draw da tela de Idle, junto dos demais Apps na VM,

  • seguindo ordem de inicialização

*/

extern function onIdle()

{

  • Coloque aqui a chamada de seu App.

}

/******************************************************************/

/* Função chamada ao final de cada refresh da tela de Idle, junto dos demais Apps na VM,

  • seguindo ordem de inicialização

*/

extern function onIdleRefresh()

{

  • Coloque aqui a chamada de seu App.

}

/******************************************************************/

Como carrego um App num terminal físico?

Após finalizar o desenvolvimento do App, clique no botão Generate Package no Eclipse image alt text.

Será gerada uma pasta "\dist" dentro do seu projeto com duas subpastas, uma com a carga local e outra para a distribuição do seu App para publicação na PayStore.

Dentro da pasta "\dist\Carga Local", será criada uma pasta com o modelo do seu terminal.

Onde devo colocar as imagens do App e outros recursos?

Na pasta \res do projeto.

Quais são os formatos de imagens suportados pelos Apps?

Atualmente, apenas BMP 24 bits.

Por que minha imagem não está sendo exibida?

Verifique se sua imagem está dentro da pasta \res do projeto.

Verifique se a imagem é do tipo BMP de 24bits.

Verifique se o tamanho da imagem não é maior que o tamanho do frame (tamanho do display do terminal, por exemplo, 240 x 320).

Verifique se o nome de referência da imagem no arquivo .jcss está correto.

É possível customizar um componente visual, por exemplo, um menu, uma lista, um input, etc.?

Sim. Basta criar um projeto de skin e customizá-lo de acordo com sua necessidade.

A PayStore usa o conceito de skin. É neste projeto que você pode mudar cores, imagens, fontes, etc.

É possível trocar a fonte de um componente visual?

Sim. Basta criar um arquivo .jcss no seu projeto e definir a fonte desejada.

Vide documentação para verificar a forma de implementar.

Qual o formato de cores suportado?

A representação da cor é um número (base decimal).

Abaixo, há ferramentas online que permitem converter representação de cores em formato hexadecimal (comumente utilizado em arquivo .css) para o formato decimal utilizado na PayStore.

http://www.rinkydinkelectronics.com/calc_rgb565.php

http://www.binaryhexconverter.com/hex-to-decimal-converter

http://palettegenerator.com/

Onde posso encontrar as propriedades de um componente visual utilizado pelo App?

Além da documentação, é possível verificar o arquivo chamado JCSS dentro da pasta \work. Este arquivo é o padrão de layout.

Posso alterar o arquivo JCSS?

Não. Esse arquivo não deve ser alterado, pois, sempre que o terminal é inicializado, este arquivo é sobrescrito.

Se você deseja alterar as propriedades do arquivo JCSS, é possível sobrescrever as propriedades deste arquivo criando seu próprio arquivo de layout .jcss na pasta \res de seu projeto. Vide documentação.

Por que meu App não está sendo executado no Terminal Emulador?

Provavelmente, sua pasta work (pasta de saída do seu terminal) está corrompida.

Para solucionar o problema, é necessário clicar no botão clean image alt text do plugin do Eclipse, para que sua pasta seja limpa. Após isso, é necessário configurar os dados do terminal novamente.

Quando um terminal for atualizado através de uma telecarga, é necessário reinstalar o(s) App(s) utilizados ou eles são inalterados?

Depois da telecarga, os Apps são sempre mantidos.

Quando publico um App que desenvolvi, ele fica disponível para todos os terminais da PayStore ou apenas para os terminais da minha empresa?

O seu App vai ficar disponível apenas para os terminais da sua rede. Esses níveis de visibilidade podem ser configuráveis através da PayStore. Essa configuração é chamada de "filtros de publicação" e podem ser aplicadas por: Cidade, Ramos de Atividade, Grupo de Lojistas ou Terminais específicos.

Posso definir o número do estabelecimento de acordo com o ID do meu cliente?

Sim, na PayStore pelo console do facilitador, você pode definir o identificador do estabelecimento no cadastro de lojistas de forma muito simples.

Como funciona a tela de idle?

A tela de idle tem uma importância fundamental na arquitetura da aplicação do terminal PayStore.

É nessa tela que a máquina virtual do terminal verifica algum cartão foi inserido ou passado no terminal, e também, se há algum evento para ser tratado. Dessa forma, as aplicações devem ser construídas evitando ficar muito tempo sem retornar para esta tela.

Tem como remover o botão "Sair" das telas com menu do terminal?

Sim. Para saber como fazer isso, veja o script "sampleui_menu.wmls" do projeto SampleUI.

Por que o terminal está mostrando a mensagem "ERRO DE EXECUÇÃO ****3**", quando executo meu App?**

Geralmente, esta mensagem de erro é mostrada quando há um erro na passagem de parâmetros na chamada de uma função.

Verifique a assinatura da função na documentação, para ver a quantidade e tipo dos parâmetros. Se o problema persistir, contate o suporte.

Qual o significado de cada Código que vem após a mensagem ERRO DE EXECUÇÃO?

Código Descrição
1 Ocorre quando chamadas remotas passam urls ou funções que não existem.
2 Uso interno da PhVM.
3 Ocorre quando o número de parâmetros não correspondem ao número de argumentos.
4 Ocorre quando a função não existe ou é chamada de forma externa por outro script e a função não possui o modificador "extern".
5 Ocorre quando a PhVM não encontrou o script compilado. Geralmente, há algum erro no import da url.

Para consultar todos os códigos possíveis de erro, consulte a seção "Exceções" na documentação.

**Posso efetuar requisições http? **

Sim. No plugin, ao criar um novo projeto, você encontra um exemplo utilizando o componente http.

**Eu gostaria que as transações financeiras fossem feitas sempre a partir do meu App. É possível, então, remover as opções default/padrão de crédito e débito do menu na tela de Idle? **

Sim. O serviço de integração "tef.enable" permite habilitar ou desabilitar as transações financeiras do terminal.

Posso mudar a ordem de captura das informações, por exemplo, capturar o valor antes de passar o cartão?

Sim, basta fazer a captura do valor antes de chamar a API de pagamento.

Posso alterar a logo do meu comprovante?

Sim, no seu projeto de skin, basta substituir a imagem PRINT.bmp pela logo que deseja. Essa imagem deve ser monocromática (1 bit/preto e branco).

Posso alterar a posição dos componentes visuais na tela?

Sim. No seu projeto de skin, pasta "res", existe um arquivo JCSS, localize o componente que deseja alterar e mude suas propriedades conforme desejado.

Como carrego um App na loja de aplicativos da PayStore?

Após finalizar o desenvolvimento do App, clique no botão "Generate Package" no Eclipse image alt text.

Será gerada uma pasta "\dist" dentro do seu projeto com duas subpastas, uma com a carga local e outra para a distribuição do seu App para publicação na PayStore.

Dentro da pasta "\dist\PayStore" estará o pacote “PH” que deve ser publicado na loja de aplicativos.

Após isso, você deve:

  • Acessar a loja de aplicativos com seu usuário desenvolvedor;

  • Menu aplicativos -> Aba "rascunho";

  • Adicionar seu respectivo App;

  • Aguardar que seu App seja homologado pelo facilitador da rede.

Não estou conseguindo executar os exemplos http. Como posso resolver isso?

Para executar os exemplos http, é necessário utilizar um servidor rest e configurar os exemplos de acordo com o IP e Porta desse servidor. Para isto, pode-se utilizar o json-server. Para mais informações, consulte no google sobre "json-server".

Como eu coloco um **_frame _**para fechar automaticamente após x segundos?

Basta adicionar ao frame um componente timer do pacote Timer "package://phui#components/timer.wmlsc". Para mais informações, consulte a documentação.

Como vejo a versão do SO (Sistema operacional) do meu terminal PAX?

Ao ligar o seu terminal, quando surgir a tela de SELF-TEST, aperte a tecla 2. Na tela de Main Menu, vá até a opção "4. Terminal Info". Na primeira tela, será exibido um QRCODE. Vá para a segunda tela, para consultar a versão do SO.

Exemplo de um SO da PAX:

OS:ProlinV2.4.85.5396R

TermAssist da PAX não consegue se conectar ao terminal, fica apresentando "Running error". O que pode ser?

Algumas vezes, há necessidade de executar o TermAssist, como administrador. Se, mesmo assim, apresentar erro, modifique a compatibilidade dele para Windows 7 e tente novamente.

Parece que a instalação da aplicação pelo TermAssist entrou em looping. Fica instalando o APP no terminal e não termina. O que pode ser?

Isso ocorre quando há algum problema no TermAssist. Feche o TermAssist e tente novamente executá-lo.

Como vejo a versão do plugin?

Acesse o Eclipse, no menu "Help", opção “Install New Software”, na janela que é mostrada, clique no link “already installed”.

Como adicionar informação extra ao terminal como, por exemplo, o "ID dos meus clientes"?

Para adicionar uma informação ao terminal, acesse o portal da PayStore, no menu "Configurações", selecione a opção “Campos Adicionais”.

Como capturar a informação de um campo adicional?

É preciso utilizar o componente com a declaração:

use url PSCfg "package://paystore#config/config.wmlsc"

e ler o campo dessa forma:

PSCfg#getProperty("nome do campo");

Para mais informações, consulte a documentação.

Como posso formatar um valor monetário?

Para formatar um valor, inicialmente é necessário declarar o módulo no seu script, conforme abaixo:

use url StringFormat "package://libs#ui/str_format.wmlsc";

E utilizar a função "getMoneyAsStringCurrency".

Exemplo:

StringFormat#getMoneyAsStringCurrency("1500", "R$", 2, ",", ".");

Para mais informações, consulte a documentação.

É possível alterar ou adicionar informações ao comprovante?

Isso depende da adquirente. Algumas adquirentes enviam o comprovante já formatado para ser impresso no terminal. Para outras adquirentes, é possível criar o comprovante no Servidor TEF, posicionando e formatando as informações da forma desejada.

A PayStore também suporta a impressão de comprovantes gráficos. Neste caso, o terminal POS utiliza as informações enviadas pela adquirente ou Servidor TEF, para formatar os comprovantes usando um layout gráfico. No layout gráfico, o desenvolvedor tem total liberdade de construir o comprovante.

Em todo caso, a alteração nos comprovantes ou o uso de comprovante gráfico deve ser submetido para validação pela adquirente, uma vez que a descaracterização do comprovante (modelo) pode ser encarada como um possível problema para ações futuras, tais como dificuldade na identificação das transações nas centrais de atendimento, possível bloqueio das bandeiras quanto aos dados informados no comprovante, etc. Por padrão, as adquirentes, normalmente, exigem que todas as informações presentes no seu comprovante original sejam preservadas no comprovante customizado pela subadquirente.

Como consigo capturar na minha transação o nome do cliente do cartão?

Através da propriedade "card.holder" da estrutura de resposta do pagamento.

Para mais informações, consulte o exemplo "Pagamentos" do SDK.

Como consigo capturar na minha transação o ID do adquirente?

Através da propriedade "acquire.id" da estrutura de resposta do pagamento.

Para mais informações, consulte o exemplo "Pagamentos" do SDK.

Como consigo capturar o NSU da adquirente da minha transação ?

Através da propriedade "payment.nsu.acquire" da estrutura de resposta do pagamento.

Para mais informações, consulte o exemplo "Pagamentos" do SDK.

Como consigo capturar a data da transação?

Através da propriedade "payment.datetime" da estrutura de resposta do pagamento.

Para mais informações, consulte o exemplo "Pagamentos" do SDK.

Como consigo capturar o tipo da transação se é crédito ou débito?

Através da propriedade "payment.type" da estrutura de resposta do pagamento, onde 1 - Crédito, 2 - Débito.

Para mais informações, consulte o exemplo "Pagamentos" do SDK.

Como consigo capturar o código de autorização da bandeira?

Através da propriedade "payment.auth" da estrutura de resposta do pagamento.

Para mais informações, consulte o exemplo "Pagamentos" do SDK.

Como consigo capturar o status da transação, para verificar se ocorreu sucesso ou erro?

Através da propriedade "result.error" da estrutura de resposta do pagamento, se vier vazio é porque a transação foi realizada com êxito.

Para mais informações, consulte o exemplo "Pagamentos" do SDK.

Quais informações eu consigo capturar como resposta da transação?

O App do exemplo "Pagamentos" que vem junto com o SDK, possui a estrutura completa dos campos que serão retornados para o terminal em uma transação de pagamentos.

Para mais informações, consulte o exemplo "Pagamentos" do SDK.

A API possui uma função "subString"?

Sim, a classe "String" fornece diversas funções que serão muito úteis no desenvolvimento de uma aplicação. Para mais informações, consulte a documentação do SDK.

Como posso pegar só uma parte da data?

Para manipular datas, inicialmente é necessário declarar o módulo no seu script, conforme abaixo:

"use url DateTime package://phast#utils/datetime.wmlsc".

E utilizar a função "dateTimeAsStr()".

Exemplo:

DateTime#dateTimeAsStr("YYYY", datetime);

Para mais informações, consulte a documentação.

O Emulador mostra a rede wi-fi REDE-01, mas não temos essa rede. O que significa?

De fato, essa rede wi-fi não existe. Ao selecionar, o Emulador vai, na verdade, usar a conexão Ethernet.

Qual o nome da linguagem utilizada para desenvolvimento das aplicações? A sintaxe é proprietária?

A linguagem utilizada para desenvolvimento das aplicações para os terminais POS é JAVA SCRIPT LITE, uma linguagem desenvolvida pela Phoebus que é baseada na WAP-194. Sua sintaxe é muito próxima a da linguagem JAVA SCRIPT, uma linguagem amplamente utilizada. Além dos recursos requeridos pela WAP-194, o JAVA SCRIPT LITE possui extensões que permitem ao desenvolvedor um fácil desenvolvimento.

Por que ao inserir o cartão no terminal é exibida uma tela para que seja selecionado crédito ou débito, ao invés de chamar meu App?

Isso acontece porque o cartão inserido é habilitado para as operações de crédito e débito. Neste caso, o fluxo EMV exige que o usuário informe qual operação ele quer executar. Você pode capturar o tipo de operação selecionado pelo usuário e passar para o seu App de maneira que essa informação não seja solicitada ao usuário novamente por sua aplicação.

Se o usuário inserir ou passar um cartão apenas de crédito ou apenas débito, a tela solicitando a seleção da operação não será exibida, uma vez que o terminal já sabe qual é a (única) operação presente no cartão inserido.

Como posso simular uma transação negada no ambiente de desenvolvimento?

Os emuladores dos ambientes de desenvolvimento estão configurados para negar transações com valores fracionados, dessa maneira você receberá uma transação negada pelo autorizador.

Quais as dimensões da tela de um terminal POS?

As dimensões podem variar de acordo com o modelo do terminal, por exemplo o terminal da PAX s920 possui uma tela de 240x320, assim como o terminal da Verifone Vx690. Já o D200 da PAX possui dimensão de 320x240.

Sobre a API de persistência, o banco de dados é relacional?

O banco de dados não é relacional. Utilizamos uma estrutura muito próxima a um banco de dados noSQL. Para mais informações, consulte a documentação e os exemplos do SDK.

Quais os tipos de campos suportados pela API de banco de dados?

A API suporta os tipos mais triviais já conhecidos em outras tecnologias, como também tipos complexos. Consulte a documentação na sessão "PhType". Lá, há uma lista completa dos tipos suportados.

Posso ter mais de uma tabela em um banco de dados?

Sim, na estrutura do seu banco de dados é possível criar uma estrutura aninhada com várias tabelas. Veja um exemplo:

image alt text

É possível fazer operações de CRUD com a API de banco?

Sim, é possível realizar operações como INSERT, UPDATE, DELETE e CONSULTAS.

Para mais informações, consulte a documentação.

Quais NSUs são retornados na resposta de uma transação?

Identificador Descrição
payment.nsu.client É o identificador da transação no Terminal. É um número único para cada transação. É um sequencial e não se repete. Não se repete para o mesmo terminal.
payment.nsu.server É o identificador da transação no Servidor. É um número único para cada transação. É um sequencial e não se repete.
payment.nsu.acquire É o identificador da transação no Adquirente. É um número único para cada transação. É um sequencial e não se repete.
payment.nsu.auth É o código de autorização da bandeira.

O que preciso para realizar uma transação usando https?

Para realizar uma transação https, é necessário passar como parâmetro da função o certificado fornecido pela sua autoridade certificadora. Como o terminal usa o protocolo OpenSSL, você precisa ter o certificado carregado no terminal dentro da pasta de "res" do seu App.

Por que eu preciso do certificado no terminal já que, pelo browser ou via PostMan, eu não preciso?

Os principais browsers já possuem alguns certificados das autoridades certificadoras e passam esse certificado para realizar a conexão no momento de sua requisição.

Qual o formato do certificado de segurança suportado em uma requisição https?

O formato padrão do certificado é Privacy Enhanced Mail (PEM), esse formato é codificado em base64. Se o certificado estiver em outro formato, verifique se o seu conteúdo está codificado em base64, caso contrário é necessário gerar um novo arquivo com formato ".pem", a partir do seu certificado.

Meu certificado expira a cada 3 meses. Vou precisar atualizar o certificado em cada terminal da minha rede?

Como o certificado carregado no terminal será o da sua Autoridade Certificadora, não precisará ser atualizado quando o seu certificado expirar. Só necessita ser atualizado no caso de mudança de Autoridade Certificadora.

Não estou conseguindo realizar requisições https, o que pode ser?

Verifique se você está passando como parâmetro o nome do certificado no seguinte formato NOMEApp_nomeCertificado.pem (o nome do App deve ser em caixa alta)

Verifique se o seu certificado está codificado em Base64. Geralmente, esses arquivos possuem uma extensão ".pem"

Verifique se seu certificado possui todas as autoridades certificadora. Uma maneira de verificar é através dos seguintes passos:

  • Acessar o seu endpoint pelo navegador.

  • No seu navegador, localize o detalhe do certificado, vai ser exibido quantas autoridades certificadoras assinaram o certificado.

  • Exporte a assinatura de cada autoridade certificadora separadamente, dessa forma será criado um arquivo para cada uma delas.

  • Concatene o conteúdo dos arquivos em um único arquivo ".pem".

  • Use o novo arquivo criado, ele possui a assinatura de todas as autoridades certificadoras.

O plugin do eclipse roda em outras plataformas, como Mac ou Linux?

Não, apenas em Windows.

Como funciona o escopo de variáveis, é possível ter um escopo por script?

As variáveis podem ser de escopo de função ou globais.

  • Escopo de função: Como o nome já diz, a variável só estará visível e disponível dentro da função onde foi declarada.

  • Escopo Global: A variável que está como *global *está visível e disponível a qualquer script que compõe o seu App. É possível definir uma variável como *global *através da função "PhSystem.setGlobal(key, value)". Para mais informações, consulte a documentação.

Algum motivo especial para as transações serem retornadas com o horário UTC (0000) ao invés do Brasileiro (-0300)?

Nesse caso, a API retorna a transação considerando o tempo universal coordenado (UTC). Sua camada de apresentação tem que pegar o seu time zone e fazer a adequação para exibir no seu horário. Essa é a forma que os sistemas usam para abstrair as diferenças de fuso entre os países.

Posso mudar as fontes da impressão do comprovante?

É possível mudar a formatação da fonte, através de TAGS de impressão, essas TAGS devem ser adicionadas no início de cada linha e devem estar dentro dos símbolos <> . Veja as opções disponíveis:

TAG DESCRIÇÃO
NSF Elemento que determina que a fonte da linha atual do comprovante deve ter um tamanho padrão.
DSF Elemento que determina que a fonte da linha atual deve ter o tamanho dobrado em relação ao tamanho padrão.
DHF Elemento que determina que a fonte da linha atual deve ter o dobro da altura de uma fonte normal.
DWF Elemento que determina que a fonte da linha atual deve ter o dobro da largura de uma fonte normal.
HL Elemento que determina que a linha atual deve ser composta de uma linha horizontal (útil para linhas de assinatura no comprovante).

Como faço para desinstalar um App?

no seu terminal siga os seguintes passos:

  1. Clique no botão da loja na tela de idle do terminal.

  2. Clique em payStore vai mostrar os Apps instalados e os Apps disponíveis.

  3. Clique em cima do App, vai ser exibido a opção para remover o App.

  4. Clique em Remover. O App será removido do terminal.

Porque não consigo da carga local do meu pacote no terminal de produção? obs: o mesmo pacote pacote funciona no terminal de testes.

Para dar carga local em um terminal de produção seu pacote precisa está assinado. Entre com contato com o seu fabricante para assinar o seu pacote.

Como faço para incrementar a versão do meu App?

No Eclipse faça:

  1. Clique com o botão direito em cima do seu projeto.

  2. Clique em Properties.

  3. Clique em Project Settings

Qual é o operador e senha para fazer o cancelamento (Estorno) de uma transação?

É o número do Estabelecimento (Lojista). Esse número pode ser confirmado através da função + 6 do terminal, opção Estabelecimento.

Existe suporte a comunicação via socket?

Sim, no projeto de exemplo "devices", existe um script chamado "ethernet.wmls" que mostra como abrir um socket.

Qual a quantidade exata de bytes que uma variável pode receber?

Obedece ao padrão utilizado em C, usando um terminador nulo \0. Conceitualmente seria o tamanho da memória disponível.

Qual a dimensão / pixel de um .bmp que pode ser impresso em um comprovante?

A largura máxima tanto de um aquivo .bmp quanto de um comprovante é de 384px.

Qual tamanho máximo que se pode carregar um arquivo .zip no POS, é possível criá-lo e extraí-lo via Java Script Lite apartir de um buffer recebido?

O padrão que utilizado no Java Script Lite é o .gzip e podemos receber e extrair normalmente.

Qual a capacidade máxima de linhas de um arquivo de save / persistência?

Tem a capacidade de 65000 registros.

É possível receber um arquivo binário / buffer de uma imagem e executar um file.open / file.write e criá-la em sua respectiva extensão?

Sim.

O que significa MID?

Identificador do estabelecimento junto a adquirente

O que significa TID?

Identificador do terminal junto a adquirente

Ao Instalar o plugin, os apps não estão sendo instalados no terminal Emulador?

Instale o 7zip, caso não esteja instalado. Após a instalação, adicione o seu caminho no Path do Windows. Se o problema persistir entre em contato com o suporte. Esse problema também pode ocorrer se você estiver usando o Windows 32 bits. Se for utilizar uma máquina virtual, utilize a versão 64 bits do Windows.

Como faço para diminuir o consumo de bateria da minha aplicação?

Um dos grandes responsáveis pelo consumo de bateria de um terminal móvel é a iluminação da tela. Pode-se reduzir o consumo da tela de duas maneiras:

  • Definir um timeout para ociosidade na sua aplicação. Dessa forma, se o seu app ficar por alguns segundos (parametrizável) ocioso, a tela pode ser fechada indo para tela de Idle, que escurece ou apaga completamente, depende do modelo do dispositivo, o display do terminal em caso de ociosidade.

  • Controlar via app o momento de escurecer o display do terminal, através do comando PhDisplay.light(). Para mais informações, consulte a documentação.

Como eu configuro o Emulador de Terminal no Eclipse?

Para configurar o Emulador de Terminal, siga os passos abaixo:

  1. Acesse o Portal do Facilitador;
  2. Crie um lojista;
  3. Crie um terminal lógico;
  4. Cadastre o terminal físico do Emulador de Terminal;
  5. Execute no Emulador de Terminal, FUNÇÃO 1. Em seguida, selecione o menu EQUIPAMENTO. Observe o campo “Número Serial do Terminal”;
  6. Associe o terminal físico ao terminal lógico;
  7. Escolha o tipo de comunicação como S920_WIFI.

No Emulador de Terminal:

  1. Rode o Emulador de Terminal no Eclipse;
  2. Quando abrir a tela principal, escolha a opção 3 - XXXXXXXXX;
  3. Em seguida, o Emulador de Terminal exibe a lista de redes Wifi disponíveis;
  4. Escolha a rede: Rede 01;
  5. Informe a senha: 01010101;
  6. Volte para tela inicial do Emulador de Terminal;
  7. Inicialize o terminal.

Por fim, efetue uma transação de teste.

Como posso salvar o nome do portador do cartão na minha aplicação?

O nome do portador do cartão é uma informação que vem na resposta do pagamento de uma transação realizada no terminal, na propriedade “card.holder”. Atualmente, não é possível capturar essa informação antes de realizar a transação de pagamento, pois essa informação está presente apenas na resposta. Essa informação também pode ser obtida através da API de consulta transacional. Para saber mais sobre as informações em uma resposta da transação de pagamento, veja a documentação em “Referências => TEF - Services” ou a documentação da API.

Meu emulador POS não está exibindo o comprovante de transação. O que devo fazer?

Clique na pasta do Eclipse, e procure o arquivo config.ini. Vão existir vários, e dentro deles, temos as configurações para os terminais Vx685, Vx690, S920, D200 entre outros. Abrindo cada arquivo, acrescente, caso ainda não existam, as duas linhas abaixo:

  • printer.graphic=1
  • display.graphic=1

Obs.: Em quase todos os arquivos, a linha display.graphic já existe, bastando trocar o 0 por 1.

Onde estão as imagens impressas no comprovante gráfico?

As imagens impressas no comprovante estão dentro da pasta image. A logo impressa pode ser encontrada com o nome I020. Essas imagens devem estar no formato .bmp e devem ser imagens monocromáticas.

Como devo fazer o versionamento da minha aplicação?

No arquivo applet.ini da sua aplicação, os parâmetros VERSION_CODE e VERSION_NAME são responsáveis pelo versionamento da aplicação. Uma vez que esses parâmetros tenham sido alterados, o Portal PayStore aceitará a nova versão da aplicação.

É possível obter informações do cartão de pagamento do cliente durante a transação?

O PCI não permite a captura de nenhuma informação do cartão do portador.