PGWebLib Android v4.1.63.16

Documentação da PGWebLib Android.

Fluxograma de uso

Devido às diferenças de arquitetura entre a biblioteca Android e a implementação original da PGWebLib (em linguagem C), algumas alterações foram efetuadas no fluxo, de maneira a simplificar a integração com Automações, utilizando os recursos de uma linguagem mais alto nível.

  1. Inicialmente, deve ser instanciado um objeto do tipo PGWebLibImpl, que implementa a interface PGWebLib.
  2. Antes de qualquer operação, deve ser chamado o método
    invalid @link
    br.com.setis.pgweblib.PGWebLib#init()
    . Esta chamada deve ser efetuada uma única vez.
  3. Para iniciar uma transação, deve ser chamado o método PGWebLib.newTransaction(byte), informando também o tipo de operação a ser realizada.
  4. Para informar os dados necessários para a transação, bem como dados pré-capturados, a automação pode criar um Map com um par identificador(short) x valor(String), informando todos os parâmetros de uma só vez para o método PGWebLib.addParameters(Map)
  5. A automação então chama
    invalid @link
    br.com.setis.pgweblib.PGWebLib#executeTransaction(br.com.setis.pgweblib.entidades.TransactionListener)
    uma única vez, para executar a transação. A partir daí, todas as iterações necessárias serão notificadas através do listener passado como parâmetro:
    1. Cada vez que a biblioteca necessitar de um novo dado para prosseguir a transação, será invocado o callback TransactionListener.onMoreData(GetData[]), com os parâmetros de captura. A automação deve adicioná-los, utilizando o método PGWebLib.addParameters(Map).
    2. Caso a biblioteca necessite efetuar uma captura com PIN-Pad, será invocado o callback TransactionListener.onPinpadCommand(int, boolean, String). Neste cenário a automação não precisa fazer nada, a não ser retornar uma implementação de PinpadListener para notificação do andamento da captura.
    3. Durante o processamento da transação, a automação pode, a qualquer momento, interromper uma transação (caso esteja sendo feita uma captura no PIN-Pad, será necessário invocar o comando PGWPinpad.abort()). Neste caso, cabe a automação checar se a transação necessita ou não de confirmação, e efetuar seu devido desfazimento, através do método PGWebLib.confirmation(br.com.setis.pgweblib.entidades.ConfirmationParams).
    4. Ao final de uma transação, seja ela com sucesso ou não, é invocado o método TransactionListener.onTransactionFinished(int).
  6. Finalizada a transação, a automação pode obter todas as informações relevantes através de PGWebLib.getResult(Short). Caso seu resultado seja PWRET_OK, a transação foi realizada com êxito, e todos os processos de finalização (impressão de comprovantes, liberação de mercadorias, atualizações de dados, etc.) podem ser efetuados. Caso requerido pela transação, deve ser efetuada a confirmação ou desfazimento da transação, através de PGWebLib.confirmation(br.com.setis.pgweblib.entidades.ConfirmationParams).
  7. Para mais detalhes sobre parâmetros, identificadores, códigos de retorno e outros detalhes da implementação, consultar o documento "Pay&Go Web - Especificação de Integração (LibC)", anexo à este documento.