@stripe/stripe-react-native 0.65.1 → 0.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/android/detekt/detekt-baseline.xml +0 -10
  2. package/android/gradle.properties +1 -1
  3. package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +51 -57
  4. package/android/src/main/java/com/reactnativestripesdk/CurrencySelectorElementEvent.kt +26 -0
  5. package/android/src/main/java/com/reactnativestripesdk/CurrencySelectorElementView.kt +129 -16
  6. package/android/src/main/java/com/reactnativestripesdk/CurrencySelectorElementViewManager.kt +17 -0
  7. package/android/src/main/java/com/reactnativestripesdk/EventEmitterCompat.kt +4 -0
  8. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetManager.kt +8 -19
  9. package/android/src/main/java/com/reactnativestripesdk/StripeAbstractComposeView.kt +1 -0
  10. package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +89 -31
  11. package/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +1 -0
  12. package/android/src/main/java/com/reactnativestripesdk/customersheet/CustomerSheetManager.kt +2 -16
  13. package/android/src/main/java/com/reactnativestripesdk/utils/CheckoutMappers.kt +59 -33
  14. package/android/src/main/java/com/reactnativestripesdk/utils/DefaultActivityLifecycleCallbacks.kt +41 -0
  15. package/android/src/main/java/com/reactnativestripesdk/utils/Errors.kt +11 -6
  16. package/android/src/oldarch/java/com/reactnativestripesdk/NativeOnrampSdkModuleSpec.java +17 -3
  17. package/android/src/oldarch/java/com/reactnativestripesdk/NativeStripeSdkModuleSpec.java +2 -2
  18. package/android/src/onramp/java/com/reactnativestripesdk/OnrampErrors.kt +145 -0
  19. package/android/src/onramp/java/com/reactnativestripesdk/OnrampMappers.kt +125 -0
  20. package/android/src/onramp/java/com/reactnativestripesdk/OnrampSdkModule.kt +144 -22
  21. package/android/src/test/java/com/reactnativestripesdk/DrawableLoadingTest.kt +6 -2
  22. package/android/src/test/java/com/reactnativestripesdk/OnrampErrorsTest.kt +168 -0
  23. package/android/src/test/java/com/reactnativestripesdk/mappers/OnrampMappersTest.kt +107 -0
  24. package/android/src/test/java/com/reactnativestripesdk/utils/CheckoutMappersTest.kt +39 -30
  25. package/android/src/test/java/com/reactnativestripesdk/utils/CheckoutTestFixtures.java +8 -0
  26. package/ios/CurrencySelectorElementManager.m +7 -0
  27. package/ios/CurrencySelectorElementView.swift +142 -7
  28. package/ios/EmbeddedPaymentElementView.swift +1 -1
  29. package/ios/Mappers+Checkout.swift +251 -107
  30. package/ios/Mappers.swift +97 -7
  31. package/ios/NewArch/StripeCurrencySelectorElementComponentView.mm +14 -0
  32. package/ios/OldArch/StripeSdkEventEmitterCompat.h +1 -0
  33. package/ios/OldArch/StripeSdkEventEmitterCompat.m +6 -0
  34. package/ios/OnrampErrors.swift +132 -0
  35. package/ios/PaymentOptionDisplayData+ReactNative.swift +1 -1
  36. package/ios/PaymentSheetAppearance.swift +1 -1
  37. package/ios/StripeOnrampSdk.mm +19 -0
  38. package/ios/StripeSdk.mm +14 -14
  39. package/ios/StripeSdkEmitter.swift +1 -0
  40. package/ios/StripeSdkImpl+Checkout.swift +66 -31
  41. package/ios/StripeSdkImpl+CustomerSheet.swift +1 -1
  42. package/ios/StripeSdkImpl+Embedded.swift +1 -1
  43. package/ios/StripeSdkImpl+PaymentSheet.swift +1 -1
  44. package/ios/StripeSdkImpl.swift +116 -24
  45. package/lib/commonjs/components/PaymentMethodMessagingElement.js +1 -1
  46. package/lib/commonjs/components/PaymentMethodMessagingElement.js.map +1 -1
  47. package/lib/commonjs/components/StripeProvider.js +1 -1
  48. package/lib/commonjs/components/StripeProvider.js.map +1 -1
  49. package/lib/commonjs/hooks/useCheckout.js +1 -1
  50. package/lib/commonjs/hooks/useCheckout.js.map +1 -1
  51. package/lib/commonjs/hooks/useOnramp.js +1 -1
  52. package/lib/commonjs/hooks/useOnramp.js.map +1 -1
  53. package/lib/commonjs/internal/stripeConfig.js +2 -0
  54. package/lib/commonjs/internal/stripeConfig.js.map +1 -0
  55. package/lib/commonjs/specs/NativeOnrampSdkModule.js.map +1 -1
  56. package/lib/commonjs/specs/NativeStripeSdkModule.js.map +1 -1
  57. package/lib/commonjs/types/Errors.js +1 -1
  58. package/lib/commonjs/types/Errors.js.map +1 -1
  59. package/lib/commonjs/types/Onramp.js +1 -1
  60. package/lib/commonjs/types/Onramp.js.map +1 -1
  61. package/lib/module/components/PaymentMethodMessagingElement.js +1 -1
  62. package/lib/module/components/PaymentMethodMessagingElement.js.map +1 -1
  63. package/lib/module/components/StripeProvider.js +1 -1
  64. package/lib/module/components/StripeProvider.js.map +1 -1
  65. package/lib/module/hooks/useCheckout.js +1 -1
  66. package/lib/module/hooks/useCheckout.js.map +1 -1
  67. package/lib/module/hooks/useOnramp.js +1 -1
  68. package/lib/module/hooks/useOnramp.js.map +1 -1
  69. package/lib/module/internal/stripeConfig.js +2 -0
  70. package/lib/module/internal/stripeConfig.js.map +1 -0
  71. package/lib/module/specs/NativeOnrampSdkModule.js.map +1 -1
  72. package/lib/module/specs/NativeStripeSdkModule.js.map +1 -1
  73. package/lib/module/types/Errors.js +1 -1
  74. package/lib/module/types/Errors.js.map +1 -1
  75. package/lib/module/types/Onramp.js +1 -1
  76. package/lib/module/types/Onramp.js.map +1 -1
  77. package/lib/typescript/src/components/PaymentMethodMessagingElement.d.ts +1 -1
  78. package/lib/typescript/src/components/PaymentMethodMessagingElement.d.ts.map +1 -1
  79. package/lib/typescript/src/components/StripeProvider.d.ts.map +1 -1
  80. package/lib/typescript/src/hooks/useCheckout.d.ts.map +1 -1
  81. package/lib/typescript/src/hooks/useOnramp.d.ts +32 -10
  82. package/lib/typescript/src/hooks/useOnramp.d.ts.map +1 -1
  83. package/lib/typescript/src/internal/stripeConfig.d.ts +3 -0
  84. package/lib/typescript/src/internal/stripeConfig.d.ts.map +1 -0
  85. package/lib/typescript/src/specs/NativeOnrampSdkModule.d.ts +3 -0
  86. package/lib/typescript/src/specs/NativeOnrampSdkModule.d.ts.map +1 -1
  87. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts +2 -2
  88. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts.map +1 -1
  89. package/lib/typescript/src/types/Checkout.d.ts +266 -92
  90. package/lib/typescript/src/types/Checkout.d.ts.map +1 -1
  91. package/lib/typescript/src/types/Errors.d.ts +0 -5
  92. package/lib/typescript/src/types/Errors.d.ts.map +1 -1
  93. package/lib/typescript/src/types/Onramp.d.ts +168 -9
  94. package/lib/typescript/src/types/Onramp.d.ts.map +1 -1
  95. package/package.json +3 -2
  96. package/src/components/PaymentMethodMessagingElement.tsx +54 -52
  97. package/src/components/StripeProvider.tsx +2 -0
  98. package/src/hooks/useCheckout.tsx +20 -13
  99. package/src/hooks/useOnramp.tsx +139 -12
  100. package/src/internal/stripeConfig.ts +9 -0
  101. package/src/specs/NativeOnrampSdkModule.ts +5 -0
  102. package/src/specs/NativeStripeSdkModule.ts +6 -5
  103. package/src/types/Checkout.ts +289 -93
  104. package/src/types/Errors.ts +0 -6
  105. package/src/types/Onramp.ts +192 -9
  106. package/stripe-react-native.podspec +3 -3
  107. package/ios/CurrencySelectorElementManager.swift +0 -12
@@ -0,0 +1,132 @@
1
+ //
2
+ // OnrampErrors.swift
3
+ // stripe-react-native
4
+ //
5
+ // Created by Michael Liberatore on 5/28/26.
6
+ //
7
+
8
+ #if canImport(StripeCryptoOnramp)
9
+ import Foundation
10
+ @_spi(CryptoOnrampAlpha) import StripeCryptoOnramp
11
+
12
+ enum OnrampErrors {
13
+
14
+ /// Creates a React Native error envelope for a failed Crypto Onramp operation.
15
+ ///
16
+ /// Typed Crypto Onramp errors include onramp-specific diagnostics in addition to the standard error fields.
17
+ static func createFailedError(_ error: Swift.Error) -> NSDictionary {
18
+ return createOnrampError(code: ErrorType.Failed, error: error)
19
+ }
20
+
21
+ /// Creates a React Native error envelope for calls made before Crypto Onramp has been configured.
22
+ static func createNotConfiguredError() -> NSDictionary {
23
+ return createOnrampErrorMap(
24
+ code: ErrorType.Failed,
25
+ message: "Onramp is not configured."
26
+ )
27
+ }
28
+
29
+ private static func createOnrampError(code: String, error: Swift.Error) -> NSDictionary {
30
+ if let apiError = error as? StripeCryptoOnrampAPIError {
31
+ return createOnrampAPIErrorMap(
32
+ code: code,
33
+ onrampErrorType: onrampErrorType(for: apiError),
34
+ error: apiError
35
+ )
36
+ }
37
+
38
+ if let onrampError = error as? StripeCryptoOnrampError {
39
+ return createOnrampErrorMap(
40
+ code: code,
41
+ message: onrampError.userMessage,
42
+ localizedMessage: onrampError.localizedDescription,
43
+ stripeErrorCode: onrampError.code,
44
+ additionalFields: commonOnrampFields(error: onrampError)
45
+ )
46
+ }
47
+
48
+ return Errors.createError(code, error)
49
+ }
50
+
51
+ private static func createOnrampAPIErrorMap(
52
+ code: String,
53
+ onrampErrorType: String,
54
+ error: StripeCryptoOnrampAPIError
55
+ ) -> NSDictionary {
56
+ return createOnrampErrorMap(
57
+ code: code,
58
+ message: error.userMessage,
59
+ localizedMessage: error.localizedDescription,
60
+ type: error.type,
61
+ stripeErrorCode: error.code,
62
+ additionalFields: commonOnrampFields(error: error, onrampErrorType: onrampErrorType).merging([
63
+ "reason": error.reason,
64
+ "operation": error.operation,
65
+ "appPackageName": error.appIdentifier,
66
+ "mode": error.mode,
67
+ "sdkVersions": mapSDKVersions(error.sdkVersions),
68
+ "requestId": error.requestID,
69
+ "apiErrorCode": error.code,
70
+ "apiErrorType": error.type,
71
+ "apiErrorMessage": error.apiMessage,
72
+ "apiUserMessage": error.apiUserMessage,
73
+ "docUrl": error.docURL?.absoluteString,
74
+ ]) { _, new in new }
75
+ )
76
+ }
77
+
78
+ private static func commonOnrampFields(
79
+ error: StripeCryptoOnrampError,
80
+ onrampErrorType: String? = nil
81
+ ) -> [String: Any?] {
82
+ return [
83
+ "onrampErrorType": onrampErrorType,
84
+ "developerMessage": error.developerMessage,
85
+ "userMessage": error.userMessage,
86
+ ]
87
+ }
88
+
89
+ private static func mapSDKVersions(_ sdkVersions: [SDKVersion]) -> [[String: String]] {
90
+ return sdkVersions.map { sdkVersion in
91
+ [
92
+ "name": sdkVersion.name,
93
+ "version": sdkVersion.version,
94
+ ]
95
+ }
96
+ }
97
+
98
+ private static func onrampErrorType(for error: StripeCryptoOnrampAPIError) -> String {
99
+ switch error {
100
+ case is AppAttestationAPIError:
101
+ return "AppAttestationError"
102
+ default:
103
+ return "UncategorizedApiError"
104
+ }
105
+ }
106
+
107
+ private static func createOnrampErrorMap(
108
+ code: String,
109
+ message: String?,
110
+ localizedMessage: String? = nil,
111
+ declineCode: String? = nil,
112
+ type: String? = nil,
113
+ stripeErrorCode: String? = nil,
114
+ additionalFields: [String: Any?] = [:]
115
+ ) -> NSDictionary {
116
+ let fields: [String: Any?] = [
117
+ "code": code,
118
+ "message": message,
119
+ "localizedMessage": localizedMessage ?? message,
120
+ "declineCode": declineCode,
121
+ "stripeErrorCode": stripeErrorCode,
122
+ "type": type,
123
+ ].merging(additionalFields) { _, new in new }
124
+
125
+ return ["error": fields.mapValues(nullIfNil)]
126
+ }
127
+
128
+ private static func nullIfNil(_ value: Any?) -> Any {
129
+ return value ?? NSNull()
130
+ }
131
+ }
132
+ #endif
@@ -6,7 +6,7 @@
6
6
  //
7
7
 
8
8
  import Foundation
9
- @_spi(EmbeddedPaymentElementPrivateBeta) import StripePaymentSheet
9
+ import StripePaymentSheet
10
10
 
11
11
  extension EmbeddedPaymentElement.PaymentOptionDisplayData {
12
12
  /// Convert `PaymentOptionDisplayData` into a dictionary compatible with React Native bridge.
@@ -4,7 +4,7 @@
4
4
  //
5
5
  // Created by Charles Cruzan on 5/11/22.
6
6
  //
7
- @_spi(EmbeddedPaymentElementPrivateBeta) import StripePaymentSheet
7
+ import StripePaymentSheet
8
8
 
9
9
  internal class PaymentSheetAppearance {
10
10
  class func buildAppearanceFromParams(userParams: NSDictionary?) throws -> PaymentSheet.Appearance {
@@ -65,6 +65,25 @@ RCT_EXPORT_METHOD(attachKycInfo:(nonnull NSDictionary *)info
65
65
  [StripeSdkImpl.shared attachKycInfo:info resolver:resolve rejecter:reject];
66
66
  }
67
67
 
68
+ RCT_EXPORT_METHOD(retrieveMissingIdentifiers:(nonnull RCTPromiseResolveBlock)resolve
69
+ reject:(nonnull RCTPromiseRejectBlock)reject)
70
+ {
71
+ [StripeSdkImpl.shared retrieveMissingIdentifiers:resolve rejecter:reject];
72
+ }
73
+
74
+ RCT_EXPORT_METHOD(submitIdentifiers:(nonnull NSArray *)identifiers
75
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
76
+ reject:(nonnull RCTPromiseRejectBlock)reject)
77
+ {
78
+ [StripeSdkImpl.shared submitIdentifiers:identifiers resolver:resolve rejecter:reject];
79
+ }
80
+
81
+ RCT_EXPORT_METHOD(presentUserAttestation:(nonnull RCTPromiseResolveBlock)resolve
82
+ reject:(nonnull RCTPromiseRejectBlock)reject)
83
+ {
84
+ [StripeSdkImpl.shared presentUserAttestation:resolve rejecter:reject];
85
+ }
86
+
68
87
  RCT_EXPORT_METHOD(presentKycInfoVerification:(NSDictionary *)updatedAddress
69
88
  resolve:(nonnull RCTPromiseResolveBlock)resolve
70
89
  reject:(nonnull RCTPromiseRejectBlock)reject)
package/ios/StripeSdk.mm CHANGED
@@ -348,24 +348,24 @@ RCT_EXPORT_METHOD(checkoutSelectShippingOption:(nonnull NSString *)sessionKey
348
348
  rejecter:reject];
349
349
  }
350
350
 
351
- RCT_EXPORT_METHOD(checkoutUpdateTaxId:(nonnull NSString *)sessionKey
352
- type:(nonnull NSString *)type
353
- value:(nonnull NSString *)value
354
- resolve:(nonnull RCTPromiseResolveBlock)resolve
355
- reject:(nonnull RCTPromiseRejectBlock)reject)
351
+ RCT_EXPORT_METHOD(checkoutRunServerUpdateStart:(nonnull NSString *)sessionKey
352
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
353
+ reject:(nonnull RCTPromiseRejectBlock)reject)
356
354
  {
357
- [StripeSdkImpl.shared checkoutUpdateTaxId:sessionKey
358
- type:type
359
- value:value
360
- resolver:resolve
361
- rejecter:reject];
355
+ [StripeSdkImpl.shared checkoutRunServerUpdateStart:sessionKey
356
+ resolver:resolve
357
+ rejecter:reject];
362
358
  }
363
359
 
364
- RCT_EXPORT_METHOD(checkoutRefresh:(nonnull NSString *)sessionKey
365
- resolve:(nonnull RCTPromiseResolveBlock)resolve
366
- reject:(nonnull RCTPromiseRejectBlock)reject)
360
+ RCT_EXPORT_METHOD(checkoutRunServerUpdateComplete:(nonnull NSString *)sessionKey
361
+ error:(NSString *)error
362
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
363
+ reject:(nonnull RCTPromiseRejectBlock)reject)
367
364
  {
368
- [StripeSdkImpl.shared checkoutRefresh:sessionKey resolver:resolve rejecter:reject];
365
+ [StripeSdkImpl.shared checkoutRunServerUpdateComplete:sessionKey
366
+ error:error
367
+ resolver:resolve
368
+ rejecter:reject];
369
369
  }
370
370
 
371
371
  RCT_EXPORT_METHOD(initCustomerSheet:(nonnull NSDictionary *)params
@@ -22,6 +22,7 @@ import Foundation
22
22
  func emitOnCustomPaymentMethodConfirmHandlerCallback(_ value: [String: Any])
23
23
  func emitPaymentMethodMessagingElementDidUpdateHeight(_ value: [String: Any])
24
24
  func emitPaymentMethodMessagingElementConfigureResult(_ value: [String: Any])
25
+ func emitCheckoutSessionDidChangeState(_ value: [String: Any])
25
26
  }
26
27
 
27
28
  @objc public protocol StripeOnrampSdkEmitter {
@@ -5,8 +5,9 @@
5
5
  // Created by Nick Porter on 4/29/26.
6
6
  //
7
7
 
8
+ import Combine
8
9
  import Foundation
9
- @_spi(CheckoutSessionsPreview) import StripePaymentSheet
10
+ @_spi(ReactNativeSDK) import StripePaymentSheet
10
11
 
11
12
  extension StripeSdkImpl {
12
13
  internal func currentCheckoutStateResult(checkout: Checkout) -> NSDictionary {
@@ -35,7 +36,17 @@ extension StripeSdkImpl {
35
36
  )
36
37
  let sessionKey = UUID().uuidString
37
38
 
39
+ let cancellable = checkout.$state
40
+ .dropFirst()
41
+ .sink { [weak self] state in
42
+ self?.emitter?.emitCheckoutSessionDidChangeState([
43
+ "sessionKey": sessionKey,
44
+ "state": Mappers.mapFromCheckoutState(state),
45
+ ])
46
+ }
47
+
38
48
  self.checkoutInstances[sessionKey] = checkout
49
+ self.checkoutStateCancellables[sessionKey] = cancellable
39
50
 
40
51
  resolve([
41
52
  "sessionKey": sessionKey,
@@ -65,7 +76,11 @@ extension StripeSdkImpl {
65
76
  resolver: resolve,
66
77
  rejecter: reject
67
78
  ) { checkout, addressUpdate in
68
- try await checkout.updateShippingAddress(addressUpdate)
79
+ try await checkout.updateShippingAddress(
80
+ name: addressUpdate.name,
81
+ phone: addressUpdate.phone,
82
+ address: addressUpdate.address
83
+ )
69
84
  }
70
85
  }
71
86
 
@@ -87,7 +102,11 @@ extension StripeSdkImpl {
87
102
  resolver: resolve,
88
103
  rejecter: reject
89
104
  ) { checkout, addressUpdate in
90
- try await checkout.updateBillingAddress(addressUpdate)
105
+ try await checkout.updateBillingAddress(
106
+ name: addressUpdate.name,
107
+ phone: addressUpdate.phone,
108
+ address: addressUpdate.address
109
+ )
91
110
  }
92
111
  }
93
112
 
@@ -135,17 +154,12 @@ extension StripeSdkImpl {
135
154
  return
136
155
  }
137
156
 
138
- let lineItemUpdate = Checkout.LineItemUpdate(
139
- lineItemId: lineItemId,
140
- quantity: integerQuantity
141
- )
142
-
143
157
  performCheckoutMutation(
144
158
  sessionKey: sessionKey,
145
159
  resolver: resolve,
146
160
  rejecter: reject
147
161
  ) { checkout in
148
- try await checkout.updateQuantity(with: lineItemUpdate)
162
+ try await checkout.updateQuantity(lineItemId: lineItemId, quantity: integerQuantity)
149
163
  }
150
164
  }
151
165
 
@@ -165,38 +179,59 @@ extension StripeSdkImpl {
165
179
  }
166
180
  }
167
181
 
168
- @objc(checkoutUpdateTaxId:type:value:resolver:rejecter:)
169
- public func checkoutUpdateTaxId(
182
+ @objc(checkoutRunServerUpdateStart:resolver:rejecter:)
183
+ public func checkoutRunServerUpdateStart(
170
184
  sessionKey: String,
171
- type: String,
172
- value: String,
173
185
  resolver resolve: @escaping RCTPromiseResolveBlock,
174
186
  rejecter reject: @escaping RCTPromiseRejectBlock
175
187
  ) {
176
- let taxIdUpdate = Checkout.TaxIdUpdate(type: type, value: value)
188
+ Task { @MainActor [weak self] in
189
+ guard let self else {
190
+ reject(ErrorType.Failed, "Stripe SDK is unavailable", nil)
191
+ return
192
+ }
177
193
 
178
- performCheckoutMutation(
179
- sessionKey: sessionKey,
180
- resolver: resolve,
181
- rejecter: reject
182
- ) { checkout in
183
- try await checkout.updateTaxId(with: taxIdUpdate)
194
+ guard let checkout = self.checkoutInstances[sessionKey] else {
195
+ reject(ErrorType.Failed, "Checkout session not found", nil)
196
+ return
197
+ }
198
+
199
+ guard self.serverUpdateContinuations[sessionKey] == nil else {
200
+ reject(ErrorType.Failed, "A server update is already in progress for this session", nil)
201
+ return
202
+ }
203
+
204
+ do {
205
+ try await checkout.runServerUpdate {
206
+ try await withCheckedThrowingContinuation { continuation in
207
+ self.serverUpdateContinuations[sessionKey] = continuation
208
+ }
209
+ }
210
+ resolve(self.currentCheckoutStateResult(checkout: checkout))
211
+ } catch {
212
+ reject(self.checkoutErrorCode(for: error), error.localizedDescription, error)
213
+ }
184
214
  }
185
215
  }
186
216
 
187
- @objc(checkoutRefresh:resolver:rejecter:)
188
- public func checkoutRefresh(
217
+ @objc(checkoutRunServerUpdateComplete:error:resolver:rejecter:)
218
+ public func checkoutRunServerUpdateComplete(
189
219
  sessionKey: String,
220
+ error: String?,
190
221
  resolver resolve: @escaping RCTPromiseResolveBlock,
191
222
  rejecter reject: @escaping RCTPromiseRejectBlock
192
223
  ) {
193
- performCheckoutMutation(
194
- sessionKey: sessionKey,
195
- resolver: resolve,
196
- rejecter: reject
197
- ) { checkout in
198
- try await checkout.refresh()
224
+ guard let continuation = serverUpdateContinuations.removeValue(forKey: sessionKey) else {
225
+ reject(ErrorType.Failed, "No pending server update for this session", nil)
226
+ return
227
+ }
228
+
229
+ if let error {
230
+ continuation.resume(throwing: CheckoutError.apiError(message: error))
231
+ } else {
232
+ continuation.resume()
199
233
  }
234
+ resolve(nil)
200
235
  }
201
236
 
202
237
  internal func buildCheckoutConfiguration(params: NSDictionary) -> Checkout.Configuration {
@@ -244,7 +279,7 @@ extension StripeSdkImpl {
244
279
  missingCountryMessage: String,
245
280
  resolver resolve: @escaping RCTPromiseResolveBlock,
246
281
  rejecter reject: @escaping RCTPromiseRejectBlock,
247
- operation: @escaping (Checkout, Checkout.AddressUpdate) async throws -> Void
282
+ operation: @escaping (Checkout, Checkout.ContactAddress) async throws -> Void
248
283
  ) {
249
284
  guard let addressUpdate = buildCheckoutAddressUpdate(
250
285
  address: address,
@@ -268,7 +303,7 @@ extension StripeSdkImpl {
268
303
  address: NSDictionary,
269
304
  name: String?,
270
305
  phone: String?
271
- ) -> Checkout.AddressUpdate? {
306
+ ) -> Checkout.ContactAddress? {
272
307
  guard let country = address["country"] as? String, !country.isEmpty else {
273
308
  return nil
274
309
  }
@@ -282,7 +317,7 @@ extension StripeSdkImpl {
282
317
  postalCode: address["postalCode"] as? String
283
318
  )
284
319
 
285
- return Checkout.AddressUpdate(
320
+ return Checkout.ContactAddress(
286
321
  name: name,
287
322
  phone: phone,
288
323
  address: checkoutAddress
@@ -6,7 +6,7 @@
6
6
  //
7
7
 
8
8
  import Foundation
9
- @_spi(PrivateBetaCustomerSheet) @_spi(CustomerSessionBetaAccess) @_spi(STP) import StripePaymentSheet
9
+ @_spi(PrivateBetaCustomerSheet) @_spi(STP) import StripePaymentSheet
10
10
  extension StripeSdkImpl {
11
11
  @objc(initCustomerSheet:customerAdapterOverrides:resolver:rejecter:)
12
12
  public func initCustomerSheet(params: NSDictionary,
@@ -6,7 +6,7 @@
6
6
  //
7
7
 
8
8
  import Foundation
9
- @_spi(EmbeddedPaymentElementPrivateBeta) @_spi(ExperimentalAllowsRemovalOfLastSavedPaymentMethodAPI) @_spi(CustomerSessionBetaAccess) @_spi(STP) @_spi(CustomPaymentMethodsBeta) @_spi(CardFundingFilteringPrivatePreview) @_spi(CheckoutSessionsPreview) import StripePaymentSheet
9
+ @_spi(ExperimentalAllowsRemovalOfLastSavedPaymentMethodAPI) @_spi(STP) @_spi(CustomPaymentMethodsBeta) @_spi(CardFundingFilteringPrivatePreview) import StripePaymentSheet
10
10
 
11
11
  @objc(StripeSdkImpl)
12
12
  extension StripeSdkImpl {
@@ -6,7 +6,7 @@
6
6
  //
7
7
 
8
8
  import Foundation
9
- @_spi(ExperimentalAllowsRemovalOfLastSavedPaymentMethodAPI) @_spi(CustomerSessionBetaAccess) @_spi(EmbeddedPaymentElementPrivateBeta) @_spi(STP) @_spi(PaymentMethodOptionsSetupFutureUsagePreview) @_spi(CustomPaymentMethodsBeta) @_spi(ConfirmationTokensPublicPreview) @_spi(CardFundingFilteringPrivatePreview) @_spi(CheckoutSessionsPreview) import StripePaymentSheet
9
+ @_spi(ExperimentalAllowsRemovalOfLastSavedPaymentMethodAPI) @_spi(STP) @_spi(PaymentMethodOptionsSetupFutureUsagePreview) @_spi(CustomPaymentMethodsBeta) @_spi(ConfirmationTokensPublicPreview) @_spi(CardFundingFilteringPrivatePreview) import StripePaymentSheet
10
10
 
11
11
  extension StripeSdkImpl {
12
12
  internal func buildPaymentSheetConfiguration(