diff --git a/CHANGELOG.md b/CHANGELOG.md index f10b217..aa58e4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## Changelog +### v2026.2.1 Feb 12, 2026 + +* Fix SDK to Android SDK 2.3.4 and iOS to 2.3.1 + ### v2025.2.1 Feb 19, 2025 * Address NPM dependency issue diff --git a/example/src/Screens/HomeScreen.tsx b/example/src/Screens/HomeScreen.tsx index a8c7448..421d416 100644 --- a/example/src/Screens/HomeScreen.tsx +++ b/example/src/Screens/HomeScreen.tsx @@ -11,14 +11,19 @@ import { type PaymentParameters, type PromptParameters, ProcessingMode, - type Failure, } from 'mobile-payments-sdk-react-native'; import React, { useState } from 'react'; -import { View, Text, Image, StyleSheet, TouchableOpacity } from 'react-native'; +import { + View, + Text, + Image, + StyleSheet, + TouchableOpacity, +} from 'react-native'; +import { SafeAreaView } from 'react-native-safe-area-context'; import uuid from 'react-native-uuid'; import LoadingButton from '../components/LoadingButton'; import HeaderButton from '../components/HeaderButton'; -import { SafeAreaView } from 'react-native-safe-area-context'; const HomeView = () => { const navigation = useNavigation(); @@ -121,8 +126,8 @@ const styles = StyleSheet.create({ backgroundColor: 'white', }, header: { - justifyContent: 'space-between', flexDirection: 'row', + marginBottom: 50, paddingLeft: 16, paddingRight: 16, }, @@ -131,8 +136,7 @@ const styles = StyleSheet.create({ }, content: { alignItems: 'center', - flex: 1, - justifyContent: 'center', + flex: 9, paddingLeft: 16, paddingRight: 16, }, @@ -148,6 +152,7 @@ const styles = StyleSheet.create({ marginBottom: 32, }, mockButton: { + flex: 1, alignItems: 'center', }, mockReaderText: { diff --git a/example/src/Screens/PermissionsScreen.tsx b/example/src/Screens/PermissionsScreen.tsx index ed42a9f..40eb9e1 100644 --- a/example/src/Screens/PermissionsScreen.tsx +++ b/example/src/Screens/PermissionsScreen.tsx @@ -7,6 +7,7 @@ import { Alert, Platform, } from 'react-native'; +import { SafeAreaView } from 'react-native-safe-area-context'; import DismissButton from '../components/DismissButton'; import PermissionRow from '../components/PermissionRow'; import { @@ -28,7 +29,6 @@ import { } from 'react-native-permissions'; import LoadingButton from '../components/LoadingButton'; import BuildConfig from 'react-native-build-config'; -import { SafeAreaView } from 'react-native-safe-area-context'; export const requestBluetooth = () => { requestMultiple( diff --git a/ios/Mappers.swift b/ios/Mappers.swift index c03c2eb..8d3c7e9 100644 --- a/ios/Mappers.swift +++ b/ios/Mappers.swift @@ -18,6 +18,10 @@ class Mappers { additionalPayments = AdditionalPaymentMethods.all } else if (additionalPaymentsRawArray.contains("KEYED")) { additionalPayments = AdditionalPaymentMethods.keyed + } else if (additionalPaymentsRawArray.contains("TAP_TO_PAY")) { + additionalPayments = AdditionalPaymentMethods.tapToPay + } else if (additionalPaymentsRawArray.contains("CASH")) { + additionalPayments = AdditionalPaymentMethods.cash } guard let prompt = PromptMode(rawValue: promptMode) else { return .failure(.cannotCreatePrompt) @@ -45,13 +49,6 @@ class Mappers { processingMode: processingMode ) } - else if let idempotencyKey = paymentParameters["idempotencyKey"] as? String { - paymentParams = PaymentParameters( - idempotencyKey: idempotencyKey, - amountMoney: amountMoney, - processingMode: processingMode - ) - } guard let paymentParams else { diff --git a/ios/MobilePaymentsSdkReactNative.swift b/ios/MobilePaymentsSdkReactNative.swift index f3d0e39..440d16e 100644 --- a/ios/MobilePaymentsSdkReactNative.swift +++ b/ios/MobilePaymentsSdkReactNative.swift @@ -579,8 +579,6 @@ extension MobilePaymentsSdkReactNative: PaymentManagerDelegate { switch paymentError { case .deviceTimeDoesNotMatchServerTime: errorMessage = "The local device time is out of sync with the server time, which could lead to inaccurate payment reporting. Check your device's time and attempt your action again." - case .idempotencyKeyReused: - errorMessage = "The idempotency key used for this payment has already been used. Review previous payments to ensure you are not processing a duplicate payment, and then try again with a new idempotency key." case .invalidPaymentParameters: errorMessage = "The PaymentParameters provided were invalid. Check the request details and try the payment again." case .invalidPaymentSource: diff --git a/package.json b/package.json index 4f592ef..e030cab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mobile-payments-sdk-react-native", - "version": "2025.9.1", + "version": "2026.2.1", "description": "Mobile Payments SDK plug-in for React Native. Enables developers to build secure in-person payment solutions.", "source": "./src/index.tsx", "main": "./lib/commonjs/index.js", diff --git a/src/models/enums.ts b/src/models/enums.ts index 278066e..24bc82f 100644 --- a/src/models/enums.ts +++ b/src/models/enums.ts @@ -7,6 +7,7 @@ export enum AccountType { export enum AdditionalPaymentMethodType { ALL = 'ALL', KEYED = 'KEYED', + TAP_TO_PAY = 'TAP_TO_PAY', } export enum AuthorizationState {