Release Notes

Bugfix: Portuguese Translations in PayButton

We fixed an issue that prevented the PayButton from showing Portuguese translations.

Bugfix: Error During Update Check

We fixed an issue that caused a terminal error when the card was removed during an update check.

The Android and Java SDK now has additional dependencies to Couchbase. Please make sure you update your Gradle or Maven configuration accordingly. More information in the integration document.

Feature: Standalone Refunds (iOS & Android)

Standalone Refunds allow your merchants to refund a previous transaction by asking the shopper to present the card again. This is meant only for setups, where it is impossible to retrieve the transactionIdentifier of the previous charge transaction.

To learn more, have a look at the updated documentation and security requirements.

Talk to your account manager regarding suitability and availability of Standalone Refunds for your merchants.

Bugfixes & Improvements

Various bugfixes and improvements are included in this release.

Feature: Tip Adjust (US Only)

Tip Adjust allows you to offer your US-based restaurants their traditional, receipt-based tipping workflow for both magstripe and EMV transactions!

To learn more, have a look at the new PayButton and Custom Integration Tip Adjust documentation.

Talk to your account manager regarding availability of Tip Adjust for your merchants.

Feature: Total Amount Tipping Workflow

In addition to asking the shopper to enter the tip amount right on the card reader, the On-Reader Tipping feature now also allows you to ask the shopper for the total amount, including a potential tip!

To learn more, have a look at the updated PayButton and Custom Integration documentation.

Feature: Metadata Support

You can now attach metadata for each transaction. The metadata key/value pairs will be returned as part of the transaction object.

Feature: Metadata Support

You can now attach metadata for each transaction. The metadata key/value pairs will be returned as part of the transaction object.

Bugfix: Stale Transaction

We fixed the transaction process blocking indefinitely under certain circumstances when a contactless transaction used signature verification.

Feature: Total Amount Tipping Workflow (Android Only)

In addition to asking the shopper to enter the tip amount right on the card reader, the On-Reader Tipping feature now also allows you to ask the shopper for the total amount, including a potential tip!

To learn more, have a look at the updated PayButton and Custom Integration documentation.

Improvement: PayButton Error Handling

Should a transaction fail due to a network error, the PayButton now shows a "Check Status" screen to the merchant, allowing him to verify the final transaction status.

This improvement is automatically available after upgrading.

Bugfix: NullPointerException Thrown During Abort

We fixed a NullPointerException that occurred when an abort was triggered before the connection to the reader was established.

Feature: Quick Chip (US Only)

Quick Chip drastically improves the payment experience for US-based shoppers and merchants: With Quick Chip shoppers are able to dip and remove their EMV card from the card reader within 2 seconds or less, making it as fast as a swipe.

Talk to your account manager regarding availability of Quick Chip for your merchants.

Feature: Standalone Refunds (Android Only)

Standalone Refunds allow your merchants to refund a previous transaction by asking the shopper to present the card again. This is meant only for setups, where it is impossible to retrieve the transactionIdentifier of the previous charge transaction.

To learn more, have a look at the updated documentation and security requirements.

Talk to your account manager regarding suitability and availability of Standalone Refunds for your merchants.

Improvement: Serial Mode Disconnect Detection

A physical disconnect of a card reader connected via serial mode is now recognized correctly. In addition we added timeouts for certain kinds of messages to detect stale serial mode connections.

Reader: Verifone e315M

The Verifone e315M card reader is now fully supported by the SDK for both contact & contactless transactions. Get in touch with your account manager before upgrading from any SDK PREVIEW you are currently using.

Feature: Connection Keep-Alive (iOS and Android)

For setups where the card reader is connected to a power source most of the time, the new Connection Keep-Alive feature allows your merchants to take card payments even faster.

Set setKeepAlive:YES on your MPAccessoryParameters and the SDK will keep the connection to the card reader open after the first transaction. This will greatly reduce the overall transaction time for all subsequent transactions.

Have a look at the documentation to learn more about this feature and understand the battery life implications.

Feature: More Control with AccessoryModule

With the addition of the AccessoryModule you now have more granular control on when you connect and disconnect from an accessory.

This for example allows you to explicitly run software updates on a reader independent from a payment transaction. More information can be found on the AccessoryModule page.

Feature: Progress Bar on Miura

The Miura readers are now showing a progress bar when running through a software update, allowing the merchant to better understand how long he has to wait for completion.

Bugfix: Malformed Receipt Data

We fixed a rare occurrence of malformed receipt data, where the receipt data did contain null value items.

Improvement: Signature Screen Wording

We updated the wording on the signature screen to make it more intuitive for the shopper. The most visible change is replacing the 'X' button to clear the signature with a 'Clear' button.

Improvement: Adjusted HTTP Timeouts

We lowered some HTTP timeouts in order to fail faster in certain situations. The changes should not affect normal processing and only kick in if operations are running long.

Make sure to handle the TransactionStatus.INCONCLUSIVE that indicates an uncertain outcome of a transaction execution. Details can be found here.

Bugfix: Delayed Transaction Abort

We fixed a bug where aborting a transaction during an ongoing accessory connection would get delayed.

Bugfix: Receipt Data Missing

We fixed a bug where the receipt data was not present when running certain NFC-based transactions.

Feature: gh-link Scheme

We added support for gh-link, the PIN-based local debit scheme of Ghana.

Bugfix: Memory Leak with Miura (iOS only)

The iOS SDK internally leaked memory when using the Miura reader, which might have resulted in an OOM crash when used extensively. This has been resolved as part of the release.

Feature: Increased Transaction Speed

We continuously push ourselves to make card payments faster and with 2.15 we reached another important milestone: The payload for each call between SDK and Gateway has been greatly reduced and for contactless transactions we were even able to save a full roundtrip between the SDK and Gateway.

Upgrade to 2.15 and then talk to your account manager to save your merchants valuable seconds on each transaction.

Important: Along with this feature, we have also added a new TransactionStatus.INCONCLUSIVE for more clarity on errored transactions. Details on what this indicates can be found here.

Feature: Connection Keep-Alive (Android Only)

For setups where the card reader is connected to a power source most of the time, the new Connection Keep-Alive feature allows your merchants to take card payments even faster.

Set keepAlive(true) on your AccessoryParameters and the SDK will keep the connection to the card reader open after the first transaction. This will greatly reduce the overall transaction time for all subsequent transactions.

Have a look at the documentation to learn more about this feature and understand the battery life implications.

Improvement: Miura Connectivity

We implemented a number of improvements to speed up the initial connection to the Miura devices: Especially when waking up the WiFi Miura M010 from standby, the connection will be established much quicker now.

Hotfix: Required Update for Miura MPI V1-41

In Miura MPI V1-41 changed the way magstripe track 2 data is masked.

In order to be able to successfully process transactions with Miura MPI V1-41 and later, you are required to update your SDK/PayButton version to 2.14 or later.

Improvement: Redesigned Summary Screen

The Summary Screen received a major redesign overhaul, making the transaction outcome (approved or declined) and type (sale, pre-authorization or refund) much more obvious to the merchant.

For declined transactions a detailed decline reason such as Wrong PIN or Insufficient Funds is now shown. The merchant can better understand what needs to be done to get an approved transaction, e.g. by asking the shopper to use another card.

Feature: Loyalty & Bonus Cards (Android Only)

In addition to accepting payments cards such as Visa and MasterCard, we now make it very easy to also read magstripe-based Loyalty or Bonus Cards!

Have a look at the documentation to learn more!

Localization: Improved Swedish Translations and Bugfix

We improved the quality of our Swedish translations and fixed a bug where the Miura reader would always use the English locale.

Bugfix: GetNumber on InteractionComponent

The previous release returned a NSNumber as a result, which removed leading zeroes from the input. This release changed the returned data to NSString.

Feature: Streamlined Reader Setup

Managing your merchants' readers is now much easier with automatic reader setup: Readers can be automatically assigned to the merchant upon first usage, allowing you to streamline your reader distribution processes.

This feature is optional, if you would like to make use of it, just talk to your account manager.

Feature: Enhanced On-Device Tipping

On-Device Tipping now shows the original amount also as part of the "Enter TIP Amount" screen.

Note: Miura MPI V1-39 (or higher) is required for showing the original amount. Get in touch with your account manager to enable the latest MPI version.

Bugfix: Bluetooth with Miura in Serial Mode (Android)

It is now possible to connect to and execute transactions on a Miura reader in serial mode using Bluetooth on Android.

Feature: Swedish translations

Hej! The SDK and the PayButton are now translated to Swedish.

Deprecation: Removed Deprecated APIs

The previously deprecated APIs have now been removed. This includes the methods which use the AccessoryOptions, TransactionTemplate and TransactionTemplateFactory which have been superseded by AccessoryParameters and TransactionParameters.

Please make sure you read the PayButton and SDK integration documents and keep your integration up-to date.

New dependency

The SDK and PayButton have a new dependency on Android. We've also updated OkHttp to version 2.7.4 which brings some bug fixes.

Include this in your Android dependencies :
compile 'com.squareup.okhttp:okhttp-ws:2.7.4'

New Card Reader: WiFi Miura M010

We now feature full live-ready support for the exciting new WiFi Miura M010!

To use it, you literally only need to change one line of code, both for PayButton and SDK integrations.

Feature: On-Reader Tipping

On-Reader Tipping makes it really simple for your merchants to collect tips from their guests!

Have a look at the new Ask for a Tip on the Card Reader recipe to learn more!

Feature: Pre-Authorizations

Pre-Authorizations make it possible to reserve a guaranteed amount on the shopper's card and either Capture or Refund it later on. This allows businesses such as hotels and rental companies to take deposits or up-front payments from their shoppers.

Learn how to implement them with the PayButton or the SDK.

Improvement: Reworked Card Reader Prompts

We made the wording of the card reader prompts that are displayed to the shopper more clear.

Improvement: Revamped PayButton Summary Screen

The PayButton Summary Screen has been redesigned to fully support display of partially refunded and partially captured transactions.

Improvement: More Reliable Update Workflow

A recent version of iOS 9 introduced a changed behavior in ExternalAccessory handling that would sporadically fail updated workflows.

Bugfix: Online PIN on Verifone e105

When working with the Verifone e105 there was a chance that the SDK would crash under special circumstances.

Feature: New Remote Endpoints with Known Address Range

When you are running behind a restrictive firewall setup, you are now able to configure the SDK to use remote endpoints in a well known range.

Feature: Additional Schemes Support

In preparation to support new schemes in the future, we added references and resources for JCB, UnionPay and Diners/Discover.

Fixes/Additions

Improved handling of magstripe fallbacks, added additional error code mappings.

Bugfix: SDK crashing on application selection with Verifone e105

We resolved an issue, where an application selection triggered via the Verifone e105 would crash the SDK.

Feature: Polish Translation

Dzień dobry! The SDK and the PayButton are now translated to Polish.

Feature: Transaction and Receipts Querying API

This release introduces a TransactionModule available on the TransactionProvider. This module provides a better API for the integrator to query previous transactions (based on the transaction identifier or filtering) and fetch receipts without needing to call multiple methods.

Deprecation: Old Transaction and Receipt Querying API

This release deprecates the TransactionProvider and Provider methods related to querying transactions and fetching and sending receipts.

The receipts are now embedded on the Transaction object itself after finishing a transaction or looking it up. Querying and sending the receipts is possible from the new TransactionModule.

Dependencies (Android)

The Verifone E105 on Android uses a different dependency. Please make sure to update it as described in the integration page. If you are using the Verifone E105 please note that you need to upgrade the Android minSdkVersion to 16.

Bugfixes (Android)

The SDK on Android received some enhancements and bugfixes related to transaction processing.

Feature: Stripe Connect Support

We now also fully support Stripe Connect from the SDK, allowing you to charge an Application Fee via the newapplicationFee parameter.

Further, you can now specify the subject, statementDecriptor and metadata parameters on the new TransactionParameters and they will be forwarded to Stripe.

Have a look at our new Stripe Recipe to learn more about using Stripe.

Improvement: Faster Transaction Processing

For users of the PayButton and the TransactionProvider integration, we increased the speed of the transaction processing at various places. This includes detecting an already inserted card on the Miura card reader.

Deprecation: Streamlined Accessory and Transaction Handling

This release deprecates the AccessoryOptions and TransactionTemplate and introduces the AccessoryParameters and TransactionParameters as a replacement. They are easier to use and prepare you for upcoming features.

Even though we will keep the deprecated objects and methods for the next releases, please make sure to update soon.

Bugfixes (Android)

The PayButton on Android received some bugfixes and enhancements.

Dependencies (Android)

On Android we replaced some of our external dependencies. Please make sure to follow the install guide and add OkHttp and Bolts to your list of dependencies.

Known Issues

On Android 6, connecting to the Verifone e105 fails with an internal Verifone error.

Feature: Finnish translation

The SDK is now translated to Finnish.

Feature: Speed Improvements

The speed of transactions was improved by reducing the payloads.

Feature: Nullable/Nonnull Annotations

The public API of the SDK is now fully annotated to support static compiler checking for nullable/nonnull variables and parameters.

Feature: Finnish translation

The SDK is now translated to Finnish.

Feature: Speed Improvements

The speed of transactions was improved by reducing the payloads.

Bugfix: Bluetooth Connection Issues

Fixed bluetooth connection issues for a range of devices (e.g. Vodacom Smart 6, Alcatel One Touch Tablet).

Bugfix: Compatibility with Xcode 7/iOS 9

It is now possible again to submit apps to the App Store when using Xcode 7 and iOS 9 .

Bugfix: Refund Receipts for Refunded Transactions

When sending out a receipt for a refunded CHARGE transaction, the receipt is now sent for the related REFUND transaction.

Feature: Refund Transactions now accessible from Original Transaction

It is now possible to access the refunds directly from the original transaction via transaction.refundDetails.refundTransactions.

Bugfix: Various bugfixes for the Verifone e105

We fixed various bugs that affected the Verifone e105 devices.

Bugfix: Failed Processing Due To Whitelist Caching

We fixed a whitelist caching issue, that caused the SDK to incorrectly report a failure on the first transaction after an update (it only worked on the second attempt).

Bugfix: Incorrect PIN Entry Timeout Status

Transactions now correctly receive the ABORTED status when a PIN entry timeout occurs on the Verifone e105 during a magstripe Online PIN transaction (previously they received a status of ERROR).

Bugfix: Various PayButton Glitches

We fixed "random" NullPointerExceptions when launching the PayButton and fixed an issue which caused the PayButton to crash when closing the Summary Screen before the content is fully loaded.

Further, the input field for the email receipt is now visible on small screen sizes as well.

Bugfix: Integrated AFNetworking

Inlined AFNetworking to be compatible with various frameworks, e.g. RestKit

Bugfix: Online Pin Magstripe

Fixed issue where online Pin failed for magstripe transactions when swiping while waiting for NFC

Bugfix: Crash during Magstripe Transactions with Online PIN CVM

We fixed a bug which caused the SDK to crash when online PIN was needed for magstripe transactions.

Bugfix: Increased DetectCardRemoval Timeout for Verifone e105

We increased the DetectCardRemoval timeout to 1s for the Verifone e105 to possibly work around execution errors that are triggered with a 0ms timeout.

Bugfix: Magstripe Transactions

We resolved an issue, where accepting Magstripe-only cards did not work when contactless was enabled.

Improvement: Streamlined Contactless Acceptance

Your merchants can now accept contactless cards without having to explicitly enable the contactless interface. Instead, the "Present Card" prompt is now immediately shown on the Miura M010!

Improvement: Summary Screen Callback

On iOS the Summary Screen now features a completed: block. On Android, you can now specify MposUi.REQUEST_CODE_SHOW_SUMMARY as the request code when showing the Summary Screen via startActivityForResult.

This makes it very easy for you to be notified when the Summary Screen is closed and allows you to update your own user interface accordingly.

Improvement: Sewoo Printer Connection Handling

We have improved the connection handling to the Sewoo printer.

Bugfixes

Various reported issues have been fixed, including the Android SDK incorrectly reporting "Accessory is busy" and remote updates failing with the Verifone e105 on Android.

Upgrade instructions from iOS 2.4.0

We made the naming of several constants more concise by changing the prefix from MPUMposUi to MPU.

Affected by this change are amongst others: MPUTransactionResult, MPUTransactionResultApproved, MPUPrintReceiptResult and MPUPrintReceiptResultSuccessful. Please update your code to reflect these changes.

Feature: Printed Receipts

We now make it very easy to offer printed receipts to the shoppers: Right after a transaction or through the new Summary Screen, the merchant can easily request a printed receipt.

The first printer we support is the Sewoo LK-P21, a compact and very affordable portable printer. If you are interested, just talk to your account manager about pricing and delivery.

Feature: Summary Screen

The new Summary Screen allows you to show a ready-made user interface for a transaction, where the merchant can refund the transaction and email or print another receipt.

Learn how to integrate the Summary Screen here.

Feature: Email and Print Receipts from the SDK

You can now also use ready-made email and printed receipts when using the SDK.

Read all about Email and Printed Receipts.

Improvement: Query Receipt Data from the SDK

We have improved the querying of Receipt Data from the SDK and now return it in all our supported languages. Further, the receipt data now also includes merchant information, such as name and address.

Read all about the new API here.

Upgrade instructions from iOS 2.3.X

  • We have added the summaryFeatures, which allow you to configure the PayButton. See the updated documentation here. Please update your code to reflect these changes.

Upgrade instructions from Android 2.3.X

  • We have added the setSummaryFeatures Enum, that allows you to configure the PayButton. See the updated documentation here. Please update your code to reflect these changes.
  • Including compile 'com.verifone:e105:1.0:@jar' in the build.gradle is not longer required!

New Product: PayButton

PayButton is the easiest way for developers to integrate a card reader into their iOS and Android apps. After a thorough beta phase, it is now ready for prime time!

Built on top of our powerful SDK, the PayButton provides a ready-made user interface that guides the merchant through the whole payment process, including electronic signature capture and sending of ready-made email receipts to the shopper!

Developers can integrate the PayButton within minutes and with this single integration have access to all our leading acquiring partners and reader manufacturers.

The PayButton user interface and ready-made email receipts are of course fully localized and available in English, German, French, Italian, Dutch, Portuguese and Spanish.

Feature: Contactless Payments with Visa and MasterCard

SDK 2.3 is fully certified for Visa payWave and MasterCard PayPass and works with all contactless cards and mobile payment services like Apple Pay and Android Pay!

Integrators who use ConCardis can immediately add contactless payments to their product. Other acquirers are soon to follow, please talk to your account manager for details!

Feature: American Express

SDK 2.3 also is fully certified for American Express, a frequently used card scheme in the taxi, hospitality and high-end retail industries!

Integrators can easily enable American Express acceptance in addition the other schemes already provided by their acquirers. Get in touch with your account manager to learn more!

Improvement: Connection Handling

When connecting to the card reader, we are now prompting the merchant to turn on the card reader and wait until he has done so. We also made it possible to abort during the connecting phase and on Android, we now prioritize the card reader over other bluetooth devices, leading to shorter connect times.

Improvement: Status Texts

For declined and failed transactions, we now show more detailed status information. This way, the merchant will know, whether the card has exceeded its limit, was stolen or whether the shopper has just entered the wrong PIN.

Improvement: Performance

We reduced the number of requests to our backend during transaction processing and have increased caching to improve the performance.

Upgrade instructions from iOS 2.3.0-BETA05 and below

  • The (previously) MPUPaymentController API has been renamed to MPUMposUi and has slightly changed. See the updated API here. Please update your code to reflect these changes.
  • The MPPaymentProvider has been renamed to MPTransactionProvider. All related methods have been renamed from MPPayment... to MPTransaction.... Please update your code to reflect these changes.

Upgrade instructions from Android 2.3.0-BETA08 and below

  • The (previously) PaymentController API has slightly changed. See the updated API here. Please update your code to reflect these changes.
  • The PaymentProvider has been renamed to TransactionProvider. All related methods have been renamed from Payment... to Transaction.... Please update your code to reflect these changes.

ARM64 Support for Verifone readers

Apps using the iOS SDK for the Verifone readers can now be built with arm64.

Bugfix: Firmware Update

Fixed a bug that caused the SDK to hang in rare cases during a firmware update.

Feature: Localized Receipt API

We have added timezone support and localized formatting for date, time and currency to the Receipt API. Learn how to use it here.

Feature: M006, M007 and M010 in one solution

You can now offer the Miura M006, M007 and M010 within the same app.

Feature: Signature on Paper Receipts

It is now possible to indicate to the SDK, that the shopper's signature will be captured on the merchant paper receipt.

Feature: M006, M007, and M010 in one solution

You can now offer the Miura M006, M007 and M010 within the same app.

Feature: Signature on Paper Receipts

It is now possible to indicate to the SDK, that the shopper's signature will be captured on the merchant paper receipt.

Migration Instructions

Please be aware that the ended callback of the SDK is now called completed. We did this to align it with the Android SDK and to better reflect its semantics.

Bugfix: Status Texts

The status texts in the completed callback now indicate the correct transaction outcome.

Bugfix: Disconnecting the Verifone e105

We fixed a bug where the SDK would end up in an infinite loop when the Verifone e105 is disconnected after entering a PIN.

Bugfix: Disable Sleep Timer

The sleep timer is now disabled when a transaction is started, to make sure that all software updates run through.

Bugfix: Memory leak fixed

We fixed a bug that could lead to crashes when multiple transactions with the same MPTransactionProvider are done.

Portuguese language support

We added support for the beautiful Portuguese language.

Bugfix: Update workflow error

We fixed an error where the update workflow would fail with an error but it was actually successful. This only occurred if keys are injected for the first time.

Bugfix: Android 5 Bluetooth connections

We fixed a crash for Bluetooth connections on Android 5 devices.

Bugfix: Fixed wrong encoding of transaction counter

We fixed that the transaction counter is encoded incorrectly for the Verifone e105 reader.

Portuguese language support.

We added support for the beautiful Portuguese language.

Bugfix: Update workflow error.

We fixed an error where the update workflow would fail with an error but it was actually successful. This only occurred if keys are injected for the first time.

Feature: You can now process transactions with a single call.

We integrated connecting, registering, processing, and disconnecting into a single method call and updated the documentation.

Bugfix: Fixed several bugs

Feature: Support for updated Build tools and Gradle versions

Now compatible with the latest Build tools (version 20) and Gradle plugin 0.12

Bugfix: Fixed several bugs

Feature: Support for Maestro

You can now process the Maestro debit card scheme.

Feature: Improved Mock mode for Testing

You can now test your implementation of the SDK without a card reader!

Feature [Android]: Proguard support

It is now possible to obfuscate your app when using the SDK.

[Android] Support for new Gradle plugin

You can use the SDK with the most recent Gradle plugin.

[Android] Update from 2.0.X:

  • In your AndroidManifest.xml, change io.mpos.communicationmodules.background.BluetoothConnectionService to io.mpos.comlinks.bluetooth.background.BluetoothConnectionService.
  • Remove the mpos.android.specs library from your classpath (it is obsolete). On Eclipse, remove it from the 'libs' directory. On Android Studio, remove it from the 'dependencies' section in your 'build.gradle'.

Bugfix: Improved Bluetooth Connection Handling

In case the phone is paired to multiple Bluetooth devices, the SDK tries to find a Miura reader and ignores other Bluetooth devices, e.g. headphones.

Bugfix: Masked Account Numbers

Now, the SDK sends out masked account numbers for magstripe transactions.

Bugfix: Updated certificates

The framework now includes updated certificates for the test environment. Note that the old versions do not work on the test environment anymore. This version will be required after additional security updates for processing on the live system starting in June. Contact your account manager if you have further questions.

Can we help you?

If you cannot find your answer, contact us and we'll get in touch with you soon.

© Copyright 2017 Payworks GmbH. Legal.