🇧🇷
- Corrigido bug onde informações novas vindas de qualquer request travava a SDK, não retornando um status de erro.
- Novos campos no
StoneTransaction
para editar as informações do lojista que está efetuando a transação (modelo subadquirente):
stoneTransaction.setSubMerchantCity("city") //Cidade do sub-merchant
stoneTransaction.setSubMerchantPostalAddress("00000000") //CEP do sub-merchant (Apenas números)
stoneTransaction.setSubMerchantRegisteredIdentifier("00000000") // Identificador do sub-merchant
stoneTransaction.setSubMerchantTaxIdentificationNumber("33368443000199") // CNPJ do sub-merchant (apenas números)
🇺🇸
- Fixed bug where new information coming from any request was freezing the SDK, not returning any error status.
- New fields in
StoneTransaction
to change merchant info that is doing the transaction (subacquirer model):
stoneTransaction.setSubMerchantCity("city") // sub-merchant city
stoneTransaction.setSubMerchantPostalAddress("00000000") // sub-merchant postal code (only numbers)
stoneTransaction.setSubMerchantRegisteredIdentifier("00000000") // sub-merchant identifier
stoneTransaction.setSubMerchantTaxIdentificationNumber("33368443000199") // sub-merchant Tax Identification (only numbers)
🇧🇷
- Agora não é mais necessário usar o
LoadTablesProvider
para efetuar a carga de tabelas no Pinpad, todo o gerenciamento será feito internamente pela SDK. - Enum
TABLES_NOT_FOUND
depreciado por não ser mais disparado. - Enum
NEED_LOAD_TABLES
depreciado por não ser mais disparado. - Provider
DownloadTablesProvider
removido por não ter mais utilidade. - Corrigido bug onde o enum
PINPAD_ALREADY_CONNECTED
não era chamado ao conectar com um pinpad já conectado. - Corrigido bug no
BluetoothConnectionProvider
que causava crash no app se ocorresse um erro desconhecido. - Melhoria na detecção das bandeiras.
- Corrigido problema na migration do banco de pinpads quando atualizado de versões muito antigas da SDK.
🇺🇸
- Is no longer required to use
LoadTablesProvider
to load tables on pinpad, the SDK will handle everything internally. - Enum
TABLES_NOT_FOUND
deprecated for not being triggered anymore. - Enum
NEED_LOAD_TABLES
deprecated for not being triggered anymore. - Provider
DownloadTablesProvider
removed because it is no longer useful. - Fixed bug where enum
PINPAD_ALREADY_CONNECTED
was not called when connecting with a pinpad already connected. - Fixed bug in
BluetoothConnectionProvider
which caused crash in the app if an unknown error occurred. - Improvement on card brands detection.
- Fixed Pinpad database migration problem when upgrading from older SDK versions.
🇧🇷
- Timeout das requests http aumentado para 1 minuto
- Corrigido bug da SDK deixar 2 ou mais stone codes iguais ficarem ativos no
ActiveApplicationProvider
- Adicionado stacktrace das exceptions no
BluetoothConnectionProvider
🇺🇸
- Http requests timeout increased to 1 minute
- Fixed bug when the SDK accepts 2 or more identical stone codes be activated on
ActiveApplicationProvider
- Added exceptions stacktrace on
BluetoothConnectionProvider
🇧🇷
- Provider
CancellationProvider
agora retorna o actionCode do cancelamento pelo métodocancellationProvider.getActionCode()
e o status do cancelamento pelocancellationProvider.getResponseCodeEnum()
. - Métodos
getTransactionStatus()
egetStatusAsString()
doCancellationProvider
foram 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
acqidx
doPinpadObject
.
🇺🇸
- Provider
CancellationProvider
now returns the cancellation actionCode viacancellationProvider.getActionCode()
and cancellation status viacancellationProvider.getResponseCodeEnum()
. - Methods
getTransactionStatus()
andgetStatusAsString()
fromCancellationProvider
were 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
acqidx
onPinpadObject
.
🇧🇷
- Nova dependência OkHttp para substituir o
HttpUrlConnection
nas requests da SDK para nossos servidores; - Suporte ao TLS >= 1.2 em versões do android <= 4.4 (KitKat);
- Novo Provider
CaptureTransactionProvider
para 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
CVM
do 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_KEY
durante a conexão do pinpad noBluetoothConnectionProvider
; - Novo ambiente
INTERNAL_CERTIFICATION
para validação do app pelo time de integrações da Stone;
🇺🇸
- New dependency OkHttp to replace
HttpUrlConnection
requests to our servers; - Supporting TLS >= 1.2 on androids <= 4.4 (KitKat);
- New provider
CaptureTransactionProvider
to capture transactions which request was mad without capture (settingstoneTransaction.capture = false
); - Fix in transactions with capture of brand
SODEXO
; CVM
capture 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_KEY
error while connecting the pinpad onBluetoothConnectionProvider
; - New environment
INTERNAL_CERTIFICATION
for app validation by Stone integrations team;
- Adicionado campo
subMerchantAddress
noTransactionObject
para editar o endereço do lojista que está efetuando a transação; - Adicionado campo
subMerchantCategoryCode
noTransactionObject
para editar o mcc do lojista que está efetuando a transação; - Adicionado campo
shortName
noTransactionObject
para armazenar em banco opção setada no camposhortName
doStoneTransaction
; - Adicionado campo
capture
noTransactionObject
para armazenar em banco opção setada no campocapture
doStoneTransaction
; - Construtor
CancellationProvider(Context context, int idFromTransactionInBase, UserModel userModel)
depreciado. Em vez dele, useCancellationProvider(Context context, TransactionObject transaction)
- Correção no migration da tabela de
Transaction
onde 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_ERROR
utilizado peloActiveApplicationProvider
para 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
BluetoothConnectionProvider
disparava o eventoonSuccess
duplicado. - Corrigido bug da SDK baixando tabelas toda vez que abria o app.
- Support Library atualizado para
27.0.2
.
- Adicionado campo
cancellationDate
noTransactionObject
para armazenar a data do cancelamento; - Adicionado campo
lastConnectionAt
noPinpadObject
para 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 retornanull
quando 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
setEmailToSent
esetEmailsToSent
da classeSendEmailTransactionProvider
depreciado, usaraddTo()
/setTo()
para setar o destinatário do email - Possibilidade de definir o remetente do email no SendEmailTransactionProvider no método
setFrom
- Adicionado campo
balance
no TransactionObject pra transações voucher (SODEXO, Ticket, etc...) - Bug de cartões (principalmente HIPER) retornando
UNKNOWN
fixed - Novos métodos (
findTransactionWithAuthorizationCode()
,findTransactionWithInitiatorTransactionKey()
efindTransactionByFilter()
) no TransactionDAO para busca das transações no banco local da SDK.
- Permissões
android.permission.VIBRATE
eandroid.permission.ACCESS_WIFI_STATE
removidas da SDK - Novos campos
cvm
eserviceCode
noTransactionObject
- appcompat-v7 atualizado para
26.1.0
- Enum de feedback
CARD_REMOVE
deprecated por não ser uma mensagem alterável. - Enum de feedback
REVERSAL
deprecated pois não mandamos nenhuma mensagem para o pinpad - Revertendo transações quando negado pelo cartão
- Bug de mostrar mensagem
RETIRE O CARTÃO
em cartões mágnéticos fixed - gson atualizado de
2.8.1
para2.8.2
- Várias melhorias de performance
- Adicionando
REVERSING_TRANSACTION_WITH_ERROR
ao 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_ERROR
para transações com erro e que precisam ser canceladas (ex: timeout) - Adicionando o
ReversalProvider
para 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
CERTIFICATION
alterada - 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_STATE
da SDK!
- Localização do
BluetoothConnectionProvider
corrigida.
- 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
signature
em 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
Context
em vez deActivity
no construtor - Nova interface
StoneActionCallback
com 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_CARD
Esperando cartão ser inserido/passadoTRANSACTION_WAITING_PASSWORD
Esperando senha do cartão (se houver)TRANSACTION_SENDING
Enviando transação para o servidorTRANSACTION_WAITING_REMOVE
Esperando a remoção do cartão do pinpad (se for chip)
- Agora você pode desativar a SDK usando
deactivate()
emActiveApplicationProvider
- Método
execute()
doActiveApplicationProvider
descontinuado. Em vez disso, use o métodoactivate(List<String> stoneCodes)
- Corrigido bug em
LoadTablesProvider
no qual pedia um objeto desnecessário no construtor. - Novo campo
entryMode
no 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
ClassNotFoundException
em 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ção
Por 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_CONNECTED
quando 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
SendEmailTransactionProvider
para 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)'