Getnet DocsGetnet Docs

Processe um reembolso

Este guia mostra como reverter uma transação já concluída usando o deeplink de Reembolso. Reembolsos parciais são aceitos quando o valor é menor que o da transação original.

Antes de começar

Antes de iniciar um reembolso, confirme que você tem:

  • O código de autorização (AUT) e a data da transação da resposta do pagamento original bem-sucedido.
  • O valor total ou parcial a ser revertido.
  • A confirmação de que o terminal está pronto via getnet://payment/v1/polling.

Passo 1: configure o Intent de reembolso

Para iniciar a reversão, use a URI getnet://payment/v1/refund.

ParâmetroTipoObrigatórioDescrição
authorizationCodeStringSimCódigo da transação original, exibido como “AUT” no comprovante.
transactionDateStringSimData da transação original no formato dd/MM/yyyy.
amountStringSimValor a ser revertido; se for menor que o original, o reembolso é parcial.
refundTypeStringNãoTipo de reembolso: "1" venda com saque, "2" venda, "3" saque.
skipConfirmationStringNãoDefina como "true" para pular a tela de confirmação do valor.
skipReceiptStringNãoDefine se o comprovante do cliente é impresso.
allowPrintCurrentTransactionStringNãoDefina como "false" para receber os dados do comprovante em automationSlip em vez de imprimi-lo.

O código de autorização e a data da transação são retornados na resposta do onActivityResult quando você processa um pagamento. Guarde esses valores após cada transação bem-sucedida para usá-los depois nos reembolsos.

Reembolsos parciais: se o valor for menor que o da transação original, o reembolso é processado como parcial. Você pode fazer vários reembolsos sobre a mesma transação original até alcançar o valor total.

Veja como configurar e enviar o Intent de reembolso:

private val REFUND_REQUEST_CODE = 2001

fun processRefund(authCode: String, transactionDate: String, amount: String) {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("getnet://payment/v1/refund")).apply {
        putExtra("authorizationCode", authCode)
        putExtra("transactionDate", transactionDate)
        putExtra("amount", amount)
        putExtra("refundType", "2")
    }
    startActivityForResult(intent, REFUND_REQUEST_CODE)
}

Passo 2: trate a resposta

O terminal processa a reversão e devolve o resultado para a sua activity. A resposta inclui result, resultDetails, authorizationCode, commerceCode, amount, gmtDateTime, callerId, nsuLastSuccesfullMessage, refundTransactionDate, refundOriginTerminal e automationSlip.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == REFUND_REQUEST_CODE && resultCode == RESULT_OK) {
        val extras = data?.extras
        val result = extras?.getString("result")

        if (result == "0") {
            // Refund approved
        } else {
            val details = extras?.getString("resultDetails")
            // Handle error
        }
    }
}

Próximos passos