Changelog
Version 16.0.9 (28-06-24)
- Added HardwareCancelled case to the TransactionResult enum. Now when canceling a transaction in the WaitingForCard state, the SDK returns a recoverable error TransactionResult.Reason.hardwareCancelled. This version requires hardware versions 10.0.9 :
pod 'MagicPosHardware', '10.0.9'
pod 'QPosHardware', '10.0.9'
Version 16.0.5 (28-02-24)
- AFNetworking third party library has been replaced by native URLSession networking http client
Breaking changes
- Now all plugins are injected into the sdk during the configuration stage
let paymentsConfiguration = try PaymentsConfiguration.Builder(
endpoint: <Valid-URL>!,
readerInstallers: [
QposReaderInstaller(),
MagicPosReaderInstaller()
]
).set(
plugins: [
SDKPanHashPluginInstallerFactory.getInstaller(
delegate: self,
url: <Valid-URL>!
),
SDKSignaturePluginInstallerFactory.getInstaller(
delegate: self,
url: <Valid-URL>!
)
]
).build()
Version 15.1.0 (31-01-24)
- PAN hash plugin available. This can be used in some markets only if Geopagos requests it
Version 15.0.6 (08-01-24)
Improved contactless transactions flow by removing the double tap when charging a different amount than the original one
Improved SDK reliability by removing the chance of creating multiple simultaneous transactions which lead to undefined behaviour
Correct mapping for CVM result so Signature is not requested when it’s not needed
Online declined error is now a Recoverable error
Fixed issue where a transaction was not aborted correctly in certain states
Breaking Changes
Removed protocol
TransactionIntentDelegate
and replaced with protocolSDKTransactionListener
public protocol SDKTransactionListener {
/**
This method indicates the different transaction states that must be implemented by the SDK user
- Parameters:
- state
*/
func onTransactionStateChanged(state: SDKTransactionState)
/**
Called when reader state changes
- Parameters:
- state
*/
func onReaderStateChanged(state: ReaderState)
}Now the integrating app will listen for the reader and transaction state updates in these two methods. to react to each new state, the implementer must switch through the states and act accordingly, for example:
extension SDKTransactionListenerImplementation: SDKTransactionListener {
func onTransactionStateChanged(state: SDKTransactionState) {
switch state {
case let .provideDevice(provideDeviceCallback: provideDeviceCallback):
// Provide the selected device
provideDeviceCallback(selectedDevice)
.
.
.
@unknown default:
break
}
}The
SDKTransactionListener
implementation is injected into de SDK on transaction creation.Now the transaction creation is asynchronous, and completes with a result of type
Result<TransactionIntent, TransactionIntentInitializationError>
TransactionIntentFactory.createTransactionIntent(
type: type,
listener: self,
completion: { [weak self] result in
switch result {
case let .success(aTransaction):
self?.transaction = aTransaction
case let .failure(error):
print(error)
}
}
)
Version 14.1.2 (04-10-23)
- Fixed issue preventing a transaction to be aborted when a card is expected to be read from the reader
Version 14.1.1 (15-09-23)
Improvement: Added error readerShouldBeConnectedIntoPower when the reader’s firmware is updated while the reader is unplugged
Added fields fiid and logicalNetwork to a Merchant
Removed applicationKey value injection from Configuration object and moved it to the Confirmation step
## Version 13.1.1 (28-06-23)
Adds support to inject signature plugin if needed (pod 'GeoSignaturePlugin', '1.0.1')
When a reversal transaction occurs, the emv tag data is added in the request sent to the backend
Version 13.0.6 (11-01-23)
- Correct mapping for CVM result so Signature is not requested when it’s not needed
Version 13.0.5 (14-9-23)
- Bug fix, added support to configure contactless cvm limit for visa electron, visa interlink and maestro
Version 13.0.4 (22-8-23)
Bug fix: When a transaction is aborted reader gets disconnected properly
Fixed memory leaks when performing multiple transactions
Version 13.0.3 (15-06-23)
SDK now Throws PaymentsConfigurationError.noInstallersProvided error when no installers are provided on PaymentsConfiguration.Builder method
Fixed bug when a transaction confirmation is rejected, now when a confirmation is rejected and the error is recovered, onReadConfigRequired state is called.
Internal changes on how the encrypted data is formatted and sent to the backend
Version 12.0.3 (9-3-23) (Deprecated)
Decoupled QposHardware reader from Payments SDK. Now we need to explicitly import QposHardware in order to be able to conect to a qPos reader
pod 'Payments', '~> 12.0.0' pod 'MagicPosHardware' pod 'QPosHardware'
Unified returned errors for all readers when a card is removed before the reader could process it, same as the ones returned by the Android SDK version
Minimum deployment target updated to iOS 13.0
Version 11.6.1 (20-1-23) (Deprecated)
- Fixed bug preventing the SDK to cancel a transaction
Version 11.6.0 (27-12-22) (Deprecated)
Fixed bug preventing the SDK to obtain the processCode for a transaction denied
Setting 0 for tag 9F03 until the SDK supports cashback
Fixed currency in Colombia in order to support two decimals, same as the rest of the currencies.
Fixed bug when informing if a reader supports “Ask pin” functionality
Added exception APIGatewayInitializationError.invalidEndpoint when configuring the SDK with an invalid endpoint URL
Version 11.5.0 (Deprecated)
- Allow create BreakDownTaxes with empty taxes
Version 11.4.1 (Deprecated)
- Fix an issue that did not allow abort transactions when card reader is waiting card reading
Version 11.4.0 (Deprecated)
- Now is possible to update the reader CVM Limit, please check the feature documentation: MOB-ConfigureCVMLimit-020922-1540.pdf
Version 11.3.2 (Deprecated)
- Fix a bug where the taxes would incorrectly be added to the net value on the terminal
Version 11.3.1 (Deprecated)
- Fix a dependency issue that force add magicpos pod, now add magicpos pod is optional
Version 11.3.0 (Deprecated)
- Fixed values of EmvCard.cvmResult, now are .noCvm, .signature and .pin
Version 11.2.0 (Deprecated)
When pin is requested in NFC transactions, this event is notify in the ReaderState
Support for [.nfc, .chip] together in ReadConfig.readModes for qpos readers
When a combination of CardReadMode is not supported a TransactionIntentError.readModesNotSupported is returned
Version 11.1.1 (Deprecated)
For use magicpos reader is necessary added dependency in podfile
Support for try-again error in magicpos readers for NFC transactions
When pin is requested in EMV transactions, this event is notify in the ReaderState
In Confirmation the field ticketNumber now is optional
Version 11.0.7 (Deprecated)
- Fix a dependency issue that force ios 12 as minimum version. now iOS 10 is required as minimum version as expected
Version 11.0.3 (Deprecated)
Streamlined firmware and config updates. Now it’s not necessary to pass firmwares and configs directly. The process is the same as before, but the SDK will receive only one file containing all firmwares and configs you need. This files will be signed and verified by the SDK
AccountType has been added to the confirmation object. Please note that this is not needed for all the markets so these arguments are optional, currently this is only needed for Colombia. If you have doubts on this please contact Geopagos team.
Taxes has been removed from “SDKConfirmation”. Now is handled alongside the transaction total in “SDKReadConfig” object. Please notes that if you wasn’t using Taxes in the confirmation you can give SDKReadConfig a SDKTransactionTotals object with taxes amount of 0.
Currency exponent support for 0 decimals has been added to Currency object. This exponent must be set according your market
Changes in the init the sdk, MPosTransaction was rename to PaymentsSDK and was added to PaymentsConfiguration to create this object
TransactionCardData change to TransactionCard, which has a case for emv and another for swipe, expireDate is not requested anymore, for emv case was added emvApp and cvmResult and for swipe case was added needPin
Support for pin in qpos readers for swipe transactions
In TransactionIntentDelegate.onTransactionApproved was added TransactionApproved that contains more details of the transaction approved
For transaction amount handling BigDecimal is used instead of double
Change frameworks format, of .framework to XCFrameworks
Internal bug fixing and improvements
Versión 10.3.0 (Deprecated)
- Fix issue compiling in XCode 13 by disabling bitcode support
Versión 10.2.1 (27-07-2021) (Deprecated)
- Updated the magicpos SDK to support of alimentar card(Argentina)
Versión 10.2.0 (28-06-2021) (Deprecated)
- Fixed an issue in timeout, the timeout set in ReadConfig.timeout was not respected
Versión 10.1.1 (14-06-2021) (Deprecated)
- Fixed an issue that did that the method TransactionIntent.abort does not works
Versión 10.1.0 (26-04-2021) (Deprecated)
In magicpos readers is added the flow to support refunds and cancels for NFC
Added support to firwmare update and config update in magicpos readers
Added support to config update in qpos readers
Versión 10.0.0 (12-03-2021) (Deprecated)
Enhance in the internal mapping of fallback error
Added hasChip property to TransactionCard
Internal use of DateEncodingStrategy .iso8601
Versión 9.0.0 (03-02-2021) (Deprecated)
Fixed an issue where errors during reader preparation (including during configuration update) were not reported correctly
For transactions the Argentina timezone is used without consider the phone config
Fixed an issue when transactions were made with visa NFC in magicos
The reader serial is added to transactions data
Added optional system logging (New param in MPosTransaction.configure)
Versión 7.0.0 (03-11-2020) (Deprecated)
The merchantId field must now be sent within the new Merchant object, which also allows you to include an optional merchantName
Fixed an issue of rounding problem
Fixed an issue in magicpos when the read of NFC card failed, returned internal error irrecuperable
Versión 6.0.0 (30-10-2020) (Deprecated)
Fixed an issue of serverError in refund and cancel
The irrecuperable error aborted only should to happen when abort is called
Normalized taxes parameter in payment, refund and cancel
Added cardHolderAuthenticationEntity field to messaging