@primer-io/react-native 0.16.2 → 2.1.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 (233) hide show
  1. package/README.md +114 -24
  2. package/android/build.gradle +10 -2
  3. package/android/gradle.properties +3 -3
  4. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +124 -150
  5. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +212 -128
  6. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +244 -0
  7. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +275 -0
  8. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +2 -2
  9. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerCheckoutDataRN.kt +12 -0
  10. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerClientSessionRN.kt +54 -0
  11. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +6 -9
  12. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEvents.kt +13 -0
  13. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentInstrumentTokenRN.kt +4 -4
  14. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentMethodDataRN.kt +8 -0
  15. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +43 -125
  16. package/android/src/main/java/com/primerioreactnative/extensions/Payment.kt +6 -0
  17. package/android/src/main/java/com/primerioreactnative/extensions/PrimerAddress.kt +15 -0
  18. package/android/src/main/java/com/primerioreactnative/extensions/PrimerCheckoutData.kt +7 -0
  19. package/android/src/main/java/com/primerioreactnative/extensions/PrimerClientSession.kt +15 -0
  20. package/android/src/main/java/com/primerioreactnative/extensions/PrimerCustomer.kt +13 -0
  21. package/android/src/main/java/com/primerioreactnative/extensions/PrimerLineItem.kt +8 -0
  22. package/android/src/main/java/com/primerioreactnative/extensions/PrimerOrder.kt +6 -0
  23. package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodData.kt +7 -0
  24. package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +11 -7
  25. package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +1 -3
  26. package/android/src/main/java/com/primerioreactnative/utils/JsonConverter.kt +45 -0
  27. package/android/src/main/java/com/primerioreactnative/utils/PrimerHeadlessUniversalCheckoutImplementedRNCallbacks.kt +31 -0
  28. package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +16 -6
  29. package/ios/Core/ReactNative-Bridging-Header.h +10 -0
  30. package/ios/DataModels/ImplementedRNCallbacks.swift +56 -0
  31. package/ios/DataModels/PrimerErrorRN.swift +0 -17
  32. package/ios/DataModels/PrimerSettingsRN.swift +78 -156
  33. package/ios/DataModels/PrimerThemeRN.swift +1 -10
  34. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +33 -1
  35. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +306 -54
  36. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +5 -1
  37. package/ios/RNTPrimer.m +28 -12
  38. package/ios/RNTPrimer.swift +273 -222
  39. package/ios/ReactNative-Bridging-Header.h +4 -0
  40. package/ios/ReactNative.xcodeproj/project.pbxproj +14 -14
  41. package/lib/commonjs/Primer.js +206 -149
  42. package/lib/commonjs/Primer.js.map +1 -1
  43. package/lib/commonjs/RNPrimer.js +113 -41
  44. package/lib/commonjs/RNPrimer.js.map +1 -1
  45. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +240 -71
  46. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -1
  47. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js +197 -0
  48. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
  49. package/lib/commonjs/headless_checkout/types.js +4 -0
  50. package/lib/commonjs/index.js +118 -24
  51. package/lib/commonjs/index.js.map +1 -1
  52. package/lib/commonjs/models/PrimerCheckoutData.js +9 -0
  53. package/lib/commonjs/models/PrimerCheckoutData.js.map +1 -0
  54. package/lib/commonjs/models/PrimerCheckoutPaymentMethodData.js +2 -0
  55. package/lib/commonjs/models/{action-request.js.map → PrimerCheckoutPaymentMethodData.js.map} +0 -0
  56. package/lib/commonjs/models/PrimerClientSession.js +2 -0
  57. package/lib/commonjs/models/{client-session-actions-request.js.map → PrimerClientSession.js.map} +0 -0
  58. package/lib/commonjs/models/{utils/countryCode.js → PrimerCountryCode.js} +1 -1
  59. package/lib/commonjs/models/PrimerCountryCode.js.map +1 -0
  60. package/lib/commonjs/models/{utils/currencyCode.js → PrimerCurrencyCode.js} +1 -1
  61. package/lib/commonjs/models/PrimerCurrencyCode.js.map +1 -0
  62. package/lib/commonjs/models/PrimerError.js +28 -0
  63. package/lib/commonjs/models/PrimerError.js.map +1 -0
  64. package/lib/commonjs/models/{primer-settings.js → PrimerInterfaces.js} +1 -1
  65. package/lib/commonjs/models/{primer-callbacks.js.map → PrimerInterfaces.js.map} +0 -0
  66. package/lib/commonjs/models/PrimerPaymentMethodTokenData.js +14 -0
  67. package/lib/commonjs/models/PrimerPaymentMethodTokenData.js.map +1 -0
  68. package/lib/commonjs/models/PrimerSessionIntent.js +14 -0
  69. package/lib/commonjs/models/PrimerSessionIntent.js.map +1 -0
  70. package/lib/commonjs/models/{primer.js → PrimerSettings.js} +1 -1
  71. package/lib/commonjs/models/{primer-config.js.map → PrimerSettings.js.map} +0 -0
  72. package/lib/commonjs/models/PrimerTheme.js +2 -0
  73. package/lib/commonjs/models/{primer-request.js.map → PrimerTheme.js.map} +0 -0
  74. package/lib/commonjs/utils/index.js.map +1 -1
  75. package/lib/module/Primer.js +205 -136
  76. package/lib/module/Primer.js.map +1 -1
  77. package/lib/module/RNPrimer.js +113 -41
  78. package/lib/module/RNPrimer.js.map +1 -1
  79. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +243 -70
  80. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -1
  81. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js +188 -0
  82. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
  83. package/lib/module/headless_checkout/types.js +1 -1
  84. package/lib/module/index.js +10 -5
  85. package/lib/module/index.js.map +1 -1
  86. package/lib/module/models/PrimerCheckoutData.js +7 -0
  87. package/lib/module/models/PrimerCheckoutData.js.map +1 -0
  88. package/lib/module/models/PrimerCheckoutPaymentMethodData.js +2 -0
  89. package/lib/{commonjs/models/primer-settings.js.map → module/models/PrimerCheckoutPaymentMethodData.js.map} +0 -0
  90. package/lib/module/models/PrimerClientSession.js +2 -0
  91. package/lib/{commonjs/models/primer-theme.js.map → module/models/PrimerClientSession.js.map} +0 -0
  92. package/lib/module/models/{utils/countryCode.js → PrimerCountryCode.js} +1 -1
  93. package/lib/module/models/PrimerCountryCode.js.map +1 -0
  94. package/lib/module/models/{utils/currencyCode.js → PrimerCurrencyCode.js} +1 -1
  95. package/lib/module/models/PrimerCurrencyCode.js.map +1 -0
  96. package/lib/module/models/PrimerError.js +19 -0
  97. package/lib/module/models/PrimerError.js.map +1 -0
  98. package/lib/module/models/PrimerInterfaces.js +2 -0
  99. package/lib/{commonjs/models/primer.js.map → module/models/PrimerInterfaces.js.map} +0 -0
  100. package/lib/module/models/PrimerPaymentMethodTokenData.js +7 -0
  101. package/lib/module/models/PrimerPaymentMethodTokenData.js.map +1 -0
  102. package/lib/module/models/PrimerSessionIntent.js +7 -0
  103. package/lib/module/models/PrimerSessionIntent.js.map +1 -0
  104. package/lib/module/models/PrimerSettings.js +2 -0
  105. package/lib/module/models/{action-request.js.map → PrimerSettings.js.map} +0 -0
  106. package/lib/module/models/PrimerTheme.js +2 -0
  107. package/lib/module/models/{client-session-actions-request.js.map → PrimerTheme.js.map} +0 -0
  108. package/lib/module/utils/index.js.map +1 -1
  109. package/lib/typescript/MerchantExample/App.d.ts +11 -0
  110. package/lib/typescript/src/Primer.d.ts +2 -0
  111. package/lib/typescript/{PrimerInput.d.ts → src/PrimerInput.d.ts} +0 -0
  112. package/lib/typescript/src/RNPrimer.d.ts +32 -0
  113. package/lib/typescript/{RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts → src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts} +0 -0
  114. package/lib/typescript/src/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +11 -0
  115. package/lib/typescript/src/headless_checkout/RNPrimerHeadlessUniversalCheckout.d.ts +22 -0
  116. package/lib/typescript/src/headless_checkout/types.d.ts +22 -0
  117. package/lib/typescript/src/index.d.ts +10 -0
  118. package/lib/typescript/src/models/PrimerCheckoutData.d.ts +15 -0
  119. package/lib/typescript/src/models/PrimerCheckoutPaymentMethodData.d.ts +5 -0
  120. package/lib/typescript/src/models/PrimerClientSession.d.ts +45 -0
  121. package/lib/typescript/{models/utils/countryCode.d.ts → src/models/PrimerCountryCode.d.ts} +1 -1
  122. package/lib/typescript/{models/utils/currencyCode.d.ts → src/models/PrimerCurrencyCode.d.ts} +1 -1
  123. package/lib/typescript/src/models/PrimerError.d.ts +11 -0
  124. package/lib/typescript/src/models/PrimerInterfaces.d.ts +27 -0
  125. package/lib/typescript/src/models/PrimerPaymentMethodTokenData.d.ts +116 -0
  126. package/lib/typescript/src/models/PrimerSessionIntent.d.ts +4 -0
  127. package/lib/typescript/src/models/PrimerSettings.d.ts +77 -0
  128. package/lib/typescript/{models/primer-theme.d.ts → src/models/PrimerTheme.d.ts} +1 -1
  129. package/lib/typescript/{utils → src/utils}/index.d.ts +1 -1
  130. package/package.json +1 -1
  131. package/primer-io-react-native.podspec +1 -1
  132. package/src/Primer.ts +231 -170
  133. package/src/RNPrimer.ts +148 -51
  134. package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +281 -94
  135. package/src/headless_checkout/RNPrimerHeadlessUniversalCheckout.ts +252 -0
  136. package/src/headless_checkout/types.ts +26 -12
  137. package/src/index.tsx +36 -8
  138. package/src/models/PrimerCheckoutData.ts +18 -0
  139. package/src/models/PrimerCheckoutPaymentMethodData.ts +5 -0
  140. package/src/models/PrimerClientSession.ts +53 -0
  141. package/src/models/{utils/countryCode.ts → PrimerCountryCode.ts} +1 -1
  142. package/src/models/{utils/currencyCode.ts → PrimerCurrencyCode.ts} +1 -1
  143. package/src/models/PrimerError.ts +20 -0
  144. package/src/models/PrimerInterfaces.ts +36 -0
  145. package/src/models/PrimerPaymentMethodTokenData.ts +130 -0
  146. package/src/models/PrimerSessionIntent.ts +4 -0
  147. package/src/models/PrimerSettings.ts +108 -0
  148. package/src/models/{primer-theme.ts → PrimerTheme.ts} +1 -1
  149. package/src/utils/index.ts +1 -1
  150. package/android/src/main/java/com/primerioreactnative/PrimerHeadlessUniversalCheckout.kt +0 -198
  151. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEventsRN.kt +0 -11
  152. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerIntentRN.kt +0 -80
  153. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerOnClientSessionActionsRequestRN.kt +0 -65
  154. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerRequestRN.kt +0 -9
  155. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerThemeRN.kt +0 -51
  156. package/android/src/main/java/com/primerioreactnative/huc/extensions/Map.kt +0 -10
  157. package/android/src/main/java/com/primerioreactnative/utils/Keys.kt +0 -7
  158. package/android/src/main/java/com/primerioreactnative/utils/PrimerEventQueueRN.kt +0 -30
  159. package/ios/DataModels/PrimerIntentRN.swift +0 -10
  160. package/ios/DataModels/PrimerRequestRN.swift +0 -14
  161. package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +0 -110
  162. package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +0 -1
  163. package/lib/commonjs/models/action-request.js +0 -2
  164. package/lib/commonjs/models/client-session-actions-request.js +0 -2
  165. package/lib/commonjs/models/payment-instrument-token.js +0 -30
  166. package/lib/commonjs/models/payment-instrument-token.js.map +0 -1
  167. package/lib/commonjs/models/primer-callbacks.js +0 -6
  168. package/lib/commonjs/models/primer-config.js +0 -6
  169. package/lib/commonjs/models/primer-error.js +0 -4
  170. package/lib/commonjs/models/primer-error.js.map +0 -1
  171. package/lib/commonjs/models/primer-intent.js +0 -4
  172. package/lib/commonjs/models/primer-intent.js.map +0 -1
  173. package/lib/commonjs/models/primer-request.js +0 -2
  174. package/lib/commonjs/models/primer-theme.js +0 -2
  175. package/lib/commonjs/models/utils/countryCode.js.map +0 -1
  176. package/lib/commonjs/models/utils/currencyCode.js.map +0 -1
  177. package/lib/commonjs/models/utils/redirectScheme.js +0 -4
  178. package/lib/commonjs/models/utils/redirectScheme.js.map +0 -1
  179. package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +0 -98
  180. package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +0 -1
  181. package/lib/module/models/action-request.js +0 -2
  182. package/lib/module/models/client-session-actions-request.js +0 -2
  183. package/lib/module/models/payment-instrument-token.js +0 -28
  184. package/lib/module/models/payment-instrument-token.js.map +0 -1
  185. package/lib/module/models/primer-callbacks.js +0 -2
  186. package/lib/module/models/primer-callbacks.js.map +0 -1
  187. package/lib/module/models/primer-config.js +0 -2
  188. package/lib/module/models/primer-config.js.map +0 -1
  189. package/lib/module/models/primer-error.js +0 -2
  190. package/lib/module/models/primer-error.js.map +0 -1
  191. package/lib/module/models/primer-intent.js +0 -2
  192. package/lib/module/models/primer-intent.js.map +0 -1
  193. package/lib/module/models/primer-request.js +0 -2
  194. package/lib/module/models/primer-request.js.map +0 -1
  195. package/lib/module/models/primer-settings.js +0 -2
  196. package/lib/module/models/primer-settings.js.map +0 -1
  197. package/lib/module/models/primer-theme.js +0 -2
  198. package/lib/module/models/primer-theme.js.map +0 -1
  199. package/lib/module/models/primer.js +0 -2
  200. package/lib/module/models/primer.js.map +0 -1
  201. package/lib/module/models/utils/countryCode.js.map +0 -1
  202. package/lib/module/models/utils/currencyCode.js.map +0 -1
  203. package/lib/module/models/utils/redirectScheme.js +0 -2
  204. package/lib/module/models/utils/redirectScheme.js.map +0 -1
  205. package/lib/typescript/Primer.d.ts +0 -15
  206. package/lib/typescript/RNPrimer.d.ts +0 -24
  207. package/lib/typescript/headless_checkout/NativePrimerHeadlessUniversalCheckout.d.ts +0 -13
  208. package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +0 -13
  209. package/lib/typescript/headless_checkout/types.d.ts +0 -16
  210. package/lib/typescript/index.d.ts +0 -5
  211. package/lib/typescript/models/action-request.d.ts +0 -10
  212. package/lib/typescript/models/client-session-actions-request.d.ts +0 -15
  213. package/lib/typescript/models/payment-instrument-token.d.ts +0 -76
  214. package/lib/typescript/models/primer-callbacks.d.ts +0 -10
  215. package/lib/typescript/models/primer-config.d.ts +0 -44
  216. package/lib/typescript/models/primer-error.d.ts +0 -8
  217. package/lib/typescript/models/primer-intent.d.ts +0 -13
  218. package/lib/typescript/models/primer-request.d.ts +0 -7
  219. package/lib/typescript/models/primer-settings.d.ts +0 -65
  220. package/lib/typescript/models/primer.d.ts +0 -33
  221. package/lib/typescript/models/utils/redirectScheme.d.ts +0 -3
  222. package/src/headless_checkout/NativePrimerHeadlessUniversalCheckout.ts +0 -132
  223. package/src/models/action-request.ts +0 -12
  224. package/src/models/client-session-actions-request.ts +0 -21
  225. package/src/models/payment-instrument-token.ts +0 -109
  226. package/src/models/primer-callbacks.ts +0 -14
  227. package/src/models/primer-config.ts +0 -55
  228. package/src/models/primer-error.ts +0 -19
  229. package/src/models/primer-intent.ts +0 -49
  230. package/src/models/primer-request.ts +0 -7
  231. package/src/models/primer-settings.ts +0 -73
  232. package/src/models/primer.ts +0 -41
  233. package/src/models/utils/redirectScheme.ts +0 -5
@@ -1,18 +1,32 @@
1
+ import type { PrimerCheckoutData } from '../models/PrimerCheckoutData';
2
+ import type { PrimerCheckoutPaymentMethodData } from '../models/PrimerCheckoutPaymentMethodData';
3
+ import type {
4
+ PrimerTokenizationHandler,
5
+ PrimerResumeHandler,
6
+ PrimerPaymentCreationHandler,
7
+ PrimerErrorHandler
8
+ } from '../models/PrimerInterfaces';
9
+ import type { PrimerClientSession } from '../models/PrimerClientSession';
10
+ import type { PrimerPaymentMethodTokenData } from '../models/PrimerPaymentMethodTokenData';
11
+ import type { PrimerError } from '../models/PrimerError';
12
+
1
13
  export interface PrimerHeadlessUniversalCheckoutStartResponse {
2
14
  paymentMethodTypes: string[];
3
15
  }
4
16
 
5
- export interface PrimerError {
6
- errorId: string;
7
- description: string;
8
- recoverySuggestion?: string;
9
- }
10
-
11
17
  export interface PrimerHeadlessUniversalCheckoutCallbacks {
12
- onPreparationStarted?: () => void;
13
- onPaymentMethodPresented?: () => void;
14
- onTokenizeStart?: () => void;
15
- onTokenizeSuccess?: (paymentMethod: any) => void;
16
- onResumeSuccess?: (resumeToken: string) => void;
17
- onFailure?: (error: PrimerError) => void;
18
+ // Common
19
+ onBeforeClientSessionUpdate?: () => void;
20
+ onClientSessionUpdate?: (clientSession: PrimerClientSession) => void;
21
+ onBeforePaymentCreate?: (checkoutPaymentMethodData: PrimerCheckoutPaymentMethodData, handler: PrimerPaymentCreationHandler) => void;
22
+ onCheckoutComplete?: (checkoutData: PrimerCheckoutData) => void;
23
+ onTokenizeSuccess?: (paymentMethodTokenData: PrimerPaymentMethodTokenData, handler: PrimerTokenizationHandler) => void;
24
+ onResumeSuccess?: (resumeToken: string, handler: PrimerResumeHandler) => void;
25
+ onError?: (error: PrimerError, checkoutData: PrimerCheckoutData | null, handler: PrimerErrorHandler | undefined) => void;
26
+
27
+ // Only on HUC
28
+ onPrepareStart?: (paymentMethodType: string) => void;
29
+ onTokenizeStart?: (paymentMethodType: string) => void;
30
+ onPaymentMethodShow?: (paymentMethodType: string) => void;
31
+ onAvailablePaymentMethodTypesLoad?: (paymentMethodTypes: string[]) => void;
18
32
  }
package/src/index.tsx CHANGED
@@ -1,8 +1,36 @@
1
- import PrimerHeadlessUniversalCheckout from './headless_checkout/PrimerHeadlessUniversalCheckout';
2
- import type { IPrimer } from './models/primer';
3
- import { PrimerNativeMapping } from './Primer';
4
- export * from './PrimerInput';
5
-
6
- const Primer: IPrimer = PrimerNativeMapping;
7
-
8
- export { Primer, PrimerHeadlessUniversalCheckout as HeadlessUniversalCheckout };
1
+ export {
2
+ Primer
3
+ } from './Primer';
4
+ export {
5
+ PrimerSettings
6
+ } from './models/PrimerSettings';
7
+ export {
8
+ PrimerSessionIntent
9
+ } from './models/PrimerSessionIntent';
10
+ export {
11
+ PrimerPaymentCreationHandler,
12
+ PrimerTokenizationHandler,
13
+ PrimerResumeHandler,
14
+ PrimerErrorHandler,
15
+ } from './models/PrimerInterfaces';
16
+ export { PrimerPaymentMethodTokenData } from './models/PrimerPaymentMethodTokenData';
17
+ export {
18
+ PrimerClientSession,
19
+ PrimerOrder,
20
+ PrimerLineItem,
21
+ PrimerCustomer,
22
+ PrimerAddress,
23
+ } from './models/PrimerClientSession';
24
+ export {
25
+ PrimerCheckoutData,
26
+ PrimerCheckoutDataPayment,
27
+ } from './models/PrimerCheckoutData';
28
+ export {
29
+ PrimerCheckoutPaymentMethodData
30
+ } from './models/PrimerCheckoutPaymentMethodData';
31
+ export {
32
+ PrimerError
33
+ } from './models/PrimerError';
34
+ export {
35
+ PrimerHeadlessUniversalCheckout
36
+ } from './headless_checkout/PrimerHeadlessUniversalCheckout';
@@ -0,0 +1,18 @@
1
+ export type PrimerCheckoutData = IPrimerCheckoutData;
2
+
3
+ interface IPrimerCheckoutData {
4
+ payment: IPrimerCheckoutDataPayment;
5
+ }
6
+
7
+ export type PrimerCheckoutDataPayment = IPrimerCheckoutDataPayment;
8
+
9
+ interface IPrimerCheckoutDataPayment {
10
+ id?: string;
11
+ orderId?: string;
12
+ paymentFailureReason?: PrimerPaymentErrorCode;
13
+ }
14
+
15
+ enum PrimerPaymentErrorCode {
16
+ FAILED = 'payment-failed',
17
+ CANCELLED_BY_CUSTOMER = 'cancelled-by-customer',
18
+ }
@@ -0,0 +1,5 @@
1
+ export type PrimerCheckoutPaymentMethodData = IPrimerCheckoutPaymentMethodData;
2
+
3
+ interface IPrimerCheckoutPaymentMethodData {
4
+ paymentMethodType: string;
5
+ }
@@ -0,0 +1,53 @@
1
+ export type PrimerClientSession = IPrimerClientSession;
2
+
3
+ interface IPrimerClientSession {
4
+ customerId?: string;
5
+ orderId?: string;
6
+ currencyCode?: string;
7
+ totalAmount?: number;
8
+ lineItems?: IPrimerLineItem[];
9
+ orderDetails?: IPrimerOrder;
10
+ customer?: IPrimerCustomer;
11
+ }
12
+
13
+ export type PrimerLineItem = IPrimerLineItem;
14
+
15
+ interface IPrimerLineItem {
16
+ itemId?: string;
17
+ itemDescription?: string;
18
+ amount?: number;
19
+ discountAmount?: number;
20
+ quantity?: number;
21
+ taxCode?: string;
22
+ taxAmount?: number;
23
+ }
24
+
25
+ export type PrimerOrder = IPrimerOrder;
26
+
27
+ interface IPrimerOrder {
28
+ countryCode?: string;
29
+ }
30
+
31
+ export type PrimerCustomer = IPrimerCustomer;
32
+
33
+ interface IPrimerCustomer {
34
+ emailAddress?: string;
35
+ mobileNumber?: string;
36
+ firstName?: string;
37
+ lastName?: string;
38
+ billingAddress?: IPrimerAddress;
39
+ shippingAddress?: IPrimerAddress;
40
+ }
41
+
42
+ export type PrimerAddress = IPrimerAddress;
43
+
44
+ interface IPrimerAddress {
45
+ firstName?: string;
46
+ lastName?: string;
47
+ addressLine1?: string;
48
+ addressLine2?: string;
49
+ postalCode?: string;
50
+ city?: string;
51
+ state?: string;
52
+ countryCode?: string;
53
+ }
@@ -246,4 +246,4 @@ var countries = [
246
246
  'ZW',
247
247
  ] as const;
248
248
 
249
- export type CountryCode = typeof countries[number];
249
+ export type PrimerCountryCode = typeof countries[number];
@@ -179,4 +179,4 @@ const currencies = [
179
179
  'ZMW',
180
180
  ] as const;
181
181
 
182
- export type CurrencyCode = typeof currencies[number];
182
+ export type PrimerCurrencyCode = typeof currencies[number];
@@ -0,0 +1,20 @@
1
+ export interface IPrimerError {
2
+ errorId: string;
3
+ description?: string;
4
+ recoverySuggestion?: string;
5
+ }
6
+
7
+
8
+ export class PrimerError extends Error {
9
+
10
+ errorId: string;
11
+ description: string;
12
+ recoverySuggestion?: string;
13
+
14
+ constructor(errorId: string, description: string, recoverySuggestion: string | undefined) {
15
+ super(description);
16
+ this.errorId = errorId;
17
+ this.description = description;
18
+ this.recoverySuggestion = recoverySuggestion;
19
+ }
20
+ }
@@ -0,0 +1,36 @@
1
+ import type { PrimerSessionIntent } from "./PrimerSessionIntent";
2
+ import type { PrimerSettings } from "./PrimerSettings";
3
+
4
+ export interface IPrimer {
5
+ configure(settings: PrimerSettings): Promise<void>;
6
+ showUniversalCheckout(clientToken: string): Promise<void>;
7
+ showVaultManager(clientToken: string): Promise<void>;
8
+ showPaymentMethod(
9
+ paymentMethodType: string,
10
+ intent: PrimerSessionIntent,
11
+ clientToken: string
12
+ ): Promise<void>
13
+ dismiss(): void;
14
+ dispose(): void;
15
+ }
16
+
17
+ export interface PrimerPaymentCreationHandler {
18
+ abortPaymentCreation(errorMessage: string | null): void;
19
+ continuePaymentCreation(): void;
20
+ }
21
+
22
+ export interface PrimerTokenizationHandler {
23
+ handleSuccess(): void;
24
+ handleFailure(errorMessage: string | null): void;
25
+ continueWithNewClientToken(newClientToken: string): void;
26
+ }
27
+
28
+ export interface PrimerResumeHandler {
29
+ handleSuccess(): void;
30
+ handleFailure(errorMessage: string | null): void;
31
+ continueWithNewClientToken(newClientToken: string): void;
32
+ }
33
+
34
+ export interface PrimerErrorHandler {
35
+ showErrorMessage(errorMessage: string | null): void;
36
+ }
@@ -0,0 +1,130 @@
1
+ export type PrimerPaymentMethodTokenData = IPrimerPaymentMethodTokenData;
2
+
3
+ export interface IPrimerPaymentMethodTokenData {
4
+ analyticsId?: string;
5
+ id?: string;
6
+ isVaulted?: boolean;
7
+ paymentInstrumentData: IPrimerPaymentInstrumentData;
8
+ paymentInstrumentType: string;
9
+ token: string;
10
+ tokenType?: PrimerTokenType;
11
+ threeDSecureAuthentication?: IPrimerThreeDSAuthenticationData;
12
+ vaultData?: IPrimerVaultData;
13
+ }
14
+
15
+ export enum PrimerTokenType {
16
+ SINGLE_USE = 'SINGLE_USE',
17
+ MULTI_USE = 'MULTI_USE',
18
+ }
19
+
20
+ export interface IPrimerThreeDSAuthenticationData {
21
+ challengeIssued?: boolean;
22
+ protocolVersion?: string;
23
+ reasonCode?: string;
24
+ reasonText?: string;
25
+ responseCode?: string;
26
+ }
27
+
28
+ export interface IPrimerVaultData {
29
+ customerId?: string;
30
+ }
31
+
32
+ export interface IPrimerPaymentInstrumentData {
33
+ paypalBillingAgreementId?: string;
34
+ first6Digits?: string;
35
+ last4Digits?: string;
36
+ expirationMonth?: string;
37
+ expirationYear?: string;
38
+ cardholderName?: string;
39
+ network?: string;
40
+ isNetworkTokenized?: boolean;
41
+ klarnaCustomerToken?: string;
42
+
43
+ sessionData?: IKlarnaSessionData;
44
+ externalPayerInfo?: IExternalPayerInfo;
45
+ shippingAddress?: IShippingAddress;
46
+ binData?: IBinData;
47
+
48
+ gocardlessMandateId?: string;
49
+ authorizationToken?: string;
50
+ hashedIdentifier?: string;
51
+ mcc?: string;
52
+ mnc?: string;
53
+ mx?: string;
54
+ currencyCode?: string;
55
+ productId?: string;
56
+ }
57
+
58
+ export interface IKlarnaSessionData {
59
+ recurringDescription?: string;
60
+ purchaseCountry?: string;
61
+ purchaseCurrency?: string;
62
+ locale?: string;
63
+ orderAmount?: string;
64
+ orderLines?: IKlarnaSessionOrderLines[];
65
+ billingAddress?: IKlarnaBillingAddress;
66
+ tokenDetails?: IKlarnaSessionDataTokenDetails;
67
+ }
68
+
69
+ export interface IKlarnaSessionOrderLines {
70
+ type?: string;
71
+ name?: string;
72
+ quantity?: number;
73
+ unitPrice?: number;
74
+ totalAmount?: number;
75
+ totalDiscountAmount?: number;
76
+ }
77
+
78
+ export interface IKlarnaBillingAddress {
79
+ addressLine1?: string;
80
+ addressLine2?: string;
81
+ addressLine3?: string;
82
+ city?: string;
83
+ countryCode?: string;
84
+ email?: string;
85
+ firstName?: string;
86
+ lastName?: string;
87
+ phoneNumber?: string;
88
+ postalCode?: string;
89
+ state?: string;
90
+ title?: string;
91
+ }
92
+
93
+ export interface IKlarnaSessionDataTokenDetails {
94
+ brand?: string;
95
+ maskedNumber?: string;
96
+ type: string;
97
+ expiryDate?: string;
98
+ }
99
+
100
+ export interface IExternalPayerInfo {
101
+ externalPayerId?: string;
102
+ email?: string;
103
+ firstName?: string;
104
+ lastName?: string;
105
+ }
106
+
107
+ export interface IShippingAddress {
108
+ firstName?: string;
109
+ lastName?: string;
110
+ addressLine1?: string;
111
+ addressLine2?: string;
112
+ city?: string;
113
+ state?: string;
114
+ countryCode?: string;
115
+ postalCode?: string;
116
+ }
117
+
118
+ export interface IBinData {
119
+ network?: string;
120
+ issuerCountryCode?: string;
121
+ issuerName?: string;
122
+ issuerCurrencyCode?: string;
123
+ regionalRestriction?: string;
124
+ accountNumberType?: string;
125
+ accountFundingType?: string;
126
+ prepaidReloadableIndicator?: string;
127
+ productUsageType?: string;
128
+ productCode?: string;
129
+ productName?: string;
130
+ }
@@ -0,0 +1,4 @@
1
+ export enum PrimerSessionIntent {
2
+ CHECKOUT = 'CHECKOUT',
3
+ VAULT = 'VAULT'
4
+ }
@@ -0,0 +1,108 @@
1
+ import type {
2
+ PrimerErrorHandler,
3
+ PrimerPaymentCreationHandler,
4
+ PrimerResumeHandler,
5
+ PrimerTokenizationHandler
6
+ } from "./PrimerInterfaces";
7
+ import type { PrimerCheckoutData } from "./PrimerCheckoutData";
8
+ import type { PrimerCheckoutPaymentMethodData } from "./PrimerCheckoutPaymentMethodData";
9
+ import type { PrimerClientSession } from "./PrimerClientSession";
10
+ import type { PrimerPaymentMethodTokenData } from "./PrimerPaymentMethodTokenData";
11
+ import type { PrimerError } from "./PrimerError";
12
+ import type { IPrimerTheme } from "./PrimerTheme";
13
+
14
+ export type PrimerSettings = IPrimerSettings;
15
+
16
+ interface IPrimerSettings {
17
+ paymentHandling?: 'AUTO' | 'MANUAL';
18
+ localeData?: IPrimerLocaleData;
19
+ paymentMethodOptions?: IPrimerPaymentMethodOptions;
20
+ uiOptions?: IPrimerUIOptions;
21
+ debugOptions?: IPrimerDebugOptions;
22
+
23
+ // Common
24
+ onBeforeClientSessionUpdate?: () => void;
25
+ onClientSessionUpdate?: (clientSession: PrimerClientSession) => void;
26
+ onBeforePaymentCreate?: (checkoutPaymentMethodData: PrimerCheckoutPaymentMethodData, handler: PrimerPaymentCreationHandler) => void;
27
+ onCheckoutComplete?: (checkoutData: PrimerCheckoutData) => void;
28
+ onTokenizeSuccess?: (paymentMethodTokenData: PrimerPaymentMethodTokenData, handler: PrimerTokenizationHandler) => void;
29
+ onResumeSuccess?: (resumeToken: string, handler: PrimerResumeHandler) => void;
30
+ // PrimerErrorHandler will be undefined on the HUC flow.
31
+ onError?: (error: PrimerError, checkoutData: PrimerCheckoutData | null, handler: PrimerErrorHandler | undefined) => void;
32
+
33
+ // Only on main SDK
34
+ onDismiss?: () => void;
35
+
36
+ // Only on HUC
37
+ onPrepareStart?: (paymentMethod: string) => void;
38
+ onTokenizeStart?: (paymentMethod: string) => void;
39
+ onPaymentMethodShow?: (paymentMethod: string) => void;
40
+ onAvailablePaymentMethodsLoad?: (paymentMethods: string[]) => void;
41
+ }
42
+
43
+ //----------------------------------------
44
+
45
+ interface IPrimerLocaleData {
46
+ languageCode?: string
47
+ localeCode?: string
48
+ }
49
+
50
+ //----------------------------------------
51
+
52
+ interface IPrimerPaymentMethodOptions {
53
+ iOS?: {
54
+ urlScheme?: string;
55
+ }
56
+ android?: {
57
+ redirectScheme?: string;
58
+ },
59
+ apayaOptions?: IPrimerApayaOptions;
60
+ applePayOptions?: IPrimerApplePayOptions;
61
+ cardPaymentOptions?: IPrimerCardPaymentOptions;
62
+ goCardlessOptions?: IPrimerGoCardlessOptions;
63
+ googlePayOptions?: IPrimerGooglePayOptions;
64
+ klarnaOptions?: IPrimerKlarnaOptions;
65
+ }
66
+
67
+ interface IPrimerApayaOptions {
68
+ webViewTitle: string;
69
+ }
70
+
71
+ interface IPrimerApplePayOptions {
72
+ merchantIdentifier: string;
73
+ merchantName: string;
74
+ }
75
+
76
+ interface IPrimerCardPaymentOptions {
77
+ is3DSOnVaultingEnabled: boolean;
78
+ }
79
+
80
+ interface IPrimerGoCardlessOptions {
81
+ businessName?: string;
82
+ businessAddress?: string;
83
+ }
84
+
85
+ interface IPrimerGooglePayOptions {
86
+ merchantName?: string;
87
+ allowedCardNetworks?: string[];
88
+ }
89
+
90
+ interface IPrimerKlarnaOptions {
91
+ recurringPaymentDescription?: string;
92
+ webViewTitle?: string;
93
+ }
94
+
95
+ //----------------------------------------
96
+
97
+ interface IPrimerUIOptions {
98
+ isInitScreenEnabled?: boolean;
99
+ isSuccessScreenEnabled?: boolean;
100
+ isErrorScreenEnabled?: boolean;
101
+ theme?: IPrimerTheme;
102
+ }
103
+
104
+ //----------------------------------------
105
+
106
+ interface IPrimerDebugOptions {
107
+ is3DSSanityCheckEnabled?: boolean;
108
+ }
@@ -1,5 +1,5 @@
1
1
  export type PrimerTheme = IPrimerTheme;
2
- interface IPrimerTheme {
2
+ export interface IPrimerTheme {
3
3
  colors?: ColorTheme;
4
4
  darkModeColors?: ColorTheme;
5
5
  }
@@ -1,4 +1,4 @@
1
- import type { RgbaColor } from 'src/models/primer-theme';
1
+ import type { RgbaColor } from "../models/PrimerTheme";
2
2
 
3
3
  export function toRgbColor(hex: string): RgbaColor | null {
4
4
  // Make sure it looks like a proper color hex string