From 2867f9780d31bcd0873ba05f5ae3a03780d49257 Mon Sep 17 00:00:00 2001 From: Rapidys Date: Wed, 15 Apr 2026 01:20:22 +0400 Subject: [PATCH] fix(ios): consistently handle Apple Pay cancel on dismiss --- ios/RNCloudipsp/RNCloudipsp.m | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/ios/RNCloudipsp/RNCloudipsp.m b/ios/RNCloudipsp/RNCloudipsp.m index 4cfabb8..7a858e9 100644 --- a/ios/RNCloudipsp/RNCloudipsp.m +++ b/ios/RNCloudipsp/RNCloudipsp.m @@ -106,22 +106,24 @@ - (UIViewController *)topViewController:(UIViewController *)rootViewController } - (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller { - RCTPromiseResolveBlock resolver = self.applePayCompleteResolver; + RCTPromiseResolveBlock completeResolver = self.applePayCompleteResolver; + RCTPromiseRejectBlock payRejecter = self.applePayRejecter; + self.applePayCompleteResolver = nil; + self.applePayResolve = nil; + self.applePayRejecter = nil; + self.applePayCallback = nil; - if (resolver == nil) { - RCTPromiseRejectBlock rejecter = self.applePayRejecter; - self.applePayResolve = nil; - self.applePayRejecter = nil; - - [controller dismissViewControllerAnimated:YES completion:^{ - rejecter(@"UserCanceled", @"User canceled ApplePay authentication", nil); - }]; - } else { - [controller dismissViewControllerAnimated:YES completion:^{ - resolver(nil); - }]; - } + [controller dismissViewControllerAnimated:YES completion:^{ + if (payRejecter) { + payRejecter(@"UserCanceled", @"User canceled ApplePay authentication", nil); + return; + } + + if (completeResolver) { + completeResolver(nil); + } + }]; } - (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller