@stripe/stripe-react-native 0.65.0 → 0.65.1

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 (203) hide show
  1. package/README.md +2 -2
  2. package/android/detekt/detekt-baseline.xml +1 -66
  3. package/android/gradle.properties +3 -3
  4. package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormView.kt +3 -1
  5. package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormViewManager.kt +2 -1
  6. package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +5 -1
  7. package/android/src/main/java/com/reactnativestripesdk/CurrencySelectorElementView.kt +26 -0
  8. package/android/src/main/java/com/reactnativestripesdk/CurrencySelectorElementViewManager.kt +42 -0
  9. package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementView.kt +105 -49
  10. package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementViewManager.kt +72 -12
  11. package/android/src/main/java/com/reactnativestripesdk/FinancialConnectionsSheetManager.kt +8 -4
  12. package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt +2 -1
  13. package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt +26 -11
  14. package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherManager.kt +2 -1
  15. package/android/src/main/java/com/reactnativestripesdk/NavigationBarView.kt +14 -5
  16. package/android/src/main/java/com/reactnativestripesdk/PaymentElementConfig.kt +6 -2
  17. package/android/src/main/java/com/reactnativestripesdk/PaymentLauncherManager.kt +2 -1
  18. package/android/src/main/java/com/reactnativestripesdk/PaymentMethodCreateParamsFactory.kt +2 -1
  19. package/android/src/main/java/com/reactnativestripesdk/PaymentMethodMessagingElementConfig.kt +6 -2
  20. package/android/src/main/java/com/reactnativestripesdk/PaymentMethodMessagingElementViewManager.kt +2 -1
  21. package/android/src/main/java/com/reactnativestripesdk/PaymentOptionDisplayDataMapper.kt +8 -4
  22. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +9 -3
  23. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetManager.kt +110 -29
  24. package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +190 -24
  25. package/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +1 -0
  26. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressLauncherManager.kt +2 -1
  27. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetView.kt +3 -1
  28. package/android/src/main/java/com/reactnativestripesdk/customersheet/CustomerSheetManager.kt +6 -2
  29. package/android/src/main/java/com/reactnativestripesdk/customersheet/ReactNativeCustomerAdapter.kt +3 -1
  30. package/android/src/main/java/com/reactnativestripesdk/customersheet/ReactNativeCustomerSessionProvider.kt +2 -1
  31. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonManager.kt +2 -1
  32. package/android/src/main/java/com/reactnativestripesdk/utils/CheckoutAddressUpdate.kt +45 -0
  33. package/android/src/main/java/com/reactnativestripesdk/utils/CheckoutMappers.kt +101 -0
  34. package/android/src/main/java/com/reactnativestripesdk/utils/Errors.kt +4 -2
  35. package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +5 -1
  36. package/android/src/main/java/com/reactnativestripesdk/utils/Mappers.kt +29 -13
  37. package/android/src/main/java/com/reactnativestripesdk/utils/PostalCodeUtilities.kt +2 -1
  38. package/android/src/oldarch/java/com/facebook/react/viewmanagers/EmbeddedPaymentElementViewManagerDelegate.java +6 -0
  39. package/android/src/oldarch/java/com/facebook/react/viewmanagers/EmbeddedPaymentElementViewManagerInterface.java +2 -0
  40. package/android/src/oldarch/java/com/facebook/react/viewmanagers/StripeCurrencySelectorElementManagerDelegate.java +35 -0
  41. package/android/src/oldarch/java/com/facebook/react/viewmanagers/StripeCurrencySelectorElementManagerInterface.java +18 -0
  42. package/android/src/oldarch/java/com/reactnativestripesdk/NativeStripeSdkModuleSpec.java +8 -0
  43. package/android/src/test/java/com/reactnativestripesdk/mappers/MappersTest.kt +60 -0
  44. package/android/src/test/java/com/reactnativestripesdk/mappers/OnrampMappersTest.kt +38 -0
  45. package/android/src/test/java/com/reactnativestripesdk/mappers/PaymentOptionDisplayDataMapperTest.kt +9 -4
  46. package/android/src/test/java/com/reactnativestripesdk/utils/CheckoutMappersTest.kt +89 -0
  47. package/android/src/test/java/com/reactnativestripesdk/utils/CheckoutTestFixtures.java +49 -0
  48. package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewController.swift +6 -8
  49. package/ios/CurrencySelectorElementManager.m +9 -0
  50. package/ios/CurrencySelectorElementManager.swift +12 -0
  51. package/ios/CurrencySelectorElementView.swift +24 -0
  52. package/ios/Mappers+Checkout.swift +193 -0
  53. package/ios/NewArch/EmbeddedPaymentElementViewComponentView.mm +16 -2
  54. package/ios/NewArch/StripeCurrencySelectorElementComponentView.h +10 -0
  55. package/ios/NewArch/StripeCurrencySelectorElementComponentView.mm +75 -0
  56. package/ios/StripeSdk.mm +123 -0
  57. package/ios/StripeSdkImpl+Checkout.swift +308 -0
  58. package/ios/StripeSdkImpl+Embedded.swift +108 -27
  59. package/ios/StripeSdkImpl+PaymentSheet.swift +18 -2
  60. package/ios/StripeSdkImpl.swift +3 -1
  61. package/jest/mock.js +13 -1
  62. package/lib/commonjs/components/AddToWalletButton.js +1 -1
  63. package/lib/commonjs/components/AddToWalletButton.js.map +1 -1
  64. package/lib/commonjs/components/AddressSheet.js +1 -1
  65. package/lib/commonjs/components/AddressSheet.js.map +1 -1
  66. package/lib/commonjs/components/AuBECSDebitForm.js +1 -1
  67. package/lib/commonjs/components/AuBECSDebitForm.js.map +1 -1
  68. package/lib/commonjs/components/CardField.js +1 -1
  69. package/lib/commonjs/components/CardField.js.map +1 -1
  70. package/lib/commonjs/components/CardForm.js +1 -1
  71. package/lib/commonjs/components/CardForm.js.map +1 -1
  72. package/lib/commonjs/components/CurrencySelectorElement.js +2 -0
  73. package/lib/commonjs/components/CurrencySelectorElement.js.map +1 -0
  74. package/lib/commonjs/components/PaymentMethodMessagingElement.js +1 -1
  75. package/lib/commonjs/components/PaymentMethodMessagingElement.js.map +1 -1
  76. package/lib/commonjs/components/PlatformPayButton.js +1 -1
  77. package/lib/commonjs/components/PlatformPayButton.js.map +1 -1
  78. package/lib/commonjs/components/StripeContainer.js +1 -1
  79. package/lib/commonjs/components/StripeContainer.js.map +1 -1
  80. package/lib/commonjs/connect/Components.js +1 -1
  81. package/lib/commonjs/connect/Components.js.map +1 -1
  82. package/lib/commonjs/connect/ConnectComponentsProvider.js +1 -1
  83. package/lib/commonjs/connect/ConnectComponentsProvider.js.map +1 -1
  84. package/lib/commonjs/connect/EmbeddedComponent.js +1 -1
  85. package/lib/commonjs/connect/EmbeddedComponent.js.map +1 -1
  86. package/lib/commonjs/connect/ModalCloseButton.js +1 -1
  87. package/lib/commonjs/connect/ModalCloseButton.js.map +1 -1
  88. package/lib/commonjs/connect/NavigationBar.js +1 -1
  89. package/lib/commonjs/connect/NavigationBar.js.map +1 -1
  90. package/lib/commonjs/events.js.map +1 -1
  91. package/lib/commonjs/functions.js +1 -1
  92. package/lib/commonjs/functions.js.map +1 -1
  93. package/lib/commonjs/helpers.js +1 -1
  94. package/lib/commonjs/hooks/useCheckout.js +1 -1
  95. package/lib/commonjs/hooks/useCheckout.js.map +1 -1
  96. package/lib/commonjs/specs/NativeAddToWalletButton.js +1 -1
  97. package/lib/commonjs/specs/NativeAddressSheet.js +1 -1
  98. package/lib/commonjs/specs/NativeApplePayButton.js +1 -1
  99. package/lib/commonjs/specs/NativeAuBECSDebitForm.js +1 -1
  100. package/lib/commonjs/specs/NativeCardField.js +1 -1
  101. package/lib/commonjs/specs/NativeCardField.js.map +1 -1
  102. package/lib/commonjs/specs/NativeCardForm.js +1 -1
  103. package/lib/commonjs/specs/NativeCardForm.js.map +1 -1
  104. package/lib/commonjs/specs/NativeConnectAccountOnboardingView.js +1 -1
  105. package/lib/commonjs/specs/NativeCurrencySelectorElement.js +2 -0
  106. package/lib/commonjs/specs/NativeCurrencySelectorElement.js.map +1 -0
  107. package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js +1 -1
  108. package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js.map +1 -1
  109. package/lib/commonjs/specs/NativeGooglePayButton.js +1 -1
  110. package/lib/commonjs/specs/NativeNavigationBar.js +1 -1
  111. package/lib/commonjs/specs/NativePaymentMethodMessagingElement.js +1 -1
  112. package/lib/commonjs/specs/NativeStripeContainer.js +1 -1
  113. package/lib/commonjs/specs/NativeStripeSdkModule.js.map +1 -1
  114. package/lib/commonjs/types/EmbeddedPaymentElement.js +1 -1
  115. package/lib/commonjs/types/EmbeddedPaymentElement.js.map +1 -1
  116. package/lib/module/components/AddToWalletButton.js +1 -1
  117. package/lib/module/components/AddToWalletButton.js.map +1 -1
  118. package/lib/module/components/AddressSheet.js +1 -1
  119. package/lib/module/components/AddressSheet.js.map +1 -1
  120. package/lib/module/components/AuBECSDebitForm.js +1 -1
  121. package/lib/module/components/AuBECSDebitForm.js.map +1 -1
  122. package/lib/module/components/CardField.js +1 -1
  123. package/lib/module/components/CardField.js.map +1 -1
  124. package/lib/module/components/CardForm.js +1 -1
  125. package/lib/module/components/CardForm.js.map +1 -1
  126. package/lib/module/components/CurrencySelectorElement.js +2 -0
  127. package/lib/module/components/CurrencySelectorElement.js.map +1 -0
  128. package/lib/module/components/PaymentMethodMessagingElement.js +1 -1
  129. package/lib/module/components/PaymentMethodMessagingElement.js.map +1 -1
  130. package/lib/module/components/PlatformPayButton.js +1 -1
  131. package/lib/module/components/PlatformPayButton.js.map +1 -1
  132. package/lib/module/components/StripeContainer.js +1 -1
  133. package/lib/module/components/StripeContainer.js.map +1 -1
  134. package/lib/module/connect/Components.js +1 -1
  135. package/lib/module/connect/Components.js.map +1 -1
  136. package/lib/module/connect/ConnectComponentsProvider.js +1 -1
  137. package/lib/module/connect/ConnectComponentsProvider.js.map +1 -1
  138. package/lib/module/connect/EmbeddedComponent.js +1 -1
  139. package/lib/module/connect/EmbeddedComponent.js.map +1 -1
  140. package/lib/module/connect/ModalCloseButton.js +1 -1
  141. package/lib/module/connect/ModalCloseButton.js.map +1 -1
  142. package/lib/module/connect/NavigationBar.js +1 -1
  143. package/lib/module/connect/NavigationBar.js.map +1 -1
  144. package/lib/module/events.js.map +1 -1
  145. package/lib/module/functions.js +1 -1
  146. package/lib/module/functions.js.map +1 -1
  147. package/lib/module/helpers.js +1 -1
  148. package/lib/module/hooks/useCheckout.js +1 -1
  149. package/lib/module/hooks/useCheckout.js.map +1 -1
  150. package/lib/module/specs/NativeAddToWalletButton.js +1 -1
  151. package/lib/module/specs/NativeAddressSheet.js +1 -1
  152. package/lib/module/specs/NativeApplePayButton.js +1 -1
  153. package/lib/module/specs/NativeAuBECSDebitForm.js +1 -1
  154. package/lib/module/specs/NativeCardField.js +1 -1
  155. package/lib/module/specs/NativeCardField.js.map +1 -1
  156. package/lib/module/specs/NativeCardForm.js +1 -1
  157. package/lib/module/specs/NativeCardForm.js.map +1 -1
  158. package/lib/module/specs/NativeConnectAccountOnboardingView.js +1 -1
  159. package/lib/module/specs/NativeCurrencySelectorElement.js +2 -0
  160. package/lib/module/specs/NativeCurrencySelectorElement.js.map +1 -0
  161. package/lib/module/specs/NativeEmbeddedPaymentElement.js +1 -1
  162. package/lib/module/specs/NativeEmbeddedPaymentElement.js.map +1 -1
  163. package/lib/module/specs/NativeGooglePayButton.js +1 -1
  164. package/lib/module/specs/NativeNavigationBar.js +1 -1
  165. package/lib/module/specs/NativePaymentMethodMessagingElement.js +1 -1
  166. package/lib/module/specs/NativeStripeContainer.js +1 -1
  167. package/lib/module/specs/NativeStripeSdkModule.js.map +1 -1
  168. package/lib/module/types/EmbeddedPaymentElement.js +1 -1
  169. package/lib/module/types/EmbeddedPaymentElement.js.map +1 -1
  170. package/lib/typescript/src/components/CurrencySelectorElement.d.ts +62 -0
  171. package/lib/typescript/src/components/CurrencySelectorElement.d.ts.map +1 -0
  172. package/lib/typescript/src/events.d.ts +11 -0
  173. package/lib/typescript/src/events.d.ts.map +1 -1
  174. package/lib/typescript/src/functions.d.ts.map +1 -1
  175. package/lib/typescript/src/hooks/useCheckout.d.ts.map +1 -1
  176. package/lib/typescript/src/specs/NativeCurrencySelectorElement.d.ts +25 -0
  177. package/lib/typescript/src/specs/NativeCurrencySelectorElement.d.ts.map +1 -0
  178. package/lib/typescript/src/specs/NativeEmbeddedPaymentElement.d.ts +5 -1
  179. package/lib/typescript/src/specs/NativeEmbeddedPaymentElement.d.ts.map +1 -1
  180. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts +3 -1
  181. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts.map +1 -1
  182. package/lib/typescript/src/types/Checkout.d.ts +2 -2
  183. package/lib/typescript/src/types/EmbeddedPaymentElement.d.ts +36 -1
  184. package/lib/typescript/src/types/EmbeddedPaymentElement.d.ts.map +1 -1
  185. package/package.json +14 -3
  186. package/src/components/CurrencySelectorElement.tsx +95 -0
  187. package/src/events.ts +11 -0
  188. package/src/functions.ts +30 -1
  189. package/src/hooks/useCheckout.tsx +114 -75
  190. package/src/specs/NativeCurrencySelectorElement.ts +35 -0
  191. package/src/specs/NativeEmbeddedPaymentElement.ts +12 -2
  192. package/src/specs/NativeStripeSdkModule.ts +8 -1
  193. package/src/types/Checkout.ts +2 -2
  194. package/src/types/EmbeddedPaymentElement.tsx +117 -26
  195. package/android/.idea/AndroidProjectSystem.xml +0 -6
  196. package/android/.idea/caches/deviceStreaming.xml +0 -835
  197. package/android/.idea/compiler.xml +0 -6
  198. package/android/.idea/gradle.xml +0 -17
  199. package/android/.idea/migrations.xml +0 -10
  200. package/android/.idea/misc.xml +0 -10
  201. package/android/.idea/runConfigurations.xml +0 -17
  202. package/android/.idea/vcs.xml +0 -6
  203. package/android/local.properties +0 -8
@@ -0,0 +1,193 @@
1
+ //
2
+ // Mappers+Checkout.swift
3
+ // stripe-react-native
4
+ //
5
+ // Created by Nick Porter on 4/29/26.
6
+ //
7
+
8
+ import Foundation
9
+ @_spi(CheckoutSessionsPreview) import StripePaymentSheet
10
+
11
+ extension Mappers {
12
+ class func mapFromCheckoutState(_ state: Checkout.State) -> NSDictionary {
13
+ return [
14
+ "status": state.isLoading ? "loading" : "loaded",
15
+ "session": mapFromCheckoutSession(state.session),
16
+ ]
17
+ }
18
+
19
+ class func mapFromCheckoutSession(_ session: any Checkout.Session) -> NSDictionary {
20
+ let result = NSMutableDictionary()
21
+ result["id"] = session.id
22
+ result["paymentStatus"] = mapFromCheckoutPaymentStatus(session.paymentStatus)
23
+ result["livemode"] = session.livemode
24
+ result["lineItems"] = session.lineItems.map(mapFromCheckoutLineItem)
25
+ result["shippingOptions"] = session.shippingOptions.map(mapFromCheckoutShippingOption)
26
+ result["discounts"] = session.discounts.map(mapFromCheckoutDiscount)
27
+
28
+ if let status = mapFromCheckoutStatus(session.status) {
29
+ result["status"] = status
30
+ }
31
+
32
+ if let currency = session.currency {
33
+ result["currency"] = currency
34
+ }
35
+
36
+ if let totals = session.totals {
37
+ result["totals"] = mapFromCheckoutTotals(totals)
38
+ }
39
+
40
+ if let customerId = session.customerId {
41
+ result["customerId"] = customerId
42
+ }
43
+
44
+ if let customerEmail = session.customerEmail {
45
+ result["customerEmail"] = customerEmail
46
+ }
47
+
48
+ if let billingAddress = session.billingAddress {
49
+ result["billingAddress"] = mapFromCheckoutAddressUpdate(billingAddress)
50
+ }
51
+
52
+ if let shippingAddress = session.shippingAddress {
53
+ result["shippingAddress"] = mapFromCheckoutAddressUpdate(shippingAddress)
54
+ }
55
+
56
+ return result
57
+ }
58
+
59
+ class func mapFromCheckoutAddressUpdate(_ addressUpdate: Checkout.AddressUpdate) -> NSDictionary {
60
+ let result = NSMutableDictionary()
61
+ result["address"] = mapFromCheckoutAddress(addressUpdate.address)
62
+
63
+ if let name = addressUpdate.name {
64
+ result["name"] = name
65
+ }
66
+
67
+ if let phone = addressUpdate.phone {
68
+ result["phone"] = phone
69
+ }
70
+
71
+ return result
72
+ }
73
+
74
+ private class func mapFromCheckoutAddress(_ address: Checkout.Address) -> NSDictionary {
75
+ let result = NSMutableDictionary()
76
+ result["country"] = address.country
77
+
78
+ if let line1 = address.line1 {
79
+ result["line1"] = line1
80
+ }
81
+
82
+ if let line2 = address.line2 {
83
+ result["line2"] = line2
84
+ }
85
+
86
+ if let city = address.city {
87
+ result["city"] = city
88
+ }
89
+
90
+ if let state = address.state {
91
+ result["state"] = state
92
+ }
93
+
94
+ if let postalCode = address.postalCode {
95
+ result["postalCode"] = postalCode
96
+ }
97
+
98
+ return result
99
+ }
100
+
101
+ private class func mapFromCheckoutTotals(_ totals: Checkout.Totals) -> NSDictionary {
102
+ return [
103
+ "subtotal": totals.subtotal,
104
+ "total": totals.total,
105
+ "due": totals.due,
106
+ "discount": totals.discount,
107
+ "shipping": totals.shipping,
108
+ "tax": totals.tax,
109
+ ]
110
+ }
111
+
112
+ private class func mapFromCheckoutLineItem(_ lineItem: Checkout.LineItem) -> NSDictionary {
113
+ return [
114
+ "id": lineItem.id,
115
+ "name": lineItem.name,
116
+ "quantity": lineItem.quantity,
117
+ "unitAmount": lineItem.unitAmount,
118
+ "currency": lineItem.currency,
119
+ ]
120
+ }
121
+
122
+ private class func mapFromCheckoutShippingOption(_ shippingOption: Checkout.ShippingOption) -> NSDictionary {
123
+ return [
124
+ "id": shippingOption.id,
125
+ "displayName": shippingOption.displayName,
126
+ "amount": shippingOption.amount,
127
+ "currency": shippingOption.currency,
128
+ ]
129
+ }
130
+
131
+ private class func mapFromCheckoutDiscount(_ discount: Checkout.Discount) -> NSDictionary {
132
+ let result = NSMutableDictionary()
133
+ result["coupon"] = mapFromCheckoutCoupon(discount.coupon)
134
+ result["amount"] = discount.amount
135
+
136
+ if let promotionCode = discount.promotionCode {
137
+ result["promotionCode"] = promotionCode
138
+ }
139
+
140
+ return result
141
+ }
142
+
143
+ private class func mapFromCheckoutCoupon(_ coupon: Checkout.Coupon) -> NSDictionary {
144
+ let result = NSMutableDictionary()
145
+ result["id"] = coupon.id
146
+
147
+ if let name = coupon.name {
148
+ result["name"] = name
149
+ }
150
+
151
+ if let percentOff = coupon.percentOff {
152
+ result["percentOff"] = percentOff
153
+ }
154
+
155
+ if let amountOff = coupon.amountOff {
156
+ result["amountOff"] = amountOff
157
+ }
158
+
159
+ return result
160
+ }
161
+
162
+ private class func mapFromCheckoutStatus(_ status: Checkout.Status?) -> String? {
163
+ switch status {
164
+ case .open:
165
+ return "open"
166
+ case .complete:
167
+ return "complete"
168
+ case .expired:
169
+ return "expired"
170
+ case .unknown:
171
+ return "unknown"
172
+ case nil:
173
+ return nil
174
+ @unknown default:
175
+ return "unknown"
176
+ }
177
+ }
178
+
179
+ private class func mapFromCheckoutPaymentStatus(_ paymentStatus: Checkout.PaymentStatus) -> String {
180
+ switch paymentStatus {
181
+ case .paid:
182
+ return "paid"
183
+ case .unpaid:
184
+ return "unpaid"
185
+ case .noPaymentRequired:
186
+ return "noPaymentRequired"
187
+ case .unknown:
188
+ return "unknown"
189
+ @unknown default:
190
+ return "unknown"
191
+ }
192
+ }
193
+ }
@@ -48,14 +48,28 @@ using namespace facebook::react;
48
48
  RCTEmbeddedPaymentElementViewHandleCommand(self, commandName, args);
49
49
  }
50
50
 
51
+ #pragma mark - Shared Codegen Commands
52
+
53
+ // These commands are declared on the shared `NativeEmbeddedPaymentElement`
54
+ // component spec because Android targets its mounted Compose view directly.
55
+ // iOS does not handle EPE actions through this view: the view only hosts
56
+ // `StripeSdkImpl.shared.embeddedInstance.view`, while create/update/confirm/
57
+ // clear are routed through `StripeSdkImpl` module methods. The no-op methods
58
+ // keep the generated Fabric command protocol satisfied on iOS.
51
59
  - (void)clearPaymentOption
52
60
  {
53
- // Android only.
54
61
  }
55
62
 
56
63
  - (void)confirm
57
64
  {
58
- // Android only.
65
+ }
66
+
67
+ - (void)update:(NSString *)intentConfigurationJson
68
+ {
69
+ }
70
+
71
+ - (void)updateWithCheckout:(NSString *)sessionKey
72
+ {
59
73
  }
60
74
 
61
75
  #pragma mark - RCTComponentViewProtocol
@@ -0,0 +1,10 @@
1
+ #import <UIKit/UIKit.h>
2
+ #import <React/RCTViewComponentView.h>
3
+
4
+ NS_ASSUME_NONNULL_BEGIN
5
+
6
+ @interface StripeCurrencySelectorElementComponentView : RCTViewComponentView
7
+
8
+ @end
9
+
10
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,75 @@
1
+ #import "StripeCurrencySelectorElementComponentView.h"
2
+
3
+ #import <react/renderer/components/rnstripe/ComponentDescriptors.h>
4
+ #import <react/renderer/components/rnstripe/EventEmitters.h>
5
+ #import <react/renderer/components/rnstripe/Props.h>
6
+ #import <react/renderer/components/rnstripe/RCTComponentViewHelpers.h>
7
+
8
+ #import <React/RCTConversions.h>
9
+ #import <React/RCTFabricComponentsPlugins.h>
10
+
11
+ #import "StripeNewArchConversions.h"
12
+ #import "StripeSwiftInterop.h"
13
+
14
+ using namespace facebook::react;
15
+
16
+ @interface StripeCurrencySelectorElementComponentView () <RCTStripeCurrencySelectorElementViewProtocol>
17
+ @end
18
+
19
+ @implementation StripeCurrencySelectorElementComponentView {
20
+ StripeCurrencySelectorElementContainerView *_view;
21
+ }
22
+
23
+ // Needed because of this: https://github.com/facebook/react-native/pull/37274
24
+ + (void)load
25
+ {
26
+ [super load];
27
+ }
28
+
29
+ - (instancetype)initWithFrame:(CGRect)frame
30
+ {
31
+ if (self = [super initWithFrame:frame]) {
32
+ static const auto defaultProps = std::make_shared<const StripeCurrencySelectorElementProps>();
33
+ _props = defaultProps;
34
+ [self prepareView];
35
+ }
36
+
37
+ return self;
38
+ }
39
+
40
+ - (void)prepareView
41
+ {
42
+ _view = [[StripeCurrencySelectorElementContainerView alloc] initWithFrame:self.frame];
43
+ self.contentView = _view;
44
+ }
45
+
46
+ - (void)updateProps:(const facebook::react::Props::Shared &)props
47
+ oldProps:(const facebook::react::Props::Shared &)oldProps
48
+ {
49
+ const auto &newViewProps = *std::static_pointer_cast<const StripeCurrencySelectorElementProps>(props);
50
+
51
+ _view.sessionKey = RCTNSStringFromStringNilIfEmpty(newViewProps.sessionKey);
52
+ _view.disabled = newViewProps.disabled;
53
+
54
+ [super updateProps:props oldProps:oldProps];
55
+ }
56
+
57
+ #pragma mark - RCTComponentViewProtocol
58
+
59
+ + (ComponentDescriptorProvider)componentDescriptorProvider
60
+ {
61
+ return concreteComponentDescriptorProvider<StripeCurrencySelectorElementComponentDescriptor>();
62
+ }
63
+
64
+ - (void)prepareForRecycle
65
+ {
66
+ [super prepareForRecycle];
67
+ [self prepareView];
68
+ }
69
+
70
+ @end
71
+
72
+ Class<RCTComponentViewProtocol> StripeCurrencySelectorElementCls(void)
73
+ {
74
+ return StripeCurrencySelectorElementComponentView.class;
75
+ }
package/ios/StripeSdk.mm CHANGED
@@ -263,6 +263,111 @@ RCT_EXPORT_METHOD(handleURLCallback:(nonnull NSString *)url
263
263
  [StripeSdkImpl.shared handleURLCallback:url resolver:resolve rejecter:reject];
264
264
  }
265
265
 
266
+ RCT_EXPORT_METHOD(initCheckoutSession:(nonnull NSString *)clientSecret
267
+ configuration:(nonnull NSDictionary *)configuration
268
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
269
+ reject:(nonnull RCTPromiseRejectBlock)reject)
270
+ {
271
+ [StripeSdkImpl.shared initCheckoutSession:clientSecret
272
+ configuration:configuration
273
+ resolver:resolve
274
+ rejecter:reject];
275
+ }
276
+
277
+ RCT_EXPORT_METHOD(checkoutUpdateShippingAddress:(nonnull NSString *)sessionKey
278
+ address:(nonnull NSDictionary *)address
279
+ name:(NSString *_Nullable)name
280
+ phone:(NSString *_Nullable)phone
281
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
282
+ reject:(nonnull RCTPromiseRejectBlock)reject)
283
+ {
284
+ [StripeSdkImpl.shared checkoutUpdateShippingAddress:sessionKey
285
+ address:address
286
+ name:name
287
+ phone:phone
288
+ resolver:resolve
289
+ rejecter:reject];
290
+ }
291
+
292
+ RCT_EXPORT_METHOD(checkoutUpdateBillingAddress:(nonnull NSString *)sessionKey
293
+ address:(nonnull NSDictionary *)address
294
+ name:(NSString *_Nullable)name
295
+ phone:(NSString *_Nullable)phone
296
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
297
+ reject:(nonnull RCTPromiseRejectBlock)reject)
298
+ {
299
+ [StripeSdkImpl.shared checkoutUpdateBillingAddress:sessionKey
300
+ address:address
301
+ name:name
302
+ phone:phone
303
+ resolver:resolve
304
+ rejecter:reject];
305
+ }
306
+
307
+ RCT_EXPORT_METHOD(checkoutApplyPromotionCode:(nonnull NSString *)sessionKey
308
+ code:(nonnull NSString *)code
309
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
310
+ reject:(nonnull RCTPromiseRejectBlock)reject)
311
+ {
312
+ [StripeSdkImpl.shared checkoutApplyPromotionCode:sessionKey
313
+ code:code
314
+ resolver:resolve
315
+ rejecter:reject];
316
+ }
317
+
318
+ RCT_EXPORT_METHOD(checkoutRemovePromotionCode:(nonnull NSString *)sessionKey
319
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
320
+ reject:(nonnull RCTPromiseRejectBlock)reject)
321
+ {
322
+ [StripeSdkImpl.shared checkoutRemovePromotionCode:sessionKey
323
+ resolver:resolve
324
+ rejecter:reject];
325
+ }
326
+
327
+ RCT_EXPORT_METHOD(checkoutUpdateLineItemQuantity:(nonnull NSString *)sessionKey
328
+ lineItemId:(nonnull NSString *)lineItemId
329
+ quantity:(double)quantity
330
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
331
+ reject:(nonnull RCTPromiseRejectBlock)reject)
332
+ {
333
+ [StripeSdkImpl.shared checkoutUpdateLineItemQuantity:sessionKey
334
+ lineItemId:lineItemId
335
+ quantity:quantity
336
+ resolver:resolve
337
+ rejecter:reject];
338
+ }
339
+
340
+ RCT_EXPORT_METHOD(checkoutSelectShippingOption:(nonnull NSString *)sessionKey
341
+ id:(nonnull NSString *)identifier
342
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
343
+ reject:(nonnull RCTPromiseRejectBlock)reject)
344
+ {
345
+ [StripeSdkImpl.shared checkoutSelectShippingOption:sessionKey
346
+ id:identifier
347
+ resolver:resolve
348
+ rejecter:reject];
349
+ }
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)
356
+ {
357
+ [StripeSdkImpl.shared checkoutUpdateTaxId:sessionKey
358
+ type:type
359
+ value:value
360
+ resolver:resolve
361
+ rejecter:reject];
362
+ }
363
+
364
+ RCT_EXPORT_METHOD(checkoutRefresh:(nonnull NSString *)sessionKey
365
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
366
+ reject:(nonnull RCTPromiseRejectBlock)reject)
367
+ {
368
+ [StripeSdkImpl.shared checkoutRefresh:sessionKey resolver:resolve rejecter:reject];
369
+ }
370
+
266
371
  RCT_EXPORT_METHOD(initCustomerSheet:(nonnull NSDictionary *)params
267
372
  customerAdapterOverrides:(nonnull NSDictionary *)customerAdapterOverrides
268
373
  resolve:(nonnull RCTPromiseResolveBlock)resolve
@@ -448,6 +553,17 @@ RCT_EXPORT_METHOD(createEmbeddedPaymentElement:(nonnull NSDictionary *)intentCon
448
553
  reject:reject];
449
554
  }
450
555
 
556
+ RCT_EXPORT_METHOD(createEmbeddedPaymentElementWithCheckout:(nonnull NSString *)sessionKey
557
+ configuration:(nonnull NSDictionary *)configuration
558
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
559
+ reject:(nonnull RCTPromiseRejectBlock)reject)
560
+ {
561
+ [StripeSdkImpl.shared createEmbeddedPaymentElementWithCheckout:sessionKey
562
+ configuration:configuration
563
+ resolve:resolve
564
+ reject:reject];
565
+ }
566
+
451
567
  RCT_EXPORT_METHOD(confirmEmbeddedPaymentElement:(NSInteger)viewTag
452
568
  resolve:(nonnull RCTPromiseResolveBlock)resolve
453
569
  reject:(nonnull RCTPromiseRejectBlock)reject)
@@ -462,6 +578,13 @@ RCT_EXPORT_METHOD(updateEmbeddedPaymentElement:(NSDictionary *)intentConfig
462
578
  [StripeSdkImpl.shared updateEmbeddedPaymentElement:intentConfig resolve:resolve reject:reject];
463
579
  }
464
580
 
581
+ RCT_EXPORT_METHOD(updateEmbeddedPaymentElementWithCheckout:(nonnull NSString *)sessionKey
582
+ resolve:(nonnull RCTPromiseResolveBlock)resolve
583
+ reject:(nonnull RCTPromiseRejectBlock)reject)
584
+ {
585
+ [StripeSdkImpl.shared updateEmbeddedPaymentElementWithCheckout:sessionKey resolve:resolve reject:reject];
586
+ }
587
+
465
588
  RCT_EXPORT_METHOD(clearEmbeddedPaymentOption:(NSInteger)viewTag
466
589
  resolve:(nonnull RCTPromiseResolveBlock)resolve
467
590
  reject:(nonnull RCTPromiseRejectBlock)reject)