- Utilize as boas práticas de programação Android.
- Para iniciar o desenvolvimento, você deve adicionar os nossos repositórios no build.gradle do seu projeto e depois adicionar a dependência para o core da SDK.
- Ao chamar um provider, uma ação será executada. Para que o usuário tenha uma melhor experiência e tenha o feedback da operação que está fazendo, aconselhamos sempre mostrar o progresso dessa ação.
- Para garantir que o portador do cartão não tenha nenhuma cobrança indevida, sugerimos que seja chamada a função 'reversalProvider' a cada hora, para cancelar as transações com erro.
- É de responsabilidade do desenvolvedor garantir a segurança da informação dentro do aplicativo.
- Garantir comunicações com o TLS mínimo 1.2
- Seguir as boas práticas de segurança do Android.
- Não expor dados sensíveis dos clientes, tais como, senhas, informações pessoais e de negócio.
- Integridade dos dados.
- Tamanho do APK – é importante que seu APK não ultrapasse 70Mb de armazenamento, isso pode gerar impactos na assinatura das aplicações e download nos terminais.
- Evite funcionalidades com timeout infinito que possa deixar sua aplicação travada ou aguardando algum evento.
- Não manter a antena do Mifare ligada, apenas ligar quando for ser utilizada.
- Uso consciente e controlado do consumo de dados via redes móveis (Chip Stone).
- A Stone utiliza um proxy na conectividade via chip Stone, portanto é necessário que nos envie todas as URLs externas que utiliza em sua aplicação.
- Uso consciente do consumo de bobina de impressão – evite imagens grandes, muitos espaços em branco, deixar grandes espaços entre linhas, espaços no início e final dos comprovantes.
- A “customização de impressão” tem o intuito de ser um adicional a impressão da venda, ficha, ticket e etc, não é recomendado a geração de grandes relatórios.
- Uso consciente do consumo de memória e CPU.
- Uso consciente e controlado de bateria, seguindo os padrões já estabelecidos para Android
- Gestão do cancelamento, deixar claro o fluxo de stakeholders que podem cancelar dentro do app e impor uma validação do cliente para permitir o cancelamento da transação.
Não é permitido!
- É expressamente proibido "WebApps", "WebView" e "WebSockets" devido a medidas de segurança. Desenvolvimentos com tecnologias baseadas em Webview, são proibidas. Exemplo:Ionic, Cordova.
- É expressamente proibido o uso de comunicações abertas entre POS e Servidor, tais como Websockets e MQTT, estas tecnologias tornam o POS ativo nas comunicações, não sendo permitido pela norma PCI.
- O Google Play Services não estará disponível, portanto algumas funcionalidades que dependem dele (ex.: Play Services Location, Push Notifications) não funcionarão.
- O aplicativo não pode realizar alterações nas configurações de sistema do Android (Ex: data, hora, localização, etc). Fique atento se estiver usando um framework não nativo, pode haver interferência na conversão de horas
- Acesso a recursos externos impróprios (USB, Google Play...). Terminais de produção têm tais recursos bloqueados.
- O Ícone, logo e Nome do aplicativo não podem estar vinculado às identificações visuais dos itens abaixo:
- Stone Co e seus produtos;
- Concorrentes diretos ou indiretos da Stone Co.
- Nome de fabricantes ou modelo de terminais.
Permissões no AndroidManifest.xml
As permissões abaixo “NÃO SÃO PERMITIDAS”, por permitirem que o aplicativo acesse alguns recursos do Android ou recursos de hardware não permitidos pela Stone, ou também por colocar em risco a operação de outros aplicativos.
A Stone pode adicionar outras permissões proibidas durante o processo de homologação.
Atenção: Nenhuma permissão de sistema deve ser utilizada pelo app.
Permissões | Descrição |
---|---|
ACCESS_INSTANT_APPS | |
BROADCAST_STICKY | Permite que um aplicativo transmita intents persistentes. São broadcasts cujos dados são retidos pelo sistema depois de finalizados, para que os clientes possam recuperá-los rapidamente sem ter que esperar pelo próximo broadcast. |
CHANGE_NETWORK_STATE | Permite que os aplicativos alterem o estado de conectividade da rede. |
CHANGE_WIFI_STATE | Permite que os aplicativos alterem o estado da conectividade Wi-Fi. |
DELETE_PACKAGES | Permite que um aplicativo exclua pacotes. |
DOWNLOAD_WITHOUT_NOTIFICATION | |
DUMP | Permite que um aplicativo recupere informações de despejo de estado dos serviços do sistema. |
INSTALL_PACKAGES | Permite que um aplicativo instale pacotes. |
INSTALL_SHORTCUT | Permite que um aplicativo instale um atalho no Launcher. |
INTERACT_ACROSS_USERS_FULL | Permite todas as interações possíveis entre os usuários. |
KILL_BACKGROUND_PROCESSES | Permite que um aplicativo chame ActivityManager.killBackgroundProcesses(String). |
MOUNT_UNMOUNT_FILESYSTEMS | Permite montar e desmontar sistemas de arquivos para armazenamento removível. |
REQUEST_INSTALL_PACKAGES | Permite que um aplicativo solicite a instalação de pacotes. Aplicativos direcionados a APIs maiores que 25 devem ter essa permissão para usar Intent.ACTION_INSTALL_PACKAGE. |
SET_TIME | Permite que os aplicativos definam a hora do sistema diretamente. |
SET_TIME_ZONE | Permite que os aplicativos definam o fuso horário do sistema diretamente. |
SET_WALLPAPER | Permite que os aplicativos definam o papel de parede. |
SET_WALLPAPER_HINTS | Permite que os aplicativos definam as dicas do papel de parede. |
SYSTEM_ALERT_WINDOW | Permite que um aplicativo crie janelas usando o tipo WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, mostrado acima de todos os outros aplicativos. Muito poucos aplicativos devem usar essa permissão; essas janelas destinam-se à interação no nível do sistema com o usuário. |
USB_PERMISSION | |
USB_SET | |
USE_PERIPHERAL_IO | Lista e abre periféricos. |
WAKE_LOCK | Permite o uso de PowerManager WakeLocks para evitar que o processador durma ou a tela escureça. |
WRITE_CALENDAR | Permite que um aplicativo grave os dados do calendário do usuário. |
WRITE_OWNER_DATA | |
WRITE_SECURE_SETTINGS | Allows an application to read or write the secure system settings. |
WRITE_SETTINGS | Permite que um aplicativo leia ou grave as configurações do sistema. |
WRITE_APN_SETTINGS | Permite que os aplicativos gravem as configurações de apn e leiam campos confidenciais de configurações de apn existentes, como usuário e senha. |
READ_LOGS | Permite que um aplicativo leia os arquivos de log do sistema de baixo nível. |
READ_USER_DICTIONARY | Permite que o aplicativo leia todas as palavras, nomes e frases que o usuário possa ter armazenado no dicionário do usuário. |
READ_PHONE_STATE | Permite acesso somente leitura ao estado do telefone, incluindo as informações atuais da rede celular, o status de qualquer chamada em andamento e uma lista de qualquer PhoneAccounts registrado no dispositivo. |
GET_ACCOUNTS | Permite o acesso à lista de contas no Serviço de Contas. |
DEVICE_POWER | |
GET_TASKS | Deprecated apartir da API 21 |
MODIFY_PHONE_STATE | Permite modificação de estado do telefone - Liga, Desliga, MMI, etc. |
REBOOT | Permite o reboot do aparelho. |
RECEIVE_BOOT_COMPLETED | Permite que um aplicativo receba o Intent.ACTION_BOOT_COMPLETED que é transmitido após a conclusão da inicialização do sistema. |
WRITE_EXTERNAL_STORAGE | Permite que um aplicativo grave em armazenamento externo. |
Guia do Desenvolvedor SDK Android
Para maiores informações acessar o doc: Guia do Desenvolvedor SDK Android