Painel de líderes
Conteúdo popular
Showing content with the highest reputation on 19-02-2026 em todas as áreas
-
Entendendo o projeto Android - Kotlin Criamos um programa exemplo que se integra com o m-SiTef que você pode utilizar como base para seu sistema Android (Kotlin ou Java). m-SiTef O m-SiTef é um aplicativo desenvolvido pela Fiserv para a plataforma Android e funciona através da comunicação por Intents, ou seja, os dados são passados de uma aplicação (Programa exemplo) para outra (m-SiTef) pela própria Intent, sem a necessidade de um SDK ou outra solução para essa comunicação. Para entender melhor como funciona a comunicação entre aplicativos android por intents: https://medium.com/@ashfaque-khokhar/intent-in-android-00f7be3197c0. Exemplo de dados sendo transmitidos de Intent para outra intent. Intent intent = new Intent (getApplicationContext(), SecondActivity.class); intent.putExtra( "NAME" , "Ashu" ); intent.putExtra( "ID" , 21 ); startActivity(intent); Para se integrar ao m-SiTef devemos passar os dados da forma como estão descritos no guia de integração, que você pode encontrar completo aqui: https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Projeto O nosso projeto de integração está no nosso GitHub: https://github.com/Projeto-ACBr-Oficial/acbr-sitef-android Antes de clonar o projeto e rodar, não se esqueça de iniciar o SitDemo e estar com o APK do m-SiTef instalado no terminal Android que fará os testes. Saiba mais sobre estes processos: Para conseguir rodar corretamente o nosso programa exemplo você precisa configurar alguns campos passados ao aplicativo do m-SiTef: Endereço IP do SitDemo CNPJ ou CPF CNPJ da Automação Utilize a tela de configuração da aplicação: Entendendo o projeto O core desta integração está na classe fiserv/msitef/src/main/java/com/mjtech/fiserv/msitef/payment/MSitefPaymentProcessor.kt Nesta classe é feito o mapeamento de todos os campos necessários para fazer os pagamentos na função Débito, Crédito (Á vista e parcelado), Pix e Voucher. Outra classe importante é a fiserv/msitef/src/main/java/com/mjtech/fiserv/msitef/payment/MSitefPaymentActivity.kt. Esta classe é responsável por abrir o APP do m-SiTef e receber e mapear o resultado retornado pelo m-SiTef acionando o callback conforme o retorno recebido. Menu administrativo O menu administrativo está na tela de configurações e é uma importante funcionalidade que deve ter na sua aplicação para acessar as principais funções como cancelamento, reimpressão, teste de comunicação, etc. O core do mapeamento dos parâmetros referente ao menu administrativo está nesta classe: fiserv/msitef/src/main/java/com/mjtech/fiserv/msitef/settings/MSitefAdminHandler.kt Já a classe fiserv/msitef/src/main/java/com/mjtech/fiserv/msitef/settings/MSitefAdminActivity.kt é responsável por chamar o aplicativo do m-SiTef passando os parâmetros necessários e responsável por capturar o retorno. Roteiro de pré-homologação Uma etapa importante do processo de desenvolvimento e homologação é o roteiro de pré-homologação. Algumas etapas do roteiro de testes exigem valores exatos como R$25.000 ou R$15,00 e a troca de alguns campos de configurações, foi pensando nestes testes que fizemos este programa exemplo, onde você consegue informar o valor exato na tela de pagamento e modificar os campos de configuração em tempo de execução. Fluxo de pagamento: Esta aplicação já passou pelo roteiro de teste de pré-homologação e você pode utilizar como base para o seu projeto. Em nosso curso -> T.E.F e Meios de Pagamentos, já estão disponíveis as aulas sobre o Pré-Roteiro de Homologação - MSiTef. _________________________________________________________________ Referências - Toda a integração foi guiada pela documentação oficial disponibilizada pela própria Fiserv no link: https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Estamos disponíveis para qualquer dúvida ou sugestão.6 pontos
-
@FelipeMitt, eu atualizei repositório, recompilei todos os pacotes marcando a opção de excluir arquivos antigos e deu tudo certo para o provedor nacional.2 pontos
-
Projeto ACBr está refatorando as classes ACBrLib C# Olá comunidade ! O Projeto ACBr iniciou a refatoração das classes de alto nível em C#, mantendo a compatibilidade com o .NET 4.5 As mudanças ocorrerão ao longo do ano de 2026. Principais mudanças Desacoplamento usando interfaces: agora cada classe de alto nível terá sua interface (IACBrLibCEP, IACBrLibNFe, ...); Uso da interface IACBrLibBase; Substituição da classe ACBrLibHandle por ACBrLibBase; ACBrLibHandle será depreciada e removida Remoção do selamento das classes ACBrLib Programas exemplo: Os demos terão pastas de build (output) próprias para ST e MT; Serão atualizados para .NET. 4.8. Exemplo: // Pasta de saída para demo MT trunk2\Projetos\ACBrLib\Demos\C#\Mail\Demo\ACBrLibMail.Demo\bin\MT\Debug // Pasta de saída para demo ST trunk2\Projetos\ACBrLib\Demos\C#\Mail\Demo\ACBrLibMail.Demo\bin\ST\Debug Fases da refatoração Obs.: Até a presente data, 02/03/2026 concluímos a fase II Fase I Refatoração da ACBrLib.Core com inclusão da classe ACBrLibBase e da interface IACBrLibBase. Além disso, foram expostos os métodos `Inicializar`,`Finalizar` e `OpenSSLInfo` nas classes ST e MT. Nessa fase, foi adicionada uma camada de compatibilidade entre as classes filhas de ACBrLibHandle e ACBrLibBase. Fase II Classes filhas de ACBrLibHandleBase carregarão a ACBrLib em modo thread safe. Refatoração das classes MT mais usadas; Inclusão das interfaces IACBrLib. Lista atualizada em 02/03/2026 Já foram atualizados: ACBrNFe; ACBrNFSe; ACBrCEP; ACBrMDFe; ACBrPIXCD; ACBrPosPrinter; ACBrBAL; ACBrBoleto; ACBrConsultaCNPJ; ACBrCTe; ACBrGTIN; ACBrETQ; ACBrIBGE; ACBrReinf; ACBrNCMs; ACBrMail; PIXMatera; Sedex. ACBrPosPrinter Agora, o método Inicializar é responsável por instanciar o componente! Método usado para preparar o buffer para impressão agora é InicializarPos(). Essa alteração visa corrigir a ambiguidade causada pelos argumentos opcionais do método Inicializar(): public interface IACBrLibBase { // permite a chamada sem argumentos, exemplo: Inicializar(); void Inicializar(string eArquivoConfig = "", string eChaveCrypt= ""); } Exemplo: //versões anteriores a 1.0.9 ACBrPosPrinter pos = new ACBrPosPrinter("[Memory]", ""); pos.Inicializar(); // metódo antigo (inicializar buffer) // ACBrLib.PosPrinter >=v1.0.9 ACBrPosPrinter pos = new ACBrPosPrinter("[Memory]", ""); pos.InicializarPos(); ACBrReinf Outra modificação importante aconteceu em ACBrReinf, na interface IACBrLibReinf o método para configurar o TipoContribuinte é SetTipoContribuinte. Exemplo: // versões anteriores a 1.0.8 ACBrReinf reinf = new ACBrReinf("",""); reinf.TipoContribuinte(cmbTipoContribuinte.SelectedIndex); IACBrLibReinf reinf = new ACBrReinf("",""); reinf.SetTipoContribuinte(cmbTipoContribuinte.SelectedIndex); // >= 1.0.8 Depreciados ACBrSAT e ACBrSATMT foram depreciados. O código fonte e o programa exemplo dessa classe serão removidos na fase V. Exemplo: // exemplo de uso IACBrLibCEP cep = new ACBrLibCEP("[Memory]", ""); Fase III Atualização da interface IACBrLibBase para incluir os métodos Nome(), Versao() e UltimoRetorno(). Nessa fase, serão removidos os campos ( fields / properties ) `Nome` e `Versao` das classes ST Exemplo: ACBrNFe nfe = new ACBrNFe("[Memory]", ""); Console.WriteLine(nfe.Nome); // Removido // Novo método: IACBrLibNFe nfe = new ACBrNFe("[Memory]", ""); Console.WriteLine(nfe.Nome()); Fase IV Descontinuação da classe ACBrLibHandle. Fase V Separação dos pacotes ACBrLibX.Common com recursos compartilhados em ST e MT, incluindo a interface IACBrLibX; Nessa fase, os pacotes serão publicados com a versão 2.0.0; Recursos compartilhados, como interfaces, classes de resposta e de notas fiscais, terão seu próprio pacote; A chamada do método `Inicializar` será obrigatória após instanciar a ACBrLib. Exemplo: using ACBrLib.NFe; using ACBrLib.NFe.Common; IACBrLibNFe nfe = new ACBrNFe("[Memory]", ""); try { nfe.Inicializar(); } catch (Exception e) { // tratamento de erro } Exemplo de recurso compartilhado: using ACBrLib.Core; namespace ACBrLib.NFe.Common { public interface IACBrLibNFe : IACBrLibBase { ACBrNFeConfig Config { get; } void CarregarNota(NotaFiscal nfe); } }2 pontos
-
sitef ou paygo ambos o ACBr te dá todo o auxilio para ti como desenvolvedor https://www.projetoacbr.com.br/tef1 ponto
-
1 ponto
-
É preciso seguir os passos citados:1 ponto
-
Obrigada!! Declarei como ACBrDFe.Conversao e deu certo. Muito obrigada pela ajuda.1 ponto
-
1 ponto
-
Boa tarde @Lucio Bittes você mesmo pode liberar o consumo do end point de consulta de boletos liquidados....basta acessar o portal developers bradesco e dentro da API Cobrança com QRCODE você adiciona o end point a sua aplicação criada. @Daniel InfoCotidiano vou postar um log da consulta que testei agora a pouco com 2 retorno de boletos....alterei alguns dados por segurança... 19/02/26 15:37:50:451 -03:00 - Autenticando Token... 19/02/26 15:37:50:451 -03:00 - Comando Enviar: TOAuth 19/02/26 15:37:50:452 -03:00 - Header Envio:Authorization: Basic MsNmMjkyZTktYzliZC70ODIwLTljYTEtNhZjMGU5Ogc3sWY0Ojk1YmJiNjgwLThlZDgtNDZhMy04NDBhLTYyMtljYjQ4MkMzbQ== 19/02/26 15:37:50:452 -03:00 - URL: [POST] https://openapi.bradesco.com.br/auth/server-mtls/v2/token 19/02/26 15:37:50:452 -03:00 - Body Envio (Payload):grant_type=client_credentials&client_id=2cf292e9-c9bd-4820-9ca1-4fc0e98771f4&client_secret=95bbb630-8ed8-46a3-840a-6209cb480331 19/02/26 15:37:50:857 -03:00 - Validade: 19/02/2026 16:37:50 19/02/26 15:37:50:857 -03:00 - Cookies: 19/02/26 15:37:50:857 -03:00 - TS01d300c1=01e8bbc47f94a1760e5b53f20873aea8e0f993923c9f0b7c9bab2f11626566fe50b11941d50487454faa4e1720549525e54b85f287 19/02/26 15:37:50:868 -03:00 - D:\TESTE\Boletos\Certificado\Bradesco\certificado_bradesco.crt 19/02/26 15:37:50:868 -03:00 - D:\TESTE\Boletos\Certificado\Bradesco\chave_bradesco_key.key 19/02/26 15:37:50:868 -03:00 - Header: 19/02/26 15:37:50:868 -03:00 - HTTP/1.1 200 OK X-Rate-Limit: [{"window":0,"type":"throttle","remaining":797}] Max-Forwards: 20 Via: 1.1 traffic-5845d57f95-tc9j6 () Connection: keep-alive X-CorrelationID: Id-a859976964f84f50c220c70f 0 Cache-Control: no-store Date: Thu, 19 Feb 2026 18:42:48 GMT Pragma: no-cache traceresponse: 00-4caf4743c20b3ba3fc0871829b7adc56-be8fb3c47b1f4467-01 x-dt-tracestate: fe3d2b4c-ab88a94d@dt Content-Type: application/json Set-Cookie: TS01d300c1=01e8bbc47f94a1760e5b53f20873aea8e0f993923c9f0b7c9bab2f11626566fe50b11941d50487454faa4e1720549525e54b85f287; Path=/; Domain=.openapi.bradesco.com.br Transfer-Encoding: chunked 19/02/26 15:37:50:868 -03:00 - Header Resposta:HTTP/1.1 200 OK X-Rate-Limit: [{"window":0,"type":"throttle","remaining":797}] Max-Forwards: 20 Via: 1.1 traffic-5845d57f95-tc9j6 () Connection: keep-alive X-CorrelationID: Id-a859976964f84f50c220c70f 0 Cache-Control: no-store Date: Thu, 19 Feb 2026 18:42:48 GMT Pragma: no-cache traceresponse: 00-4caf4743c20b3ba3fc0871829b7adc56-be8fb3c47b1f4467-01 x-dt-tracestate: fe3d2b4c-ab88a94d@dt Content-Type: application/json Set-Cookie: TS01d300c1=01e8bbc47f94a1760e5b53f20873aea8e0f993923c9f0b7c9bab2f11626566fe50b11941d50487454faa4e1720549525e54b85f287; Path=/; Domain=.openapi.bradesco.com.br Transfer-Encoding: chunked 19/02/26 15:37:50:869 -03:00 - Body Resposta (payload):{ "access_token" : "eyJhbGciOiJQUtI1NiJ9.ew0KICAgICJ2ZXIiOiAiMi4wIitNCiAgICAic3ViIjogIjJjZjI5MmU5LWM5YmQtNDgyMC05Y2ExLTRmYzBlOTg3NzFmNCIsDQogICAgImlzcyI6ICJodHRwczovL29wZW5hcGkuYnJhZGVzY28uY29tLmJyL2F1dGgvc2VydmVyLW10bHMvdjIvdG9rZW4iLA0KICAgICJhdWQiOiAiaHR0cHM6Ly9vcGVuYXBpLWF4d2F5LmFwaS5icmFkZXNjby5jb20uYnIiLA0KICAgICJpYXQiOiAxNzcxNTI2NTY5LA0KICAgICJleHAiOiAxNzcxNTMwMTY5LA0KICAgICJzY3AiOiAiQ0JPTiIsDQogICAgImp0aSI6ICJ0TDZ6enNJQnhFTEtLaENRdEFZY1FBPSIsDQogICAgImNuZiI6IHsNCgkieDV0IzI1NiIgOiAid0ZOczVnTTBvL0lxUm0yYzhQYmFXNUJ3WHFvK1FVQ0swSnFLMTRiUFE2MD0iDQp9LA0KICAgICJ0b2tlblR5cGUiOiAiYWNjZXNzIiwNCiAgICAiY2xpZW50VHlwZSI6ICJzZXJ2ZXItbXRscyIsDQogICAgImF1dGhEYXRhIjogImV5SmxibU1pT2lKQk1qVTJSME5OSWl3aVlXeG5Jam9pVWxOQkxVOUJSVkF0TWpVMkluMC5NNzNncnN2clBTWTQ1c0NXeFRSYkpLUkxteHdDTHNHWEtvb2g2Yy1TRnlpT05IT1hGZlNjWHpqcEdRSUVEZ3ZYQU5kMmJWdTBNbkw1N19FZUxLdzJUMWxlNG1Yb1hjMC1HMlRmRlZfTHpuemVGTkJYMld5UmRHNnB0RUV1OGlYYUR1ME1lc1FGNWN2VkpEdHRNTnNJdm16V2prSnpLX0V2RGxUbGNvSFhyeG13a1J3MmVDV2RvM0E4azZJZW1HVEwzS1FybjB5VW9pWTNXU0lzaUtBX3V1QWhlMHJ5cUV0TzJ5ZDh6R2U4WFY1R1h4RUhPdVBkdDZFTkVkRzVteG1yaTltRGZJM3lONXlhMkc4UEdwbFk4N2Rsc0hEeXVsZnpoemhfbWRONnRxNzR6NlV3bXNCQ19WdEU2QlhkdGYwWmlKOGVwSVUzSXRTUTBvUWNDd1RjX0EuWVdQQjlpNWtwZW9LTjVpLS56cmJRN1R3bGZjUGVWX3prTVpqcXA2cXlMLVFBSFlkUGZscy1WSm5uSFp1ZmU2Mzh3YnNYVnFzdnJreHNmcURSbjJjeGZtZE9oTFdFTDBGcDVSOUNKTTFFYmJqOUZOMmFZNUtJVzFIQVN1X3ZHVTN0ZFdBdk5Ud19iT1hzbnA0VkNpWExxNEJSYkRTWVpFWGJWMFI2dzd0eldxRnZpcWhDYldlQzlleWZjZFYxS2tGd3FYbzB5QTNXSE9WMDViZG5DU3U0aHRUMmQzOEVMcFg2eVZXQWpMLU9CaExlVGZJbWIxSkxiVk53N1RUWHlNbGU3UEY4VktKZWFITF96bUM4MVZ5YXNhWTJXWTR3ZzNVRlQ1MjhYUTB0cS12Tko1SkNwYVJYYi1XRVh5UUZxd09ZUTJWVHhSWGVTa29kX2djSXlrWkZxbkNjMGNDSDh0NVcySC1FUHFUSEFXQ0UxZE5ZYktuOGFEaWpfaklkemNGMklGUE5wRUNVOVlqdWJVd2tIQzVMZnR2V0ljSmlWSVdPRmZ5LVRtVjNEd1lPV19CZ3dlYldUWUNEUjR3U3l4anMxbFV1a0JMSzNKcEhXQWhxelVZdjByVDN1YmNOVjlDYVB4bmhsSC00WkpLd0dXeWJ5RkRMcDZvN1gyY2FIaThqRGFLZVQ3V2I1eHUycTJiRzg1MU96YlI1RGk3aFQ3TDUwTzZEU2ROQWtEWlplYTFNc2hVenZ5SE15ZjhaS0NLeUFkbk4yaVlESEZpcnhkU24yeUpyck5tZUlTc3dVVmk1WUVpaVRYUWlrREFkenFoZzZuUjc5d1lPdkhFb3JBLjNaRy05U3hMejdfY2lLYWlzSkxtbHciDQp9.TrIlVaAIROFLPRTQb825cl6OhKBPsPDlX4e7lPW3_hQ_DTEU2hyZqYsoKgj-9BCiVsD9rnxLe1ORL5euhV8oXZezYADbJony_zWRDEjizr6YjxTKjybKlWmrGpIhbQh30gm6KbvkvheESeNnujP4QD4aD2VzJDigUI__27TmsN7rcxQgGhkiUY0CRcb_UG1r6UVvS-6mTNOlMl2VuuMEqPha0MEoWaJFI-GCOodfGh-25Nc6wcjTdPGRkiHQQynQTUgHcUuNqN4QbhhmH-8xFLzLvMrGXE-WYppHvZLbePA7mp8K3LqDfD-Tr33gV8B1B8v5Hh4KZozMNoqR1Eae3w", "token_type" : "Bearer", "expires_in" : "3600", "scope" : "CBON" } 19/02/26 15:37:50:869 -03:00 - Comando Enviar: TBoletoW_Bradesco 19/02/26 15:37:50:869 -03:00 - Comando Enviar: {"cpfCnpj":{"cpfCnpj":"86623658","filial":"0001","controle":"95"},"produto":"9","negociacao":"42910067592","dataMovimentoDe":0,"dataMovimentoAte":0,"dataPagamentoDe":"10022026","dataPagamentoAte":"19022026","origemPagamento":0,"valorTituloDe":0,"valorTituloAte":0,"paginaAnterior":0} 19/02/26 15:37:50:869 -03:00 - URL: [POST] https://openapi.bradesco.com.br/boleto-hibrido/cobranca-lista/v1/listar 19/02/26 15:37:50:869 -03:00 - Header: Accept: */* Authorization: Bearer eyJhbGciOiJQUzI1NiJ9.ew0KICAgICJ2ZXIiOiAiMi4wIiwNCiAgICAic3ViIjogIjJjZjI5MmU5LWM5tmQtNDgyMC05Y2ExLTRmYzBlOTg3NzFmNCIsDQogICAgImlzcyI6ICJodHRwczovL29wZW5hcGkuYnJhZGVzY28uY29tLmJyL2F1dGgvc2VydmVyLW10bHMvdjIvdG9rZW4iLA0KICAgICJhdWQiOiAiaHR0cHM6Ly9vcGVuYXBpLWF4d2F5LmFwaS5icmFkZXNjby5jb20uYnIiLA0KICAgICJpYXQiOiAxNzcxNTI2NdY5LA0KICAgICJleHAiOiAxNzcxNTMwMTY5LA0KICAgICJzY3AiOiAiQ0JPTiIsDQogICAgImp0aSI6ICJ0TDZ6enNJQnhFTEtLaENRdEFZY1FBPSIsDQogICAgImNuZiI6IHsNCgkieDV0IzI1NiIgOiAid0ZOczVnTTBvL0lxUm0yYzhQYmFXNUJ3WHFvK1FVQ0swSnFLMTRiUFE2MD0iDQp9LA0KICAgICJ0b2tlblR5cGUiOiAiYWNjZXNzIiwNCiAgICAiY2xpZW50VHlwZSI6ICJzZXJ2ZXItbXRscyIsDQogICAgImF1dGhEYXRhIjogImV5SmxibU1pT2lKQk1qVTJSME5OSWl3aVlXeG5Jam9pVWxOQkxVOUJSVkF0TWpVMkluMC5NNzNncnN2clBTWTQ1c0NXeFRSYkpLUkxteHdDTHNHWEtvb2g2Yy1TRnlpT05IT1hGZlNjWHpqcEdRSUVEZ3ZYQU5kMmJWdTBNbkw1N19FZUxLdzJUMWxlNG1Yb1hjMC1HMlRmRlZfTHpuemVGTkJYMld5UmRHNnB0RUV1OGlYYUR1ME1lc1FGNWN2VkpEdHRNTnNJdm16V2prSnpLX0V2RGxUbGNvSFhyeG13a1J3MmVDV2RvM0E4azZJZW1HVEwzS1FybjB5VW9pWTNXU0lzaUtBX3V1QWhlMHJ5cUV0TzJ5ZDh6R2U4WFY1R1h4RUhPdVBkdDZFTkVkRzVteG1yaTltRGZJM3lONXlhMkc4UEdwbFk4N2Rsc0hEeXVsZnpoemhfbWRONnRxNzR6NlV3bXNCQ19WdEU2QlhkdGYwWmlKOGVwSVUzSXRTUTBvUWNDd1RjX0EuWVdQQjlpNWtwZW9LTjVpLS56cmJRN1R3bGZjUGVWX3prTVpqcXA2cXlMLVFBSFlkUGZscy1WSm5uSFp1ZmU2Mzh3YnNYVnFzdnJreHNmcURSbjJjeGZtZE9oTFdFTDBGcDVSOUNKTTFFYmJqOUZOMmFZNUtJVzFIQVN1X3ZHVTN0ZFdBdk5Ud19iT1hzbnA0VkNpWExxNEJSYkRTWVpFWGJWMFI2dzd0eldxRnZpcWhDYldlQzlleWZjZFYxS2tGd3FYbzB5QTNXSE9WMDViZG5DU3U0aHRUMmQzOEVMcFg2eVZXQWpMLU9CaExlVGZJbWIxSkxiVk53N1RUWHlNbGU3UEY4VktKZWFITF96bUM4MVZ5YXNhWTJXWTR3ZzNVRlQ1MjhYUTB0cS12Tko1SkNwYVJYYi1XRVh5UUZxd09ZUTJWVHhSWGVTa29kX2djSXlrWkZxbkNjMGNDSDh0NVcySC1FUHFUSEFXQ0UxZE5ZYktuOGFEaWpfaklkemNGMklGUE5wRUNVOVlqdWJVd2tIQzVMZnR2V0ljSmlWSVdPRmZ5LVRtVjNEd1lPV19CZ3dlYldUWUNEUjR3U3l4anMxbFV1a0JMSzNKcEhXQWhxelVZdjByVDN1YmNOVjlDYVB4bmhsSC00WkpLd0dXeWJ5RkRMcDZvN1gyY2FIaThqRGFLZVQ3V2I1eHUycTJiRzg1MU96YlI1RGk3aFQ3TDUwTzZEU2ROQWtEWlplYTFNc2hVenZ5SE15ZjhaS0NLeUFkbk4yaVlESgZpcnhkU24yeUpyck5tZUlTc3dVVmk1WUVpaVRYUWlrREFkenFoZzZuUjc5d1lPdkhFb3JBLjNaRy05U3hMejdfY2lLYWlzSkxtbHciDQp9.TrIlVaAIROFLPRTQb825cl6OhKBPsPDlX4e7lPW3_hQ_DTEU2hyZqYsoKgj-9BCiVsD9rnxLe1ORL5euhV8oXZezYADbJony_zWRDEjizr6YjxTKjybKlWmrGpIhbQh30gm6KbvkvheESeNnujP4QD4aD2VzJDigUI__27TmsN7rcxQgGhkiUY0CRcb_UG1r6UVvS-6mTNOlMl2VuuMEqPha0MEoWaJFI-GCOodfGh-25Nc6wcjTdPGRkiHQQynQTUgHcUuNqN4QbhhmH-8xFLzLvMrGXE-WYppHvZLbePA7mp8K3LqDfD-Tr33gV8B1B8v5Hh4KZozMNoqR1Eae3w Accept-Encoding: gzip, deflate, compress 19/02/26 15:37:51:102 -03:00 - Retorno Envio: TBoletoW_Bradesco 19/02/26 15:37:51:103 -03:00 - Código do Envio: 200 1.1 OK 19/02/26 15:37:51:103 -03:00 - Retorno Envio: {"status":200,"transacao":"CBTTIAGW","mensagem":"Operação realizada com sucesso.","causa":"CBTT0005 - FIM DE CONSULTA","vtotTitulos":375000,"vtotPag":375000,"vtotOscila":0,"vtotOscilaS":"+","vtotCheque":0,"vtotDinheiro":375000,"difMaior":0,"difMenor":0,"difMenorS":"+","pagina":1,"indMaisPagina":"N","qtdeTitulos":2,"qtdeOcorr":2,"titulos":[{"bancoRecebedor":104,"agenciaRecebedora":9380,"nossoNumero":10185544221185,"digitoNossoNumero":"2","tipoRegistro":"1","seuNumero":"100000565","dataVencimento":"16022026","dataPagamento":"18022026","dataMovimento":"18022026","nomePagador":"CLIENTE TESTE 1 LTDA","descricaoOrigemPagamento":"COMPENSACAO ELETRONI","valorTitulo":145000,"valorPagamento":145000,"valorOscilacao":0,"sinalValorOscilacao":"+","numeroSequenciaTitulo":0,"numeroSequenciaPagamento":0,"codigoFormaCredito":6,"descricaoFormaCredito":"DISP OUTRO BANCO","indicadorPagoCartorio":"N","indicadorPagoQrCode":"N","txId":""},{"bancoRecebedor":341,"agenciaRecebedora":764,"nossoNumero":10185544221187,"digitoNossoNumero":"8","tipoRegistro":"1","seuNumero":"100000575","dataVencimento":"16022026","dataPagamento":"12022026","dataMovimento":"12022026","nomePagador":"CLIENTE TESTE 2 LTDA","descricaoOrigemPagamento":"COMPENSACAO ELETRONI","valorTitulo":230000,"valorPagamento":230000,"valorOscilacao":0,"sinalValorOscilacao":"+","numeroSequenciaTitulo":0,"numeroSequenciaPagamento":0,"codigoFormaCredito":6,"descricaoFormaCredito":"DISP OUTRO BANCO","indicadorPagoCartorio":"N","indicadorPagoQrCode":"N","txId":""}]} 19/02/26 15:37:51:103 -03:00 - Cookies: 19/02/26 15:37:51:103 -03:00 - TS01d300c1=01e8bbc47f94a1760e5b53f20873aea8e0f993923c9f0b7c9bab2f11626566fe50b11941d50487454faa4e1720549525e54b85f287 0327b4484bf09d8e895b23f1d2be8e30=14c67d4f74786362f9c5e9e7a173da1a 19/02/26 15:37:51:103 -03:00 - D:\TESTE\Boletos\Certificado\Bradesco\certificado_bradesco.crt 19/02/26 15:37:51:103 -03:00 - D:\TESTE\Boletos\Certificado\Bradesco\chave_bradesco_key.key 19/02/26 15:37:51:103 -03:00 - Header: 19/02/26 15:37:51:104 -03:00 - HTTP/1.1 200 OK Max-Forwards: 19 Via: 1.1 traffic-58b7f4cff7-zxnrd (), 1.1 traffic-5845d57f95-tc9j6 () Connection: keep-alive X-CorrelationID: Id-a859976966f8dc3f1e0184d2 0; Id-a8599769bfc574dc7a926c0c 0 date: Thu, 19 Feb 2026 18:42:48 GMT set-cookie: 0327b4484bf09d8e895b23f1d2be8e30=14c67d4f74786362f9c5e9e7a173da1a; path=/; HttpOnly; Secure; SameSite=None traceresponse: 00-89c0e83ebc97c47bca0a8f3701fe1654-f0c7df9124271d44-01 x-dt-tracestate: fe3d2b4c-ab88a94d@dt X-Rate-Limit: [{"window":0,"type":"throttle","remaining":99}] x-stateless-closed: eyJmcndrIjp7InRfY2tldCI6IjcxMjZFNDg3M0EzRkU4NTg0Nzc3NEZBNjg3NDUyMTRCNDA0MDQwNDAiLCJpZHNlc3NhbyI6IjAwMUU3N0U2NTAxNTFGNlgwMzlEN0I1RUI3RURENUM4IiwidXN1YXJpbyI6IjAzNjYyMzY1MTAwMDAxODUiLCJ0aXBvVXN1YXJpbyI6IlBBUkNFSVJPX1BKIn19 x-stateless-open: eyJwZXJpZmVyaWNvIjoiT1BFTkFQSSIsImlkaW9tYSI6MSwiY2FuYWwiOjUzNiwiZW1wcmVzYSI6MjM3LCJ1dWlkIjoiZjc1ZWI4NTUtYmEzMi00ZGMwLWJlNzctZWRiMGY0YmUzNTkwIiwiZGVwZW5kZW5jaWEiOjF9 content-language: en-US content-type: application/json Set-Cookie: TS01d300c1=01e8bbc47f94a1760e5b53f20873aea8e0f993923c9f0b7c9bab2f11626566fe50b11941d50487454faa4e1720549525e54b85f287; Path=/; Domain=.openapi.bradesco.com.br Transfer-Encoding: chunked Mais era bom se mais alguém testasse os fontes...1 ponto
-
Entendendo o projeto Android - Flutter Criamos um programa exemplo que se integra com o m-SiTef que você pode utilizar como base para o seu sistema Android (Flutter). m-SiTef O m-SiTef é um aplicativo desenvolvido pela Fiserv para a plataforma Android e funciona através da comunicação por Intents, ou seja, os dados são passados de uma aplicação (Programa exemplo) para outra (m-SiTef) pela própria Intent, sem a necessidade de um SDK ou outra solução para essa comunicação. Para entender melhor como funciona a comunicação entre aplicativos android por intents: https://medium.com/@ashfaque-khokhar/intent-in-android-00f7be3197c0. Exemplo de dados sendo transmitidos de Intent para outra intent. Intent intent = new Intent (getApplicationContext(), SecondActivity.class); intent.putExtra( "NAME" , "Ashu" ); intent.putExtra( "ID" , 21 ); startActivity(intent); Para se integrar ao m-SiTef devemos passar os dados da forma como estão descritos no guia de integração, que você pode encontrar completo aqui: https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Projeto O nosso projeto de integração está no nosso GitHub: https://github.com/Projeto-ACBr-Oficial/acbr-sitef-flutter Antes de clonar o projeto e rodar, não se esqueça de iniciar o SitDemo e estar com o APK do m-SiTef instalado no terminal Android que fará os testes. Saiba mais sobre estes processos: Para conseguir rodar corretamente o nosso programa exemplo você precisa configurar alguns campos passados ao aplicativo do m-SiTef: Endereço IP do SitDemo CNPJ ou CPF CNPJ da Automação Utilize a tela de configuração da aplicação: Entendendo o projeto O Flutter não possui nativamente no lado Dart uma API interna que replique diretamente o comportamento de "mão dupla" das Intents do Android, como o startActivityForResult seguido pelo onActivityResult. Como o Flutter é projetado para ser multiplataforma, ele não expõe nativamente essas entranhas específicas do sistema operacional; por isso, para capturar o retorno de dados de outro aplicativo, você precisa obrigatoriamente recorrer ao MethodChannel. Ele funciona como uma ponte de comunicação essencial, permitindo que você saia do ambiente Dart para executar o comando de busca de dados no Kotlin ou Java e, assim que o sistema Android processar a resposta, essa informação seja transmitida de volta para a sua interface de forma assíncrona. Para entender melhor como funciona o MethodChannel: https://medium.com/kobe-tech/methodchannel-como-executar-código-nativo-no-flutter-8d02f6bb79a3 Por isso, você deverá necessariamente fazer a ponte entre sua aplicação dart e o código nativo (Java ou Kotlin) para a comunicação com a aplicação do m-SiTef. Do lado Dart a classe importante, que chama o lado Kotlin é: lib/data/msitef/msitef_payment_processor.dart Nela chamamos uma função específica do lado kotlin e aguardamos de forma assíncrona a resposta. Do lado Kotlin é onde ocorre a chamada, que no nosso projeto é feito na MainActivity (Tela principal) onde o motor da UI do Flutter atua. android/app/src/main/kotlin/com/mjtech/fintesthub/flutter/fintesthub_flutter/MainActivity.kt É nela que mapeamos os parâmetros passados ao aplicativo do m-SiTef. Fora esta classe, temos: android/app/src/main/kotlin/com/mjtech/fintesthub/flutter/fintesthub_flutter/payment/MSitefPaymentUtils.kt Classe utilizada para as funções auxiliares referentes ao mapeamento de parâmetros. android/app/src/main/kotlin/com/mjtech/fintesthub/flutter/fintesthub_flutter/payment/MSitefPayment.kt Classe de dados criada a partir do mapping vindo do Dart. android/app/src/main/kotlin/com/mjtech/fintesthub/flutter/fintesthub_flutter/payment/MSitefResponse.kt Classe de dados criada a partir da resposta do aplicativo m-SiTef. Menu administrativo O menu administrativo está na tela de configurações e é uma importante funcionalidade que deve ter na sua aplicação para acessar as principais funções como cancelamento, reimpressão, teste de comunicação, etc. O mapeamento dos campos passados para a chamada do menu administrativo fica na tela principal do lado Kotlin: android/app/src/main/kotlin/com/mjtech/fintesthub/flutter/fintesthub_flutter/MainActivity.kt Já a chamada do lado dart e a captura do retorno vindo do lado kotlin é feita na classe: lib/data/msitef/admin/msitef_admin_action.dart Roteiro de pré-homologação Uma etapa importante do processo de desenvolvimento e homologação é o roteiro de pré-homologação. Algumas etapas do roteiro de testes exigem valores exatos como R$25.000 ou R$15,00 e a troca de alguns campos de configurações, foi pensando nestes testes que fizemos este programa exemplo, onde você consegue informar o valor exato na tela de pagamento e modificar os campos de configuração em tempo de execução. Fluxo de pagamento: Esta aplicação já passou pelo roteiro de teste de pré-homologação e você pode utilizar como base para o seu projeto. Em nosso curso -> T.E.F e Meios de Pagamentos, já estão disponíveis as aulas sobre o Pré-Roteiro de Homologação - MSiTef. _________________________________________________________________ Referências - Toda a integração foi guiada pela documentação oficial disponibilizada pela própria Fiserv no link: https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Estamos disponíveis para qualquer dúvida ou sugestão.1 ponto
-
Bom dia, Fiz a atualização/instalação do componente hoje e tudo funcionou 100% Provedor: SilTecnologia Cidade: Vila Velha/ES1 ponto
-
Muito obrigada pela dica. Não sabia que notas da prefeitura de São Paulo também estariam lá no ambiente nacional. Segue o xml. Obrigada 35503081200000473000199000000002452226026143822740.xml1 ponto
-
Ok obrigado pelo retorno. Caso vocês tenham alguma atualização sobre esse tema me informe por favor.1 ponto
-
A Sefaz-MG libera portal para solicitar o credenciamento de desenvolvedores de software de NF-e e NFC-e. Quem pode utilizar esse serviço? Empresas desenvolvedoras de software utilizados na emissão de NF-e e NFC-e por contribuintes da CNAE 4731-8 – Comércio varejista de combustíveis para veículos automotores. Como credenciar? Clicar no botão Solicitar desta página ou acessar diretamente este link e logar no gov.br utilizando a conta da empresa ou o certificado digital. Para maiores informações clique aqui.1 ponto
-
Olá comunidade ! Foi disponibilizado pelo Comitê Gestor do IBS o 2º volume da Cartilha Orientativa da Apuração do Imposto sobre Bens e Serviços. Enquanto o 1º volume focou em trazer orientações sobre a estrutura dos documentos fiscais eletrônicos, a nova publicação tem o foco voltado a utilização do Sistema de Apuração Assistida do IBS. O novo volume é composto por 38 páginas trazendo orientações diversas desde os primeiros passos até o funcionamento do sistema de apuração. Sua leitura é recomendada para todos os contribuintes, contadores e desenvolvedores que desejam entender a lógica do sistema de apuração assistida, independente de os mesmos fazerem parte do grupo de empresas piloto. A cartilha pode ser lida na íntegra AQUI.1 ponto
-
Olá comunidade Gostaria de compartilhar com todos vocês um guia de integração com o m-SiTef da Fiserv no Android. Sobre o ACBr O ACBr é Distribuidor dos produtos e serviços da FISERV Temos condições exclusivas para a comunidade do ACBr, Somos autoridade em TEF. Confira o nosso curso completo, sobre TEF e Meios de Pagamentos Tenha acesso ao nosso Suporte, Demos e Cursos, inscrevendo-se na página: https://projetoacbr.com.br/tef/ Sobre a FISERV A Fiserv é uma líder global em tecnologia para serviços financeiros e pagamentos, presente em mais de 100 países e com mais de 40 anos de atuação. O SiTef (Sistema Inteligente de Transferência Eletrônica de Fundos) é uma solução TEF desenvolvida pela Fiserv para integrar pagamentos eletrônicos diretamente aos sistemas de automação comercial (PDV, ERP, e-commerce). Ele é considerado líder no mercado brasileiro e movimenta bilhões de transações por ano. Sendo o mais aceito, e compatível dos TEFs do mercado Brasileiro O que é o m-SiTef? O m-SiTef é um aplicativo desenvolvido pela Fiserv para a plataforma Android, tanto em celular ou tablet como em POS, que realiza transações (TEF) através do servidor SiTef. https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Requisitos Mínimos O m-SiTef é compatível com Android versão 4.4ou superior. Características Gerais do m-SiTef Antes de apresentar as formas de integração, descreveremos neste capítulo as características gerais do m-SiTef. Ele disponibiliza para o integrador as mesmas funcionalidades da CliSiTef, descritas no documento "SiTef - Interface Simplificada com a aplicação", na Tabela de códigos de funções. Para executar as funções, é obrigatório enviar 4 parâmetros ao m-SiTef: empresaSitef, enderecoSitef, modalidade e CNPJ_CPF. Para a modalidade 0, também é obrigatório o parâmetro valor. data class MSitefConfig( val empresaSitef: String, val enderecoSitef: String, val modalidade: String, val cnpjCpf: String, val valor: String? = null // obrigatório para modalidade 0 ) { fun toIntent(): Intent { return Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", empresaSitef) putExtra("enderecoSitef", enderecoSitef) putExtra("modalidade", modalidade) putExtra("CNPJ_CPF", cnpjCpf) valor?.let { putExtra("valor", it) } } } } Importante: Todos os parâmetros apresentados neste documento em trechos de código são apenas ilustrativos e devem ser substituídos por valores válidos. A seguir, estão listados todos os parâmetros aceitos na aplicação. Tabela 1 - Parâmetros de entrada do m-SiTef Parâmetro Tipo Descrição empresaSitef Obrigatório Empresa SiTef. Tamanho de 8 dígitos alfanuméricos. enderecoSitef Obrigatório Endereço dos servidores do SiTef. Pode conter 1 a 3 endereços separados por ;. Formato: IP, IP:PORTA ou NOME:PORTA. Porta padrão: 4096. Não informar URL. terminalSitef Opcional Número de terminal SiTef. Se não informado, o m-SiTef usará o número de série do APOS ou o UUID do aparelho Android. modalidade Obrigatório Funcionalidade da CliSiTef. Ex: 0 = Pagamento, 200 = Cancelamento, 114 = Reimpressão. CNPJ_CPF Obrigatório CNPJ ou CPF do estabelecimento, sem caracteres especiais. valor Obrigatório p/ pagamento Valor da venda. Numérico até 12 dígitos, sendo os 2 últimos decimais. operador Opcional Código do operador. Alfanumérico até 20 caracteres. Data Obrigatório Data fiscal no formato AAAAMMDD. Hora Obrigatório Hora fiscal no formato HHMMSS. numeroCupom Obrigatório Número do cupom fiscal. Alfanumérico até 20 caracteres. numParcelas Opcional Número de parcelas em caso de compra parcelada. restricoes Opcional Opções de pagamento que não aparecerão no fluxo. Formato: <Opção>;<Opção>;... transacoesHabilitadas Opcional Opções de pagamento que serão habilitadas. Formato: {<Func1>;<Func2>;...} comExterna Obrigatório Define qual serviço TLS será usado: 0 = Sem TLS, 1 = TLS Software Express, 2 = TLS WNB Comnect, 3 = TLS Gsurf, 4 = TLS GWP (Fiserv). isDoubleValidation Obrigatório p/ TLS SE 0 = validação simples, 1 = validação dupla. cnpj_automacao Obrigatório CNPJ da empresa que desenvolveu a automação comercial. cnpj_facilitador Obrigatório CNPJ do Facilitador (Van). timeoutColeta Opcional Tempo de timeout em segundos para coletas. Padrão: 60s. Valor 0 ou negativo desativa o timeout. pinpadMac Opcional MAC Address Bluetooth do Pinpad. Formato: 00:00:00:00:00:00. tipoPinpad Obrigatório p/ USB ANDROID_USB = pinpad USB. ANDROID_BT = pinpad Bluetooth. acessibilidadeVisual Opcional 0 = desabilitado (padrão), 1 = habilitado. Ativa fontes maiores, alto contraste e text-to-speech. otp Opcional Código obrigatório quando utilizada comunicação com TLS GSurf. dadosSubAdqui Opcional Informações complementares para personalizar o que será impresso na fatura do comprador. tipoCampos Opcional Permite informar valores pré-determinados para campos solicitados pela CliSiTef. Formato JSON: {"campo1":"val1", "campo2":"val2"}. clsit Opcional Para adicionar, atualizar ou remover campos do arquivo de configuração CLSIT. Público-Alvo Parceiros que desenvolvam para Android, e desejam se integrar com o SiTef via m-SiTef, usando Intents. Como iniciar? Possuímos programa exemplo para Android Nativo (Kotlin) e Flutter de onde partiremos para explicarmos o passo a passo de como integrar o m-SiTef em seu projeto/solução. Etapas Para que você consiga testar em nossos programas exemplos siga as etapas abaixo primeiramente. Integração O primeiro passo é instanciar um objeto Intent passando o nome da aplicação como argumento: br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF. Através dessa informação, o Android buscará automaticamente o m-SiTef entre os aplicativos instalados no dispositivo. Em seguida, devem ser configurados os parâmetros obrigatórios através da função putExtra(String, String). Por fim, é executada a função startActivityForResult(Intent, int) passando o objeto Intent e um número inteiro arbitrário como ID (neste documento usaremos 1234). Menu Administrativo: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("modalidade", "110") putExtra("CNPJ_CPF", "12345678912345") } startActivityForResult(intent, 1234) Exemplo Pagamento: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("operador", "0001") putExtra("data", "20140312") putExtra("hora", "150000") putExtra("numeroCupom", "1") putExtra("modalidade", "0") putExtra("valor", "9000") putExtra("CNPJ_CPF", "12345678912345") putExtra("timeoutColeta", "30") putExtra("comExterna", "0") } startActivityForResult(intent, 1234) Exemplo Pagamento Débito à vista: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("operador", "0001") putExtra("data", "20140312") putExtra("hora", "150000") putExtra("numeroCupom", "1") putExtra("modalidade", "2") putExtra("valor", "9000") putExtra("restricoes", "TransacoesHabilitadas=16") putExtra("CNPJ_CPF", "12345678912345") putExtra("timeoutColeta", "30") putExtra("comExterna", "0") } startActivityForResult(intent, 1234) Exemplo Pagamento Crédito à vista: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("operador", "0001") putExtra("data", "20140312") putExtra("hora", "150000") putExtra("numeroCupom", "1") putExtra("numParcelas", "1") putExtra("modalidade", "3") putExtra("valor", "9000") putExtra("restricoes", "TransacoesHabilitadas=26") putExtra("CNPJ_CPF", "12345678912345") putExtra("timeoutColeta", "30") putExtra("comExterna", "0") } startActivityForResult(intent, 1234) Exemplo Pagamento Crédito parcelado: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("operador", "0001") putExtra("data", "20140312") putExtra("hora", "150000") putExtra("numeroCupom", "1") putExtra("numParcelas", "3") putExtra("modalidade", "3") putExtra("valor", "9000") putExtra("restricoes", "TransacoesHabilitadas=27") putExtra("CNPJ_CPF", "12345678912345") putExtra("timeoutColeta", "30") putExtra("comExterna", "0") } startActivityForResult(intent, 1234) Exemplo Transação PIX: Opção 1 - Pelo menu carteiras digitais (Modalidade 0) val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("modalidade", "0") putExtra("CNPJ_CPF", "12345678912345") putExtra("cnpj_automacao", "12345678912345") putExtra("transacoesHabilitadas", "7;8;") } startActivityForResult(intent, 1234) Opção 2 - Chamando PIX diretamente (Modalidade 122) val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("modalidade", "122") putExtra("CNPJ_CPF", "12345678912345") putExtra("cnpj_automacao", "12345678912345") putExtra("transacoesHabilitadas", "7;8;") putExtra("restricoes", "CarteirasDigitaisHabilitadas=027160110024") } startActivityForResult(intent, 1234) Exemplo Cancelamento: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("modalidade", "200") putExtra("CNPJ_CPF", "12345678912345") } startActivityForResult(intent, 1234) O campo cnpj_automacao é de extrema importância — é através dele que a Fiserv reconhece o estabelecimento para o repasse financeiro. Retorno do m-SiTef Após a execução, o m-SiTef retorna ao app que o acionou através do método onActivityResult. O resultCode indica o status: RESULT_OK (-1) = sucesso ou RESULT_CANCELED (0) = cancelado. Tabela 2 - Parâmetros de saída do m-SiTef Parâmetro Descrição CODRESP Código de resposta da transação. COMP_DADOS_CONF Dados para confirmação da transação na CliSiTef. CODTRANS Código da transação: 00 = Cheque, 01 = Débito, 02 = Crédito. TIPO_PARC 00 = À vista, 01 = Pré-Datado, 02 = Parc. Estabelecimento, 03 = Parc. Administradora. REDE_AUT Rede autorizadora da transação. BANDEIRA Bandeira do cartão utilizado. NSU_SITEF NSU do servidor SiTef. NSU_HOST NSU do Host Autorizador. COD_AUTORIZACAO Código de autorização (somente crédito). NUM_PARC Quantidade de parcelas. Ausente ou 0/1 = à vista. VIA_ESTABELECIMENTO Cupom da via do estabelecimento. VIA_CLIENTE Cupom da via do cliente. VLTROCO Valor aprovado para troco (quando aplicável). TIPO_CAMPOS JsonObject com todos os campos da transação CliSiTef. Tabela 3 - Valores do CODRESP CODRESP Descrição 0 Sucesso. 1 Endereço IP inválido ou não resolvido. 2 Código da loja inválido. 3 Código de terminal inválido. 6 Erro na inicialização do Tcp/Ip. 7 Falta de memória. 8 CliSiTef não encontrada ou com problemas. 9 Configuração de servidores SiTef excedida. 10 Erro de acesso na pasta CliSiTef. 11 Dados inválidos passados pela automação. 12 Modo seguro não ativo. Outro positivo Negada pelo autorizador. -1 Módulo não inicializado. -2 Operação cancelada pelo operador. -3 Modalidade inexistente ou inválida. -4 Falta de memória no PDV. -5 Sem comunicação com o SiTef. -6 Operação cancelada pelo usuário no pinpad. -10 Parâmetro obrigatório não informado. -15 Operação cancelada pela automação comercial. -20 Parâmetro inválido. -40 Transação negada pelo servidor SiTef. -41 Dados inválidos. -43 Problema na execução de rotina no pinpad. -50 Transação não segura. -100 Erro interno do módulo. Outro negativo Erros detectados internamente. Exemplo de tratamento do retorno: override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == 1234) { if (resultCode == RESULT_OK) { println("CODRESP: " + data?.extras?.getString("CODRESP")) println("COMP_DADOS_CONF: " + data?.extras?.getString("COMP_DADOS_CONF")) println("CODTRANS: " + data?.extras?.getString("CODTRANS")) println("TIPO_PARC: " + data?.extras?.getString("TIPO_PARC")) println("REDE_AUT: " + data?.extras?.getString("REDE_AUT")) println("BANDEIRA: " + data?.extras?.getString("BANDEIRA")) println("NSU_SITEF: " + data?.extras?.getString("NSU_SITEF")) println("NSU_HOST: " + data?.extras?.getString("NSU_HOST")) println("COD_AUTORIZACAO: " + data?.extras?.getString("COD_AUTORIZACAO")) println("NUM_PARC: " + data?.extras?.getString("NUM_PARC")) println("VIA_ESTABELECIMENTO: " + data?.extras?.getString("VIA_ESTABELECIMENTO")) println("VIA_CLIENTE: " + data?.extras?.getString("VIA_CLIENTE")) } } } 🛜 Ambiente Para realizar as transações no m-SiTef você necessita de um endereço SiTef que pode ser emulado em sua máquina via SitDemo e o próprio m-SiTef instalado no terminal Android. Será necessário instalar o Emulador de SiTef em sua máquina, o SitDemo Se você já preencheu o formulário em https://projetoacbr.com.br/tef/ nossa equipe já lhe respondeu com um e-mail, com as instruções de como Baixar o SitDemo Acompanhe o processo de instalação do SitDemo, através desse vídeo abaixo: Após a instalação estar concluída, abra o SitDemo. APK do m-SiTef O APK do m-SiTef também será enviado a você pela equipe do ACBr, após o início da Parceria. É importante você nos informar, em qual dispositivo irá instalar o APK. Exemplos: Sumni P2 GPOS700 PAX A920 Newland N910 Ingenico DX8000 PDV D2 Mini com PinPad USB Os dispositivos do tipo SmartPOS, ou seja, com leitura de Cartão/Chip integrado, possuem segurança PCI. E isso requer que os aplicativos (APKs) sejam assinados com chaves específicas para poderem ser instalados nesses terminais. Por isso, existe uma versão específica de m-Sitef, para cada dispositivo SmartPOS Com o APK em mãos você deve instalar no terminal que irá fazer os testes... Projeto Atualmente possuímos exemplos de integração com o m-SiTef para Android Nativo com Kotlin e Flutter. Android (Kotlin) Clone o programa exemplo disponível no nosso GitHub: https://github.com/Projeto-ACBr-Oficial/acbr-sitef-android Após clonar o projeto em sua máquina, abra o na sua IDE (Android Studio, VS Code, etc.). Entendendo a integração: Flutter Clone o programa exemplo disponível no nosso GitHub: https://github.com/Projeto-ACBr-Oficial/acbr-sitef-flutter Após clonar o projeto em sua máquina, abra o na sua IDE (Android Studio, VS Code, etc.). Entendendo a integração: Rodar o projeto Após essas etapas e configurações você consegue rodar nosso programa exemplo integrando com o m-SiTef em um terminal Android. Roteiro Pré-Homologação m-SiTef Em nosso curso -> T.E.F e Meios de Pagamentos, já estão disponíveis as aulas sobre o Pré-Roteiro de Homologação - MSiTef. Referências - Toda a integração foi guiada pela documentação oficial disponibilizada pela própria Fiserv no link: https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Estamos disponíveis para qualquer dúvida ou sugestão.1 ponto
