🇧🇷
- Provider
CancellationProvideragora retorna o actionCode do cancelamento pelo métodocancellationProvider.getActionCode()e o status do cancelamento pelocancellationProvider.getResponseCodeEnum(). - Métodos
getTransactionStatus()egetStatusAsString()doCancellationProviderforam removidos em prol dos novos métodos citados acima. - Corrigido bug onde a mensagem de "Transação Aprovada" não aparecia no pinpad em algumas transações
- Novo método
activate(String stoneCode)para ativar e adicionar um novo stone code na lista de stone codes ativos. - Novo método
deactivate(String stoneCode)para desativar somente um stone code da lista de ativos - Corrigido bug onde versões anteriores da SDK recebiam NPE em pinpads já salvos sem o campo novo
acqidxdoPinpadObject.
🇺🇸
- Provider
CancellationProvidernow returns the cancellation actionCode viacancellationProvider.getActionCode()and cancellation status viacancellationProvider.getResponseCodeEnum(). - Methods
getTransactionStatus()andgetStatusAsString()fromCancellationProviderwere removed for the use of the methods mentioned above. - Fixed bug where "Transação Aprovada" message did not appear on the pinpad in some transactions.
- New method
activate(String stoneCode)to activate and add a new stone code in the list of active stone codes. - New method
deactivate(String stoneCode)to deactivate only one stone code from active list. - Fixed bug where earlier SDK versions was getting NPE on pinpads already stored without the new field
acqidxonPinpadObject.
🇧🇷
- Nova dependência OkHttp para substituir o
HttpUrlConnectionnas requests da SDK para nossos servidores; - Forçando TLS >= 1.2 em todas as requests da SDK;
- Novo Provider
CaptureTransactionProviderpara capturar transações cuja requisição foi feita com captura posterior (setandostoneTransaction.capture = false); - Correção na efetuação de transações da bandeira
SODEXO; - Melhoria na captura do
CVMdo pinpad, forçando o retorno; - Gerenciando o uso da chave Elavon/Stone internamente. Não é mais necessário setar
Stone.setAcquirer(Acquirer acquirer). Se o Pinpad não tiver nenhuma das duas chaves, a SDK retornará o erroErrorsEnum.PINPAD_WITHOUT_KEYdurante a conexão do pinpad noBluetoothConnectionProvider; - Novo ambiente
INTERNAL_CERTIFICATIONpara validação do app pelo time de integrações da Stone;
🇺🇸
- New dependency OkHttp to replace
HttpUrlConnectionrequests to our servers; - Forcing TLS >= 1.2 in all SDK requests;
- New provider
CaptureTransactionProviderto capture transactions which request was mad without capture (settingstoneTransaction.capture = false); - Fix in transactions with capture of brand
SODEXO; CVMcapture from pinpad improved, forcing the return;- Managing the use of the Elavon/Stone key internally. It is no longer necessary to set
Stone.setAcquirer (Acquirer acquirer). If the Pinpad doesn't have any of the two keys, the SDK will return theErrorsEnum.PINPAD_WITHOUT_KEYerror while connecting the pinpad onBluetoothConnectionProvider; - New environment
INTERNAL_CERTIFICATIONfor app validation by Stone integrations team;
- Adicionado campo
subMerchantAddressnoTransactionObjectpara editar o endereço do lojista que está efetuando a transação; - Adicionado campo
subMerchantCategoryCodenoTransactionObjectpara editar o mcc do lojista que está efetuando a transação; - Adicionado campo
shortNamenoTransactionObjectpara armazenar em banco opção setada no camposhortNamedoStoneTransaction; - Adicionado campo
capturenoTransactionObjectpara armazenar em banco opção setada no campocapturedoStoneTransaction; - Construtor
CancellationProvider(Context context, int idFromTransactionInBase, UserModel userModel)depreciado. Em vez dele, useCancellationProvider(Context context, TransactionObject transaction) - Correção no migration da tabela de
Transactiononde algumas colunas não estavam sendo inseridas quando atualizadas de versões muito antigas da SDK;
- Corrigido bug onde a transação era efetuada mas não era salva no banco
- Correção na leitura de informações de cartões ELO.
- Enum
GENERIC_ERRORutilizado peloActiveApplicationProviderpara quando o stone code não é reconhecido foi alterado paraINVALID_STONE_CODE_OR_UNKNOWN. - Melhoria na estrutura interna e na performance do
TransactionProvider. - Correção no envio do comprovante por email, colocando campo "assinatura" quando não era necessário.
- Corrigido bug onde eventualmente o método
getListOfErrors()retornavanull
- Corrigido bug quando o
BluetoothConnectionProviderdisparava o eventoonSuccessduplicado. - Corrigido bug da SDK baixando tabelas toda vez que abria o app.
- Support Library atualizado para
27.0.2.
- Adicionado campo
cancellationDatenoTransactionObjectpara armazenar a data do cancelamento; - Adicionado campo
lastConnectionAtnoPinpadObjectpara armazenar a data da última vez que houve conexão com o pinpad; - Todos os erros durante a conexão com o device bluetooth que retornavam em dialog. Agora os erros são adicionados no array de erros do provider. Segue exemplo de uso:
bluetoothConnectionProvider.setConnectionCallback(new StoneCallbackInterface() {
public void onSuccess() {
//handle success
}
public void onError() {
List<ErrorsEnum> listOfErrors = bluetoothConnectionProvider.getListOfErrors();
if (listOfErrors.contains(ErrorsEnum.PINPAD_ALREADY_CONNECTED)) {
//Do something
} else if (listOfErrors.contains(ErrorsEnum.TIME_OUT)) {
//Do something
} else if (listOfErrors.contains(ErrorsEnum.DEVICE_NOT_COMPATIBLE)) {
//Do something
} else if (listOfErrors.contains(ErrorsEnum.IO_ERROR_WITH_PINPAD)) {
//Do something
}
}
});
- O método
Stone.getPinpadListSize()não mais retornanullquando a lista de pinpads estiver vazia - Refatorado o gerenciamento das versões das tabelas, corrigindo o problema de carregar tabelas a cada transação;
- Construtores
LoadTablesProvider(Context, GcrRequestCommand, PinpadObject)eLoadTablesProvider(Context, String, PinpadObject)depreciados. UseLoadTablesProvider(Context context, PinpadObject)em vez disso;
- SendEmailProvider depreciado em prol do uso do
SendEmailTransactionProvider - Adicionado flag
merchantReceipt(default false) pra informar se é pra enviar a via do cliente ou do estabelecimento noSendEmailTransactionProvider - Método
setEmailToSentesetEmailsToSentda classeSendEmailTransactionProviderdepreciado, usaraddTo()/setTo()para setar o destinatário do email - Possibilidade de definir o remetente do email no SendEmailTransactionProvider no método
setFrom - Adicionado campo
balanceno TransactionObject pra transações voucher (SODEXO, Ticket, etc...) - Bug de cartões (principalmente HIPER) retornando
UNKNOWNfixed - Novos métodos (
findTransactionWithAuthorizationCode(),findTransactionWithInitiatorTransactionKey()efindTransactionByFilter()) no TransactionDAO para busca das transações no banco local da SDK.
- Permissões
android.permission.VIBRATEeandroid.permission.ACCESS_WIFI_STATEremovidas da SDK - Novos campos
cvmeserviceCodenoTransactionObject - appcompat-v7 atualizado para
26.1.0 - Enum de feedback
CARD_REMOVEdeprecated por não ser uma mensagem alterável. - Enum de feedback
REVERSALdeprecated pois não mandamos nenhuma mensagem para o pinpad - Revertendo transações quando negado pelo cartão
- Bug de mostrar mensagem
RETIRE O CARTÃOem cartões mágnéticos fixed - gson atualizado de
2.8.1para2.8.2 - Várias melhorias de performance
- Adicionando
REVERSING_TRANSACTION_WITH_ERRORao enumAction - Revertendo transações automaticamente, quando ocorrer um erro
As transações que não foram processadas por um erro de conexão devem ter canceladas utilizando o
ReversalProvider
- Adicionando o status
WITH_ERRORpara transações com erro e que precisam ser canceladas (ex: timeout) - Adicionando o
ReversalProviderpara varrer o banco de transações e cancelar as transações com o statusWITH_ERROR - Correção no cancelamento de transações
exemplo do ReversalProvider
ReversalProvider reversalProvider = new ReversalProvider(this);
reversalProvider.setDialogMessage("Cancelando transação com erro");
reversalProvider.isDefaultUI();
reversalProvider.setConnectionCallback(new StoneCallbackInterface() {
@Override
public void onSuccess() {
// code code code
}
@Override
public void onError() {
// code code code
}
});- Downgrade da targetSdkVersion de 26 para 25 devido a problemas de compatibilidade com APIs antigas
- URL de ativação do ambiente
CERTIFICATIONalterada - Corrigido bug ao executar a migration de versões anteriores à 2.3.0
- Downgrade da XStream para 1.4.7 devido a problemas com Java8 nas versões mais novas
- Remoção da permissão
READ_PHONE_STATEda SDK!
- Localização do
BluetoothConnectionProvidercorrigida.
- Melhoria e update das dependências
- Personalização das mensagens exibidas no Pinpad. No
TransactionProvider, dois novos métodos foram implementados
setPinpadFeedbackMessage(PinpadFeedback key, String message)para customizar uma mensagem específicasetPinpadFeedbackMessages(Map<PinpadFeedback, String> pinpadFeedbackMessages)para personalizar todas as mensagens de uma vez
PinpadFeedback.DENIED //"TRANSAC NEGADA"
PinpadFeedback.PROCESSING //"PROCESSANDO.."
PinpadFeedback.APPROVED //"TRANSAC APROVADA"
PinpadFeedback.CARD_REMOVE //"RETIRE O CARTAO"
PinpadFeedback.CARD_WITH_PROBLEMS //"ICC COM PROBLEMAS"
PinpadFeedback.DENIED_BY_NET //"TRANSAC NEGADA PELA REDE"
PinpadFeedback.CARD_INVALIDATED //"CARTAO ESTA INVALIDADO"
PinpadFeedback.DENIED_BY_CARD //"TRANSAC NEGADA PELO CARTAO"- Melhorias de perfomance
- Adicionando suporte para conexões via cabo (ethernet)
- Campo
signatureem caso de necessidade de armazenar a assinatura da transação. - Melhorias de perfomance
- Agora a SDK está em no artifactory! siga as instruções de instalação no readme.
- Possibilidade de escolher o uso de Pinpads Elavon (que não possuem chaves Stone)
- Todos os Providers recebem
Contextem vez deActivityno construtor - Nova interface
StoneActionCallbackcom um métodovoid onStatusChanged(Action action)para receber eventos adicionais do provider. Esta interface herda de StoneCallbackInterface, então seu uso é opcional. Por enquanto existem somente eventos para transação, mas em breve terá eventos para outros providers.
TRANSACTION_WAITING_CARDEsperando cartão ser inserido/passadoTRANSACTION_WAITING_PASSWORDEsperando senha do cartão (se houver)TRANSACTION_SENDINGEnviando transação para o servidorTRANSACTION_WAITING_REMOVEEsperando a remoção do cartão do pinpad (se for chip)
- Agora você pode desativar a SDK usando
deactivate()emActiveApplicationProvider - Método
execute()doActiveApplicationProviderdescontinuado. Em vez disso, use o métodoactivate(List<String> stoneCodes) - Corrigido bug em
LoadTablesProviderno qual pedia um objeto desnecessário no construtor. - Novo campo
entryModeno model da transação informando se a transação foi efetuada com chip ou tarja. - Campos e métodos descontinuados.
- Corrigido problema na seleção do ambiente de
SANDBOX
- Nova forma de instalação da lib, utilizando aar (instruções detalhadas no README), em breve teremos um repositório para distribuir nossas bibliotecas!
- Agora você pode definir qual ambiente você quer usar em runtime, usando
// para integração
Stone.setEnvironment(Environment.SANDBOX)
// produção
Stone.setEnvironment(Environment.PRODUCTION)Stone.developerMode()deprecated em prol do novo modo de escolha de ambiente mencionado acima.- Suporte para novas bandeiras: Elo, Alelo. (Verifique disponibilidade da bandeira no seu stone code com o time de integrações)
- Correções no envio de algumas transações para stone.
- Bug ao desconectar o pinpad fixed
- Hot fix do endpoint do TMS
- Correções de erro na ativação e download das tabelas AID e CAPK
- Correção do ambiente de homologação
- Suportando a bandeira Ticket
- Correções do erro
ClassNotFoundExceptionem algumas classes da SDK
- Opção de enviar uma transação não capturada
StoneTransaction stoneTransaction = new StoneTransaction();
// set dos valores da transação
stoneTransaction.disableCapture(); // desabilita a captura da transaçãoPor padrão a transação é capturada
- Transações com tarja sem senha e com senha
- Correções nas conexões com a internet
- Melhorias nas transações com tarja
- Correções no
BluetoothConnectionProvider - Adição do erro
PINPAD_ALREADY_CONNECTEDquando se tenta criar conexão com um pinpad já conectado. - Outras pequenas correções
- Correções do ambiente de staging para integradores
- Correções no email com transações parceladas
- Atualização do endpoint de teste
- Pequenas correções
- Melhoria de desempenho no DB
- Correções no
SendEmailProvider - Adição do Provider
SendEmailTransactionProviderpara enviar comprovantes por email
// exemplo de uma Activity
TransactionObject transactionObject = new TransactionDAO(this).findTransactionWithId(idTransaction);
SendEmailTransactionProvider emailTransactionProvider = new SendEmailTransactionProvider(this, GlobalInformations.getUserModel(0), transactionObject);
emailTransactionProvider.setWorkInBackground(false);
emailTransactionProvider.setEmailToSent("email@dominio.com");
emailTransactionProvider.setDialogMessage("Enviando e-mail...");
emailTransactionProvider.execute();- Homologações com o novo protocolo de conexão
- Pequenas correções
- Alteração da Gson 1.7.2 para Gson 2.3
- Adição do APK no repositório
- Adição do método de troca para o modo desenvolvedor
GlobalInformations.developerMode();- Atualizações no banco de transações;
- Correções na impressão (QR Code com PAX);
- Remoção da logo da Stone do PrintProvider;
- Alteração do ambiente de homologação;
- Correções em geral;
- Adição do método isConnectedToPinpad() na GlobalInformations;
Método de um parceiro:
// este método apenas verifica se a lista está ou não vazia,
// para testar a sua conexão com o Pinpad, aconselhamos que use o DisplayMessageProvider
public static boolean isConnectedToPinpad() {
return GlobalInformations.getPinpadListSize() != null &&
GlobalInformations.getPinpadListSize() > 0 &&
GlobalInformations.getPinpadFromListAt(0) != null;
}- Melhorias no banco de transações (TransactionDAO) e Pinpads (PinpadDAO);
- Múltiplas conexões com Pinpads (1 device android para N Pinpads);
- Documentação atualizada;
- Melhorias gerais no gerenciamento de conexões Bluetooth;
- Alterações em alguns construtores
- Corrigida a Exception que era dada quando não havia conexão com um Pinpad no DisplayMessageProvider
- PrintReceiptProvider (imprime comprovante no padrão da Stone);
- ValidateTransactionByCardProvider (captura um cartão e retorna todas as transações passadas com ele);
- Ativação com multiplos Stone Codes;
- Corrigido o erro com Xamain;
- Corrigido problemas com impressões da Ingênico;
- Alguns Providers tiveram suas assinaturas modificados;
- Hotfix nos tipos de conexão;
- Correções e melhorias na Demo;
- Documentação na pasta /doc/;
- Demo utilizando o Android Studio;
- Demo - exemplo do DisplayMessageProvider;
- Hotfix na impressão com Ingenico (Logo da Stone);
- Melhores tratamentos no bluetooth;
- Melhorias na impressão (tratamentos para status diferente de 00);
- Correções na Demo (Extra)
- Hotfix no QR Code com Pinpads da Ingenico;
- Pequenas correções na transação (update na coluna 'request_id' da transação);
- Adicionada a função que o integrador poder enviar o ITK (identificador único da transação) pelo método 'setInitiatorTransactionKey(SEU_ITK_AQUI_STRING)' do objeto StoneTransaction;
- Assinatura do objeto PrintProvider mudou, agora você precisa informar qual pinpad você está utilizando, se estiver conectado a somente um Pinpad, passe 'GlobalInformations.getPinpadFromListAt(0)'