Implementação

1) Instanciando a PaytimeTapOnPhoneSdk

Obtendo a instância da SDK:

private val paytimeTapOnPhoneSdkInstance = PaytimeTapOnPhoneSdk.instance

Interface exposta pela PaytimeTapOnPhoneSdk:

interface PaytimeTapOnPhoneSdk {
    fun configure(context: Context)
    fun activateDevice(
        params: TapOnPhoneSdkActivateDeviceParams,
        listener: TapOnPhoneSdkActivateDeviceListener
    )
    fun isDeviceActive(listener: TapOnPhoneSdkIsDeviceActiveListener)
    fun deactivateDevice(listener: TapOnPhoneSdkDeactivateDeviceListener)
    fun checkDeviceStatus(): TapOnPhoneSdkDeviceStatus
    fun getActiveEstablishmentDetails(listener: TapOnPhoneSdkActiveEstablishmentListener)
    fun makeTransaction(
      params: TapOnPhoneSdkTransactionParams,
      listener: TapOnPhoneSdkMakeTransactionListener
    )
    fun nullifyTransaction(
        transactionId: String,
        listener: TapOnPhoneSdkNullifyTransactionListener
    )
    fun listTransactions(listener: TapOnPhoneSdkListTransactionsListener)
    fun getTransaction(
        transactionId: String,
        listener: TapOnPhoneSdkGetTransactionListener
    )
    fun isNFCSupported(): Boolean
    fun isNFCEnabled(): Boolean
    fun goToNfcSetting()
}

1.1) Configuração

Para começar, é necessário chamar o método de configuração. O funcionamento de todos os outros métodos está atrelado à configuração, já que o context da aplicação é utilizado por todo o SDK.

É necessário que este método seja chamado apenas uma vez. Recomenda-se chamá-lo no lifecycle de onCreate da aplicação.

paytimeTapOnPhoneSdkInstance.configure(applicationContext)

1.2) Ativação do dispositivo

Para habilitar o uso da PaytimeTapOnPhoneSdk, é necessário chamar o método de ativação do dispositivo. TapOnPhoneSdkActivateDeviceParams precisa do código do estabelecimento (disponível no cadastro do estabelecimento no portal), e informações como limite da transação e limite para pedir PIN.

paytimeTapOnPhoneSdkInstance.activateDevice(params, listener)

listener é uma instância da interface TapOnPhoneSdkActivateDeviceListener, que é usada para tratar as respostas da ativação.

2) Realizar transação

Transações são realizadas através do método makeTransaction.

O método makeTransaction recebe dois parâmetros: params e listener.

params é uma instância da classe TapOnPhoneSdkTransactionParams, que contém os detalhes da transação (por exemplo, a valor da transação, o tipo de crédito - à vista ou parcelado, a quantidade de parcelas e o tipo de transação - CREDIT, DEBIT).

listener é uma instância da interface TapOnPhoneSdkMakeTransactionListener, que é usada para tratar as respostas da transação.

📘

Todos os valores monetários são tratados pela SDK como centavos. Por exemplo, uma transação de R$ 10,99 deve informar o parâmetro amount = 1099.

2.1) Realizar transação CREDIT ou DEBIT

val params = TapOnPhoneSdkTransactionParams(
    amount = 1000,
    creditType = CreditType.NO_INSTALLMENT,
    installment = null, // or an integer
    typeTransaction = TypeTransaction.CREDIT
)

paytimeTapOnPhoneSdkInstance.makeTransaction(params, listener)

No callback de onSuccess, o parâmetro retornado é o objeto da transação.

val listener = object: TapOnPhoneSdkMakeTransactionListener {
    override fun onSuccess(p0: TapOnPhoneSdkTransactionStore) {
        // Transação realizada com sucesso
    }

    override fun onError(
        p0: ReturnCodes,
        p1: List<String>,
        p2: Int?
    ) {
        // Erros
    }
}
📘

Para testar fluxo de pedido de senha, basta criar uma transação no valor maior do que o CVM Limit informado no método activateDevice. Ao tentar pagar por aproximação, a SDK exibirá a opção de fornecer a senha.

3) Cancelamento/estorno de transação

Transações são estornadas através do método nullifyTransaction.

O método nullifyTransaction recebe dois parâmetros: transactionId e listener.

transactionId é um campo do tipo String retornado dentro do TapOnPhoneSdkTransactionStore quando uma transação é realizada.

listener é uma instância da interface TapOnPhoneSdkNullifyTransactionListener, que é usada para tratar as respostas da transação.

paytimeTapOnPhoneSdkInstance.nullifyTransaction(transactionId, listener)
📘

Observações:

  • Apenas transações do mesmo dia podem ser canceladas/estornadas;

4) Listagem de transações (local)

Lista as transações executadas no dispositivo. O retorno do listener de sucesso retorna uma Lista de TapOnPhoneSdkTransactionStore. No momento, nenhuma opção de filtros é oferecida.

paytimeTapOnPhoneSdkInstance.listTransactions(listener)

5) Obter transação via ID (local)

Obtém os dados de uma transação local através do transactionId dessa transação. O retorno do listener de sucesso retorna um item do tipo TapOnPhoneSdkTransactionStore ou null.

paytimeTapOnPhoneSdkInstance.getTransaction(
  transactionId: String,
  listener: TapOnPhoneSdkGetTransactionListener
)

6) Outras operações

Sobre as operações da PaytimeTapOnPhoneSdk.

6.1) isDeviceActive(listener: TapOnPhoneSdkIsDeviceActiveListener)

Retorna se o dispositivo está ativo ou não;

6.2) deactivateDevice(listener: TapOnPhoneSdkDeactivateDeviceListener)

Desativa o dispositivo, tirando assim a habilidade do mesmo de fazer transações.

6.3) checkDeviceStatus(): TapOnPhoneSdkDeviceStatus

Retorna informações importantes, como: se o dispositivo é seguro, se está ativo e se pode usar o Tap On Phone.

6.4) getActiveEstablishmentDetails(listener: TapOnPhoneSdkActiveEstablishmentListener)

Obtém dados do estabelecimento ativo para receber vendas no Tap On Phone.

6.5) isNFCSupported(): Boolean

Retorna se o dispositivo possui NFC.

6.6) isNFCEnabled(): Boolean

Retorna se o NFC está ativo.

6.7) goToNfcSetting()

Abre as configurações de NFC do dispositivo.


Did this page help you?