diff --git a/RNBraintreeDropIn.podspec b/RNBraintreeDropIn.podspec index bf1024c..b3f6d8e 100644 --- a/RNBraintreeDropIn.podspec +++ b/RNBraintreeDropIn.podspec @@ -14,9 +14,9 @@ Pod::Spec.new do |s| s.source_files = "ios/**/*.{h,m}" s.requires_arc = true s.dependency 'React' - s.dependency 'Braintree', '5.26.0' - s.dependency 'BraintreeDropIn', '9.13.0' - s.dependency 'Braintree/DataCollector', '5.26.0' - s.dependency 'Braintree/ApplePay', '5.26.0' - s.dependency 'Braintree/Venmo', '5.26.0' + s.dependency 'Braintree', '6.32.0' + s.dependency 'BraintreeDropIn', '9.14.0' + s.dependency 'Braintree/DataCollector', '6.32.0' + s.dependency 'Braintree/ApplePay', '6.32.0' + s.dependency 'Braintree/Venmo', '6.32.0' end diff --git a/android/build.gradle b/android/build.gradle index ce9e13b..90ac0ba 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -32,7 +32,7 @@ repositories { } dependencies { - implementation 'com.braintreepayments.api:drop-in:6.16.0' + implementation 'com.braintreepayments.api:drop-in:6.17.0' implementation 'com.facebook.react:react-native:+' } diff --git a/ios/RNBraintreeDropIn.h b/ios/RNBraintreeDropIn.h index 43dbbff..f3cf5e7 100644 --- a/ios/RNBraintreeDropIn.h +++ b/ios/RNBraintreeDropIn.h @@ -10,6 +10,7 @@ #import "BraintreeCore.h" #import "BraintreeDropIn.h" #import "BTCardNonce.h" +#import "BTPaymentMethodNonce.h" #import "BTDataCollector.h" #import "BraintreeApplePay.h" diff --git a/ios/RNBraintreeDropIn.m b/ios/RNBraintreeDropIn.m index d555392..2c0a2a3 100644 --- a/ios/RNBraintreeDropIn.m +++ b/ios/RNBraintreeDropIn.m @@ -161,22 +161,21 @@ - (dispatch_queue_t)methodQueue } else if (result.canceled) { reject(@"USER_CANCELLATION", @"The user cancelled", nil); } else { - if (threeDSecureOptions && [result.paymentMethod isKindOfClass:[BTCardNonce class]]) { - BTCardNonce *cardNonce = (BTCardNonce *)result.paymentMethod; - if (!cardNonce.threeDSecureInfo.liabilityShiftPossible && cardNonce.threeDSecureInfo.wasVerified) { - reject(@"3DSECURE_NOT_ABLE_TO_SHIFT_LIABILITY", @"3D Secure liability cannot be shifted", nil); - } else if (!cardNonce.threeDSecureInfo.liabilityShifted && cardNonce.threeDSecureInfo.wasVerified) { - reject(@"3DSECURE_LIABILITY_NOT_SHIFTED", @"3D Secure liability was not shifted", nil); - } else{ + if (threeDSecureOptions) { + id paymentMethod = result.paymentMethod; + if ([paymentMethod respondsToSelector:@selector(threeDSecureInfo)]) { + BTThreeDSecureInfo *info = [paymentMethod performSelector:@selector(threeDSecureInfo)]; + if (!info.liabilityShiftPossible && info.wasVerified) { + reject(@"3DSECURE_NOT_ABLE_TO_SHIFT_LIABILITY", @"3D Secure liability cannot be shifted", nil); + } else if (!info.liabilityShifted && info.wasVerified) { + reject(@"3DSECURE_LIABILITY_NOT_SHIFTED", @"3D Secure liability was not shifted", nil); + } else { + [[self class] resolvePayment:result deviceData:self.deviceDataCollector resolver:resolve]; + } + } else { + // fallback en caso de que no tenga info de 3DS [[self class] resolvePayment:result deviceData:self.deviceDataCollector resolver:resolve]; } - } else if(result.paymentMethod == nil && (result.paymentMethodType == 16 || result.paymentMethodType == 17 || result.paymentMethodType == 18)){ //Apple Pay - // UIViewController *ctrl = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; - // [ctrl presentViewController:self.viewController animated:YES completion:nil]; - UIViewController *rootViewController = RCTPresentedViewController(); - [rootViewController presentViewController:self.viewController animated:YES completion:nil]; - } else{ - [[self class] resolvePayment:result deviceData:self.deviceDataCollector resolver:resolve]; } } }]; @@ -229,7 +228,7 @@ - (dispatch_queue_t)methodQueue card.postalCode = postalCode; [cardClient tokenizeCard:card - completion:^(BTCardNonce *tokenizedCard, NSError *error) { + completion:^(id tokenizedCard, NSError *error) { if (error == nil) { resolve(tokenizedCard.nonce); } else { diff --git a/package.json b/package.json index 37dc556..3fc8262 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@spotahome/react-native-braintree-dropin-ui", - "version": "1.6.0", + "version": "2.0.0-1", "description": "> React Native integration of Braintree Drop-in IOS V4 ANDROID V2 (Apple Pay &Android Pay Enabled)", "main": "index.js", "dependencies": {},