> For the complete documentation index, see [llms.txt](https://ftcoders.first-tech.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ftcoders.first-tech.com/first-tech-ttp-sdk-pt/utilitarios/diferenciando-ambientes-homologacao-vs.-producao.md).

# Diferenciando Ambientes: Homologação vs. Produção

Você está dando suporte a uma aplicação sendo desenvolvida em um ambiente de homologação (teste) ou produção? Esta distinção é crucial, pois cada ambiente possui características diferentes e requer estratégias específicas. Isso impacta tudo, desde como a aplicação lida com erros até como os logs são gerados e recuperados.

* Ambiente de Homologação: Ideal para testes, com um nível de segurança mais baixo para facilitar a análise de logs. Além disso, não requer sincronização com o Google Play, permitindo que a aplicação seja instalada diretamente a partir de qualquer .apk (pacote de instalação Android).
* Ambiente de Produção: De missão crítica, impõe regras e restrições adicionais para garantir segurança e estabilidade. Por isso, as aplicações devem ser instaladas obrigatoriamente a partir de versões publicadas na Google Play Store.

Ao solucionar problemas de aplicação, o primeiro passo é identificar em qual ambiente o problema deve ser tratado.".

### Comportamento das Dependências da Biblioteca SDK First Tech

A First Tech fornece duas dependências de biblioteca dentro do mesmo repositório. Para integrá-las corretamente, é essencial configurar adequadamente o grupo, nome da biblioteca e versão no gerenciador de pacotes do projeto.&#x20;

Isso se aplica independentemente da linguagem de programação (por exemplo, em Java, isso seria dentro do arquivo build.gradle). A configuração adequada garante que o gerenciador de pacotes referencie a biblioteca apropriada.

A referência abaixo serve como uma ferramenta útil para configurar corretamente ambos os ambientes.

<details>

<summary>Ambiente: Teste/Homologação</summary>

Grupo de Organização: com.first-tech

Nome da Biblioteca: taponphone-sdk-v2-hml

Versão: 1.0.0 (20) ou superior

Verificação de Integridade do Dispositivo: ✅ sim

Verificação da App Store: ❌ Não\
\
Logs: Detalhados via Android Studio com o dispositivo conectado a um computador\
\
Comportamento da Transação: Lê os dados do cartão, mas não envia a transação para autorização do adquirente. Em vez disso, retorna um comprovante emulado. Os parâmetros de identificação do cliente na requisição não são validados..

</details>

<details>

<summary>Ambiente: Produção/Release</summary>

Grupo de Organização: com.first-tech

Nome da Biblioteca: taponphone-sdk-v2-release

Versão: 1.0.0 (20) ou superior

Verificação de Integridade do Dispositivo: ✅ Sim

Verificação da App Store: ✅ sim\
\
Logs: Via logs editáveis usando logcat\
\
Comportamento da Transação: Lê os dados do cartão e os submete para autorização do adquirente. Deduz fundos da conta ou reduz o limite de crédito disponível. Retorna um comprovante de transação real. Os parâmetros de identificação do cliente são validados durante a autorização.

</details>

Em seguida, procure ou solicite as seguintes strings nas configurações de gerenciamento de dependências dentro do código ou nos arquivos de log, buscando algo semelhante aos exemplos abaixo:

#### Exemplo de Referência no Ambiente de Teste/Homologação:

```
com.first-tech:taponphone-sdk-v2-hml
```

#### Exemplo de Referência no Ambiente de Produção/Release:

```
com.first-tech:taponphone-sdk-v2-release
```

### Como Identificar

Existem diferentes maneiras de identificar em qual ambiente a aplicação está sendo executada::

#### Método 1: Verificar o Arquivo de Configuração do Gerenciador de Dependências

Verifique o arquivo de configuração do gerenciador de dependências usado na linguagem de programação escolhida para implementação..

Por exemplo, se o cliente estiver usando Java ou Kotlin DSL, basta abrir o arquivo build.gradle e verificar as notações (diretivas responsáveis por localizar e incluir dependências de biblioteca durante o processo de compilação da aplicação).

<pre><code><strong>dependencies {
</strong>    hmlImplementation(libs.taponphone.sdk.v2.hml)
    releaseImplementation(libs.taponphone.sdk.v2.release)
}
</code></pre>

Outro exemplo com Kotlin e Gradle Groovy DSL

```
dependencies {
    hmlImplementation libs.taponphone.sdk.v2.hml
    releaseImplementation libs.taponphone.sdk.v2.release
}
```

Outro exemplo usando abordagem diferente:

```
dependencies {
    add("hmlImplementation", libs.taponphone.sdk.v2.hml)
    add("releaseImplementation", libs.taponphone.sdk.v2.release)
}
```

Para outras linguagens de programação, peça ao desenvolvedor para verificar ou mostrar onde localizar, dentro do arquivo de configuração do gerenciador de bibliotecas e dependências, as referências correspondentes a esses endereços.

#### Método 2: Analisar a Saída de Log da Aplicação

Peça ao desenvolvedor para fazer o seguinte:

{% stepper %}
{% step %}

### Configurar a Variante de Compilação para 'Debug'

Ao usar nosso SDK de homologação (hml), configure as variantes de compilação no Android Studio para debug
{% endstep %}

{% step %}

### Abrir a Janela do Console no Android Studio//Open Console Window in Android Studio

Com o projeto aberto, acesse a janela do console (pressione Alt + F12 para abri-la)//With the project open, access the **console window** (press **Alt + F12** to open it)

<figure><img src="/files/U7Q2nzdKJBlCvpmZpK8z" alt=""><figcaption><p>Console Window Open in an Example Android Project</p></figcaption></figure>
{% endstep %}

{% step %}

### Conectar o Dispositivo

O dispositivo móvel deve estar conectado ao computador. Isso permite que os logs sejam exibidos diretamente na tela ou salvos em um arquivo
{% endstep %}

{% step %}

### Chamar 'adb' para Iniciar seu Processo de Log

Dentro da janela de linha de comando referenciando a pasta de arquivos do seu projeto, use os comandos abaixo:

```
adb logcat
```

Este comando mostrará os registos na janela da sua console.

```
adb logcat > logs.txt
```

Este comando enviará todos os logs para um arquivo de texto salvo. É muito útil se você precisar enviar para o departamento de suporte ou anexar em tickets abertos.
{% endstep %}
{% endstepper %}

Após o desenvolvedor executar a aplicação e tentar enviar uma transação, o ambiente sendo usado pode ser identificado verificando a URL de requisição do SDK para cada backend.

O desenvolvedor deve procurar pela string correspondente:

* **`gwpay-hml.first-tech.net`** → Ambiente de Homologação
* **`gwpay-prod.first-tech.net`** → Ambiente de Produção

#### Example for Testing/Staging Environment

```
01-13 15:41:30.503 26564  3470 I okhttp.OkHttpClient: --> POST https://gwpay-hml.first-tech.net/v3/bff/pos/initialize
```

#### Exemplo para Ambiente de Teste/Homologação

```
01-13 15:41:30.503 26564  3470 I okhttp.OkHttpClient: --> POST https://gwpay-prod.first-tech.net/v3/bff/pos/initialize
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ftcoders.first-tech.com/first-tech-ttp-sdk-pt/utilitarios/diferenciando-ambientes-homologacao-vs.-producao.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
