5. Fluxo Operacional

5.1 Fluxo principal

A figura a seguir ilustra o fluxo completo para realização de uma transação eletrônica, evidenciando as funções a serem chamadas pela Automação.

1034

➝ A Automação chama PW_iInit uma única vez após ser iniciada, para inicializar a biblioteca.

➝ A Automação chama PW_iNewTransac (ver página 18) para indicar o início de uma nova transação.

➝ A Automação chama repetidamente PW_iAddParam para alimentar a biblioteca com cada informação referente à transação que já seja conhecida (pode ser pré-definida ou ter sido capturada pelo operador).

➝ A Automação chama PW_iExecTransac, para efetuar a transação.

➝ Caso PW_iExecTransac retorne PWRET_MOREDATA, indica que dados adicionais devem ser capturados pela Automação. Nesta situação, a Automação deve obter estes dados (usualmente, solicitando-os ao operador) e informa-los à biblioteca através de PW_iAddParam, e em seguida chamar novamente PW_iExecTransac. Este processo pode ser repetido várias vezes até obtenção de todos os dados necessários para realização da transação.

➝ Caso PW_iExecTransac retorne qualquer código diferente de PWRET_MOREDATA, a Automação pode chamar PW_iGetResult para obter as informações disponíveis referentes à transação.

➝ Caso PW_iExecTransac retorne PWRET_OK, indica que a transação foi realizada com êxito. A Automação deve então realizar seus processos vinculados à transação eletrônica (liberar mercadoria, imprimir comprovantes, atualizar banco de dados, etc.) e em seguida, caso requerido pela transação, chamar PW_iConfirmation para informar ao PayGo o status final da transação (confirmada ou desfeita).

➝ A Automação pode a qualquer momento durante a captura de dados interromper uma transação já iniciada. Neste caso, deve chamar PW_iConfirmation para que a transação seja desfeita junto ao Provedor.

5.2 Captura de dados

Os dados que a Automação deve obter após PW_iExecTransac retornar PWRET_MOREDATA podem ser:

➝ Uma opção a ser selecionada dentro de uma lista (menu);
➝ Um dado a ser digitado pelo operador na interface com usuário gerenciada pela Automação;
➝ Um código de barras (a ser lido através de um dispositivo ou digitado pelo usuário);
➝ Dados a serem obtidos do pinpad.

5.2.1 Interface com o usuário principal

Todas as mensagens de texto para apresentação ao operador previstas nesta versão da especificação possuem as seguintes características:

➝ Estão em maiúsculas e não possuem caracteres acentuados;
➝ Utilizam o caractere carriage return (0Dh) para indicar quebras de linha;
➝ São formatadas prevendo uma tela de 4 linhas de 20 colunas e caracteres de largura fixa.

A Automação pode alterar a formatação destas mensagens para acomodá-las da melhor maneira possível na interface com o usuário, porém sem alterar seu conteúdo (palavras).

5.2.2 Interface com o pinpad

No caso de dados a serem obtidos do pinpad, a biblioteca disponibiliza um conjunto específico de funções de alto nível com as seguintes características:

➝ A Automação mantém o controle do fluxo operacional, podendo manter o operador corretamente informado do processo em andamento ou da ação a ser tomada;
➝ O protocolo de comunicação com o pinpad é implementado pela biblioteca;
➝ Os dados sensíveis do cartão ou do Cliente manipulados pelo pinpad não trafegam pela Automação.

A figura abaixo ilustra o fluxo de processamento da Automação durante a captura de um dado do pinpad:

766

➝ De acordo com o tipo de dado a ser capturado, a Automação identifica e chama uma função PW_iPPxxx para iniciar o processo de captura.

➝ A partir deste momento, a Automação inicia um ciclo de processamento, chamando indefinidamente a função PW_iPPEventLoop, enquanto esta retornar:

  • PWRET_NOTHING, que não pede nenhuma ação da Automação, a não ser continuar aguardando o processamento; ou
  • PWRET_DISPLAY, que pede para a Automação apresentar uma mensagem de texto para o operador na interface com o usuário gerenciada pela Automação.

➝ Durante este ciclo de processamento, a Automação pode verificar outros eventos como, por exemplo, uma ação do operador na interface com o usuário principal que requeira interromper a captura no pinpad. Neste caso, a Automação deve chamar PW_iPPAbort para que o pinpad retorne ao seu estado ocioso.

➝ Atenção: durante o ciclo de chamadas repetitivas a PW_iPPEventLoop, a Automação deve tomar o cuidado de liberar o tempo de processador para o sistema operacional. Recomendamos aguardar no mínimo 100 milissegundos entre duas chamadas.

➝ Um retorno de PWRET_OK de PW_iPPEventLoop indica que a captura foi realizada com êxito.