Getnet DocsGetnet Docs

Crie um pagamento em etapa única

Este guia mostra como criar um fluxo de pagamento automatizado que reduz a interação do usuário. Você pré-configura os parâmetros de pagamento e pula as telas de seleção manual. Com um pagamento em etapa única, o terminal processa a transação rapidamente, com o mínimo de toques do usuário.

Antes de começar

Antes de começar, confirme que você tem:

  • Leitura de como executar uma chamada de Polling (getnet://payment/v1/polling) antes de iniciar a transação, para garantir que não há transações pendentes nem processos travados.
  • Getnet payment app instalado no terminal Android.
  • Um callerId único para correlacionar a requisição com a resposta.

pagamentos em etapa única funcionam melhor quando combinados com o modo de operação calculado (operationMode = "1"), no qual sua aplicação faz todos os cálculos de juros antes de enviar a requisição.

Passo 1: configure e envie o Intent de pagamento

Para criar um fluxo em etapa única, configure o Intent com todos os parâmetros obrigatórios e as flags de automação. A tabela abaixo descreve todos os parâmetros que você pode usar:

ParâmetroTipoObrigatórioDescrição
amountStringSimValor da transação (com duas casas decimais implícitas, ex.: “10000” = $100.00)
originalAmountStringSimValor em moeda local para realizar a transação.
tipStringNãoValor da gorjeta a ser somado ao total da transação. A representação decimal é a mesma do parâmetro amount (ex.: “500” = $5.00)
waiterCodeStringCondicionalCódigo do garçom para atribuição da gorjeta. Obrigatório quando há gorjeta.
receiptCodeStringSimCódigo de identificação a ser impresso no comprovante
callerIdStringSimIdentificador único para correlacionar a requisição com a resposta
paymentMethodStringNão"1" para cartão, "2" para QR Code. Pula a tela de seleção do meio de pagamento.
installmentsStringNãoNúmero de parcelas desejado (somente cartão de crédito)
planIdStringNãoID do plano de parcelamento. Verifique os planos disponíveis no seu mercado.
interestStringNãoIndica se o plano de parcelamento tem juros ("true") ou é sem juros ("false")
operationModeStringNão"1" para modo calculado (sua aplicação trata os juros), "0" para manual (o terminal aplica as regras de negócio). Consulte o guia Estratégia de cálculo de juros.
skipConfirmationStringNãoDefina como "true" para pular a tela de revisão de parcelas e juros. "false" (padrão) exibe a tela normalmente - o usuário precisa interagir para prosseguir.
skipReceiptStringNãoDefina como "true" para ocultar a tela de visualização do comprovante do cliente após a aprovação. "false" (padrão) exibe a tela normalmente.
allowPrintCurrentTransactionStringNãoDefina como "true" para a Getnet cuidar da impressão do comprovante (comportamento padrão). Consulte o guia Responsabilidade de impressão.

Veja um exemplo básico com os parâmetros obrigatórios:

private val REQUEST_CODE = 1001

val intent = Intent(Intent.ACTION_VIEW, Uri.parse("getnet://payment/v1/payment"))
intent.putExtra("amount", "10000")              // $100.00
intent.putExtra("originalAmount", "10000")
intent.putExtra("receiptCode", "987654")
intent.putExtra("callerId", "req_001")

startActivityForResult(intent, REQUEST_CODE)

Passo 2: trate a resposta

O terminal retorna a resposta via onActivityResult. Verifique o campo result para confirmar o sucesso:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        val result = data?.extras?.getString("result")
        
        when (result) {
            "0" -> {
                // Transaction approved
                val nsu = data?.extras?.getString("nsu")
                val authCode = data?.extras?.getString("authorizationCode")
                val amount = data?.extras?.getString("amount")
                // Handle success
            }
            else -> {
                // Transaction failed or cancelled
                val resultDetails = data?.extras?.getString("resultDetails")
                // Handle error
            }
        }
    }
}

Parâmetros de resposta

A resposta do terminal inclui os seguintes campos principais:

ParâmetroTipoDescrição
resultStringResultado da transação: "0" para sucesso; outros valores indicam falha ou cancelamento. Consulte a referência Códigos de resultado.
resultDetailsStringMensagem detalhada sobre o resultado da transação (ex.: “APPROVED”, descrições de erro)
amountStringValor final cobrado com duas casas decimais implícitas
tipStringValor da gorjeta somado à transação (se informado)
waiterCodeStringCódigo do garçom para atribuição da gorjeta (se informado)
receiptCodeStringCódigo de identificação impresso no comprovante
callerIdStringO identificador único enviado na requisição para correlacionar com a resposta
nsuStringCódigo de autorização da transação Getnet - único por terminal (não pode se repetir no mesmo dia)
authorizationCodeStringCódigo de autorização fornecido pelo emissor do cartão
paymentTypeStringTipo de pagamento usado: crédito, débito, voucher etc.
brandStringBandeira do cartão (ex.: “VISA”, “MASTERCARD”)
cardBinStringPrimeiros 8 dígitos do cartão (BIN)
cardLastDigitsStringÚltimos 4 dígitos do cartão usado
inputTypeStringForma de leitura do cartão: "021" (magnético), "051" (chip), "071" (chip por aproximação), "801" (magnético - fallback)
gmtDateTimeStringData e hora GMT da transação (formato: MMDDhhmmss, GMT UTC 0)
installmentsStringNúmero de parcelas processadas (se aplicável)
planIdStringID do plano de parcelamento usado na transação (se aplicável)
interestStringIndica se houve aplicação de juros: "true" (com juros) ou "false" (sem juros)
automationSlipStringDados do comprovante em formato JSON (retornado quando allowPrintCurrentTransaction = "false"). Consulte o guia Responsabilidade de impressão.

Próximos passos

Depois de criar um pagamento com sucesso, você pode explorar: