Enviar um cancelamento

Para fazer o cancelamento, é preciso criar uma Intent, adicionando as informações como parâmetros dessa Intent.

val uriBuilder = Uri.Builder()
uriBuilder.authority("cancel")
uriBuilder.scheme("cancel-app")
uriBuilder.appendQueryParameter("returnscheme", "returnScheme")
uriBuilder.appendQueryParameter("atk", "atk")
uriBuilder.appendQueryParameter("amount", "amount")
uriBuilder.appendQueryParameter("editable_amount", "true/false")

 val intent = Intent(Intent.ACTION_VIEW)
 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
 intent.data = uriBuilder.build()
 startActivity(intent)

Campos utilizados para envio

Todos os campos estão em formato String

Atenção

Se os campos opcionais não forem enviados via deeplink, serão solicitados no aplicativo de Cancelamento.

CampoObrigatório?Descrição
amountNãoValor do cancelamento, em centavos. Aceita valores entre 0 e 999999999
atkNãoCódigo único da transação gerado pelo autorizador da Stone
editable_amountNãoPermite que o valor do cancelamento seja editado diretamente no aplicativo de Cancelamento
return_schemeSimDetermina para onde será o retorno do deeplink. Deve ser o mesmo valor configurado no lugar da variável scheme no AndroidManifest

Retorno do cancelamento

Para conseguir o retorno do deeplink de cancelamento, pode ser utilizada a função abaixo que captura a informação que foi retornada pela Intent.

override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        try {
            Log.i("onNewIntent", intent?.data.toString())
            if (intent?.data != null) {
                Toast.makeText(this, intent.data.toString(), Toast.LENGTH_LONG).show()
                Log.i("DeeplinkCancel Response", intent.data.toString())
            }
        } catch (e: Exception) {
            Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show()
            Log.e("Deeplink error", e.toString())
        }
    }

Exemplos de Retorno

Exemplo suceso!

cancelado sucesso:

deeplinktest://cancel?success=true&atk=39031080354321&canceledamount=0&paymenttype=2&transactionamount=100&orderid=&authorizationcode=395178&reason=APPROVED&responsecode=0000

Exemplo erros

cancelamento abortado:

deeplinktest://cancel?success=false&reason=7011&responsecode=-2

cancelado falha ao achar ATK:

deeplinktest://cancel?success=false&reason=7202&responsecode=-2

Jornada: Integrar por Deeplink
Etapa 5 de 11