-
Notifications
You must be signed in to change notification settings - Fork 8
Changelog
#84260 Added reversal support for Inpas (Pax/Verifone)
#82295 Added try again for PayPass
- #82235 [telpo] Do not send emv advice if stage is not sale_emv_validating
- #61336 Fixed error if bad credentials
- #81540 Changed paynet libraries to the 3.35.17-51 version to get access to StatusResponse.readerEntryType property
public enum ReaderEntryType {
MAGNETIC_STRIPE_SIGNATURE,
EMV_CONTACT_PIN_OFFLINE,
EMV_CONTACT_PIN_OFFLINE_AND_SIGNATURE,
EMV_CONTACT_PIN_ONLINE,
EMV_CONTACT_SIGNATURE,
EMV_CONTACTLESS_SIGNATURE,
EMV_CONTACTLESS_SIGNATURE_MAGSTRIPE,
EMV_CONTACTLESS_PIN_ONLINE,
MOTO;
}
You cat print out to a receipt "Entered PIN code" if StatusResponse.readerEntryType is equal to:
- EMV_CONTACT_PIN_OFFLINE
- EMV_CONTACT_PIN_OFFLINE_AND_SIGNATURE
- EMV_CONTACT_PIN_ONLINE
- EMV_CONTACTLESS_PIN_ONLINE
Or more precisely:
- Entered PIN offline code for
- EMV_CONTACT_PIN_OFFLINE
- EMV_CONTACT_PIN_OFFLINE_AND_SIGNATURE
- Entered PIN online code:
- EMV_CONTACT_PIN_ONLINE
- EMV_CONTACTLESS_PIN_ONLINE
- #79494 Enable getting Build.SERIAL if Build.MODEL == Kaccatka mini
- #77711 Disable DeferredCardReader manager for spire spm2
- Добавлены параметры для возвратов
- Для запуска reversal использовть ICardReaderManager.startReversalSession(), в который нужно передать ReversalSessionParameters( paynetOrderId, comment)
- Пример можно посмотреть тут https://github.com/payneteasy/reader-example-gradle/blob/71ceec53c338f8441becde2b9643bf1d7e8cd759/app/src/main/java/com/payneteasy/example/ReaderActivity.java#L68
Created new ICardReaderManager methods:
- startSaleSession(Context)
- stopSession()
These methods replace old ones:
- onActivityCreate() and onActivityResume() replaced by startSaleSession()
- onActivityDestroy() and onActivityPause() replaced by stopSession()
Old methods marked as Deprecated so you can use old methods in your application.
Так название методов onActivityCreate(), onActivityDestroy(), onActivityResume() и onActivityPause() вводило в заблуждение, было решено их заменить на новые. Существующие программы могут использовать старые методы.
- [spire] Fixed PIN Online
- Added support for new terminal
- Added ConfigurationContinuation.Builder.merchantName() to display a text on Spire SPm2
- Made AndroidSignedHttpServiceImpl constructor public
- [inpas] #55166 Fixed NPE if network error while configuring
- [inpas] #55152 Added shouldThrowExceptionIfNotConnected
- [inpas] Fixed IllegalStateException: No field 19. Using sa 1.0-8-2
- [spire] #53459 Do not show "Cancel transaction" if a payment is APPROVED
- [inpas-net] #53434 Fixed if address is null for InpasNetworkConnect
- [inpas-usb] #53433 Fixed Thread.isInterrupted() on a null object reference
- [spire] Removed bluetooth insecure connection
- [common] Added logging stack trace when calling ICardReaderManager
- [common] Changed slf4j-remote to 1.0-17
- [inpas] Added logging all IProcessingEventListener calls
- [inpas] Send logs at the end of the session
- [inpas] Fetch configuration from the server before connecting to usb
- [inpas] Create an error event if address is null
- [inpas] Create an error event if address is null
- [inpas] Added parameter to throw exception if cannot connect to POS terminal
- [inpas] Fixed amount check
- added Pax and Verifone USB support
New reader types: INPAS_VERIFONE_USB, INPAS_PAX_USB
- Added Inpas (Pax) support
- Added Inpas (Verifone) support
To add support for Inpas terminals please add the following artefact to your project:
com.payneteasy.android.reader.readers:readers-inpas
Added Spire SPm2 support
- For Miura M010 and M007 shows a contactless payment screen
- Fixed getting the location manager for android 6.x
- Removed deprecated readers
- Added remote logging
We've replaced org.slf4j:slf4j-android:1.6.1-RC1 with com.github.payneteasy.slf4j-remote:android:1.0-1
Please see https://jitpack.io/#payneteasy/slf4j-remote to find out how to add the library to your project.
- Improved a Miura USB serial port detection on linux, windows and mac os
- Added support for JVM with rxtx library
- Updated paynet client library
- Miura: Fixed fallback mode
- Miura: Do not rely on “initialised” state and always do initialise encryption unless SRED ready = true.
- Miura: Getting a directory for storing encryption keys from ConfigurationContinuation
- Miura: Do not invoke Device.setPairingConfirmation
- Miura: Added an error message if a key injection failed
- Miura: Fixed a time field for a start tx command
- Miura: Added an Application Selection on the PED
- Fixed a rare problem with MSR
- Fixed a rare problem with a key init
- Added ContactLess support for Miura M010 and M007 (only for test purpose)
- Updated reader-example to a latest SDK, new example url is https://github.com/evsinev/reader-example
- Fixed date parsing bug
- Added a USB communication mode support for Miura
- Added more fields for Advice Slip:
-
Added Remote Key Injection
-
Added Remote Configuration
-
New MiuraConfig entries:
new MiuraConfigBuilder() ... .on( INJECTING_KEYS ).emptyLine().centerLine("Injecting Keys...") .on( INITIALISING_ENCRYPTION ).emptyLine().centerLine("Init Encryption...").emptyLine().centerLine("Please Wait 2 min") .on( CHECKING_CONFIGURATION ).emptyLine().centerLine("Configuring...") .on( CONFIGURATION_ERROR ).emptyLine().centerLine("Configuration Error") ...
- Fixed if 1st AAC
- Fixed a MSR online processing
- Removed a support for an old EMV processing scheme
- Исправлена ошибка, если от Issuer приходит только Response Code, без Issuer Authentication Data
- В тестовом процессоре на paynet при EMV-транзакции доступны следующие суммы, которые влияют на результат:
Сумма | Статус | Стадии |
---|---|---|
1.00 | APPROVED | Purchase, Final Advice |
2.00 | DECLINED | Purchase |
3.00 | APPROVED | Purchase |
4.00 | DECLINED | Purchase, Final Advice |
В тестовом процессоре можно использовать любую карту. Терминал всегда предлагает карте ARQC, карта всегда тоже уходит в онлайн. После, процессинг всегда отвечает с Authorisation Response Code = 'Z3' (Unable to go online, offline declined), который передается карте, если в стадии есть Final Advice. Иначе, мы думаем, что карта отвечает TC или AAC на первую GEN AC, на этом и завершаем транзакцию.
-
Улучшена поддержка EMV. Для работы необходима версия paynet 3.24.02 и выше
-
Добавлена возможность настроить все сообщения, выводимые на дисплей Miura:
MiuraConfig miuraConfig = new MiuraConfigBuilder() .on( STARTING ).emptyLine() .centerLine("Please Wait...") .on( INSERT_CARD ).emptyLine() .centerLine("Insert Card") .on( GOING_ONLINE ).progress(1).emptyLine() .centerLine("Going Online...") .on( SALE_SENDING ).progress(2).emptyLine() .centerLine("Sale Sending...") .on( SALE_RESPONSE_WAITING ).progress(4).emptyLine() .centerLine("Sale Waiting...") .on( ADVICE_REQUIRED ).progress(5).emptyLine() .centerLine("Advice Processing...") .on( ADVICE_SENDING ).progress(6).emptyLine() .centerLine("Advice Sending...") .on( ADVICE_RESPONSE_WAITING ).progress(15).emptyLine() .centerLine("Advice Waiting...") .on( PROCESSING_ERROR ).emptyLine() .centerLine("Processing Error").emptyLine() .centerLine("Take Card") .on( ERROR_REMOVE_CARD ).emptyLine() .centerLine("Error").emptyLine() .centerLine("Take Card") .on( APPROVED_REMOVE_CARD ).emptyLine() .centerLine("APPROVED").emptyLine().centerLine("Take Card") .on( DECLINED_REMOVE_CARD ).emptyLine() .centerLine("DECLINED").emptyLine().centerLine("Take Card") .on( FETCHING_LOG ).emptyLine().centerLine("Fetching Log...") .build(); cardReaderManager = CardReaderFactory.findManager(context, cardReader, presenter , amount, currency , miuraConfig);
- Создан и протестирован maven-репозиторий - http://paynet-qa.clubber.me/reader/maven
- Убраны все приватные репозитории и зависимости.
-
Улучшено соединение по Bluetooth c Miura (увеличена скорость, понятное название потоков)
Как и раньше создается три потока: один на соедиенение (miura-con-), второй на чтение данных (miura-reader-) и третий на запись данных (miura-writer-). Все потоки пронумерованы. Теперь легче определить, что поток завис, если есть два потока с одим префиксом, но разными номерами. Например, не должно быть двух потоков miura-con-1 и miura-con-2.
При onActivityPause() посылается сигнал interrupt, в результате время отключения уменьшилось. (Раньше все ставилось в очередь).
Теперь для bluetooth соединений используются только onActivityResume() и onActivityPause(), для audio ридеров - как и раньше.
Используется только один sleep (200ms) при неудачном соединении. Без него слишком много логов, которые никак не отключить.
-
Добавлено еще одно состояние: CardReaderState.CONNECTING - показывает что идет подключение к ридеру. Пока используется только у miura.
-
Удалены у Miura лишние вызовы cardReaderStateChanged(CONNECTED).
-
Добавлены простые проверки на последовательность вызовов onActivityCreate, onActivityResume, onActivityPause, onActivityDestroy. При несоблюдении последовательности выкидывается исключение IllegalStateException.
-
Добавлен тест с ПИН-кодом для тестового ридера. Активируется при сумме равной 10. Тест для MSR с лубой другой суммой.
Добавлено поле тип карты в метод ICardReaderPresenter.onCard(BankCard):
BankCard.cardType = MAG_STRIPE, EMV_CONTACT, EMV_CONTACTLESS
Добавлено событие нажатия клавиши при вводе PIN.
MiuraDeviceStatusChangeMessage.pinDigits
- Исправлена ошибка отключения Bluetooth
- Подключена библиотека для работы с ber-tlv ( https://github.com/evsinev/ber-tlv )
- Добавлены события от Miura
CardReaderState | Message class |
---|---|
MIURA_DEVICE_INFO | MiuraDeviceInfoMessage |
MIURA_CARD_STATUS | MiuraCardStatus |
MIURA_DEVICE_STATUS_CHANGE | MiuraDeviceStatusChangeMessage |