# Início Rápido: Sua primeira transação

Este guia ajuda você a processar sua primeira transação de pagamento usando o Get Mini App2App. Você criará um Intent, iniciará o aplicativo Get Mini e lidará com a resposta — tudo em poucos minutos.

## Requisitos

Antes de começar, certifique-se de que você tenha:

* O **aplicativo Get Mini** instalado no seu dispositivo Android
* Um **dispositivo PIN pad compatível** emparelhado e pronto
* Um **ambiente de desenvolvimento Android** com o projeto do seu aplicativo
* Concluído o guia de [Pré-requisitos e configuração](/pt/get-mini/get-mini-app2app/first-steps/prerequisites-and-setup)

<Callout type="tip">

Certifique-se de que o PIN pad está conectado e que o aplicativo Get Mini está configurado corretamente antes de testar.

</Callout>

## Passo 1: Registrar o Activity Result Launcher

Primeiro, registre um `ActivityResultLauncher` na sua Activity ou Fragment. Isso lidará com o retorno de chamada quando o aplicativo Get Mini concluir a transação.

```java
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import android.content.Intent;
import android.app.Activity;

public class MainActivity extends AppCompatActivity {

    private ActivityResultLauncher<Intent> paymentLauncher;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Register the Activity Result Launcher
        paymentLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            result -> {
                if (result.getResultCode() == Activity.RESULT_OK) {
                    // Payment successful
                    Intent data = result.getData();
                    if (data != null) {
                        String authNumber = data.getStringExtra("AUTHORIZATION_NUMBER");
                        String order = data.getStringExtra("ORDER");

                        // Display success message to user
                        Toast.makeText(this,
                            "Payment Successful! Auth: " + authNumber,
                            Toast.LENGTH_LONG).show();
                    }
                } else if (result.getResultCode() == Activity.RESULT_CANCELED) {
                    // Payment failed or cancelled
                    Intent data = result.getData();
                    if (data != null) {
                        String errorMsg = data.getStringExtra("ERROR_MSG");
                        String state = data.getStringExtra("STATE");

                        // Display error message to user
                        Toast.makeText(this,
                            "Payment Failed: " + errorMsg,
                            Toast.LENGTH_LONG).show();
                    }
                }
            }
        );
    }
}
```

## Passo 2: Criar e iniciar o Intent de pagamento

Em seguida, crie um método para construir o Intent de pagamento e inicie-o com o launcher registrado.

```java
private void processPayment(double amount, String invoiceNumber) {
    // Create the payment Intent
    Intent paymentIntent = new Intent("es.redsys.paysys.mPOSRedsys_PAYMENT_REQUEST");

    // Add required parameters
    paymentIntent.putExtra("amount", amount);
    paymentIntent.putExtra("invoice", invoiceNumber);

    try {
        // Launch the Get Mini application
        paymentLauncher.launch(paymentIntent);
    } catch (ActivityNotFoundException e) {
        // Handle case where Get Mini app is not installed
        showInstallDialog();
    }
}

private void showInstallDialog() {
    String playStoreUrl = "[https://play.google.com/store/apps/details?id=es.android.redsys.Get](https://play.google.com/store/apps/details?id=es.android.redsys.Get) Mini.movil";

    new AlertDialog.Builder(this)
        .setTitle("Get Mini Not Found")
        .setMessage("The Get Mini app must be installed to process payments.")
        .setPositiveButton("Install", (dialog, which) -> {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(playStoreUrl));
            startActivity(intent);
        })
        .setNegativeButton("Cancel", null)
        .show();
}
```

## Passo 3: Acionar o pagamento

Por fim, chame o seu método `processPayment` quando o usuário iniciar um pagamento (por exemplo, quando ele tocar em um botão "Pagar agora").

```java
// Example: Process a payment of €10.50 with invoice number "ORD-12345"
Button payButton = findViewById(R.id.pay_button);
payButton.setOnClickListener(v -> {
    processPayment(10.50, "ORD-12345");
});
```

## Passo 4: Testar a sua integração

Execute o seu aplicativo em um dispositivo com o aplicativo Get Mini instalado:

1. Inicie o seu aplicativo
2. Toque no botão de pagamento
3. O aplicativo Get Mini deve iniciar e solicitar que você insira ou aproxime um cartão
4. Conclua a transação no PIN pad
5. O seu aplicativo recebe o retorno de chamada com o resultado da transação

## Solução de problemas

**Aplicativo Get Mini não encontrado**: Se você vir uma `ActivityNotFoundException`, o aplicativo Get Mini não está instalado. Siga o guia [Gerenciar a disponibilidade do aplicativo](/pt/get-mini/get-mini-app2app/transaction-guides/response-handling/handle-app-availability) para direcionar os usuários a instalá-lo.

**Transação cancelada**: O aplicativo Get Mini retorna `RESULT_CANCELED` quando uma transação falha ou é cancelada pelo usuário. Verifique o extra `ERROR_MSG` para obter detalhes.

**PIN pad não conectado**: Certifique-se de que o dispositivo PIN pad está emparelhado corretamente via Bluetooth e que o aplicativo Get Mini está configurado para usá-lo.

## Próximos passos

Parabéns! Você processou a sua primeira transação de pagamento. Para saber mais:

* [Estornar um pagamento](https://docs.globalgetnet.com/pt/products/local-processor-spain/get-mini?doc=getmini-app2app-processing-a-refund) - Saiba como estornar um pagamento anterior
* [Lidar com os resultados da transação](/pt/get-mini/get-mini-app2app/transaction-guides/response-handling/handle-transaction-results) - Guia detalhado sobre o processamento de dados de resposta
* [Gerenciamento de recibos](/pt/get-mini/get-mini-app2app/core-concepts/receipt-management) - Saiba como exibir e compartilhar recibos de transação
* [Parâmetros de solicitação](/pt/get-mini/get-mini-app2app/reference/request-parameters) - Referência completa de todas as ações e parâmetros do Intent