@primer-io/react-native 0.16.0 → 2.0.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 (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/ReactNativePackage.kt +3 -14
  7. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerCheckoutDataRN.kt +12 -0
  8. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerClientSessionRN.kt +54 -0
  9. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +3 -9
  10. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEvents.kt +13 -0
  11. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentInstrumentTokenRN.kt +4 -4
  12. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentMethodDataRN.kt +8 -0
  13. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +43 -125
  14. package/android/src/main/java/com/primerioreactnative/extensions/Payment.kt +6 -0
  15. package/android/src/main/java/com/primerioreactnative/extensions/PrimerAddress.kt +15 -0
  16. package/android/src/main/java/com/primerioreactnative/extensions/PrimerCheckoutData.kt +7 -0
  17. package/android/src/main/java/com/primerioreactnative/extensions/PrimerClientSession.kt +15 -0
  18. package/android/src/main/java/com/primerioreactnative/extensions/PrimerCustomer.kt +13 -0
  19. package/android/src/main/java/com/primerioreactnative/extensions/PrimerLineItem.kt +8 -0
  20. package/android/src/main/java/com/primerioreactnative/extensions/PrimerOrder.kt +6 -0
  21. package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodData.kt +7 -0
  22. package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +1 -3
  23. package/android/src/main/java/com/primerioreactnative/utils/JsonConverter.kt +45 -0
  24. package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +16 -6
  25. package/ios/DataModels/ImplementedRNCallbacks.swift +31 -0
  26. package/ios/DataModels/PrimerErrorRN.swift +0 -17
  27. package/ios/DataModels/PrimerSettingsRN.swift +70 -147
  28. package/ios/DataModels/PrimerThemeRN.swift +1 -10
  29. package/ios/RNTPrimer.m +26 -12
  30. package/ios/RNTPrimer.swift +295 -249
  31. package/ios/{Core/ReactNative-Bridging-Header.h → ReactNative-Bridging-Header.h} +0 -1
  32. package/ios/ReactNative.xcodeproj/project.pbxproj +14 -14
  33. package/lib/commonjs/Primer.js +201 -150
  34. package/lib/commonjs/Primer.js.map +1 -1
  35. package/lib/commonjs/RNPrimer.js +102 -41
  36. package/lib/commonjs/RNPrimer.js.map +1 -1
  37. package/lib/commonjs/index.js +110 -24
  38. package/lib/commonjs/index.js.map +1 -1
  39. package/lib/commonjs/models/{primer.js → Primer.js} +1 -1
  40. package/lib/commonjs/{headless_checkout/types.js.map → models/Primer.js.map} +0 -0
  41. package/lib/commonjs/models/PrimerCheckoutData.js +9 -0
  42. package/lib/commonjs/models/PrimerCheckoutData.js.map +1 -0
  43. package/lib/commonjs/models/PrimerCheckoutPaymentMethodData.js +2 -0
  44. package/lib/commonjs/models/{action-request.js.map → PrimerCheckoutPaymentMethodData.js.map} +0 -0
  45. package/lib/commonjs/models/PrimerClientSession.js +2 -0
  46. package/lib/commonjs/models/{client-session-actions-request.js.map → PrimerClientSession.js.map} +0 -0
  47. package/lib/commonjs/models/{utils/countryCode.js → PrimerCountryCode.js} +1 -1
  48. package/lib/commonjs/models/PrimerCountryCode.js.map +1 -0
  49. package/lib/commonjs/models/{utils/currencyCode.js → PrimerCurrencyCode.js} +1 -1
  50. package/lib/commonjs/models/PrimerCurrencyCode.js.map +1 -0
  51. package/lib/commonjs/models/PrimerError.js +28 -0
  52. package/lib/commonjs/models/PrimerError.js.map +1 -0
  53. package/lib/commonjs/models/PrimerPaymentMethodTokenData.js +14 -0
  54. package/lib/commonjs/models/PrimerPaymentMethodTokenData.js.map +1 -0
  55. package/lib/commonjs/models/PrimerSessionIntent.js +14 -0
  56. package/lib/commonjs/models/PrimerSessionIntent.js.map +1 -0
  57. package/lib/commonjs/models/{primer-config.js → PrimerSettings.js} +1 -1
  58. package/lib/commonjs/models/{primer-callbacks.js.map → PrimerSettings.js.map} +0 -0
  59. package/lib/commonjs/models/PrimerTheme.js +2 -0
  60. package/lib/commonjs/models/{primer-config.js.map → PrimerTheme.js.map} +0 -0
  61. package/lib/commonjs/utils/index.js.map +1 -1
  62. package/lib/module/Primer.js +201 -137
  63. package/lib/module/Primer.js.map +1 -1
  64. package/lib/module/RNPrimer.js +102 -41
  65. package/lib/module/RNPrimer.js.map +1 -1
  66. package/lib/module/index.js +9 -5
  67. package/lib/module/index.js.map +1 -1
  68. package/lib/module/models/Primer.js +2 -0
  69. package/lib/{commonjs/models/primer-request.js.map → module/models/Primer.js.map} +0 -0
  70. package/lib/module/models/PrimerCheckoutData.js +7 -0
  71. package/lib/module/models/PrimerCheckoutData.js.map +1 -0
  72. package/lib/module/models/PrimerCheckoutPaymentMethodData.js +2 -0
  73. package/lib/{commonjs/models/primer-settings.js.map → module/models/PrimerCheckoutPaymentMethodData.js.map} +0 -0
  74. package/lib/module/models/PrimerClientSession.js +2 -0
  75. package/lib/{commonjs/models/primer-theme.js.map → module/models/PrimerClientSession.js.map} +0 -0
  76. package/lib/module/models/{utils/countryCode.js → PrimerCountryCode.js} +1 -1
  77. package/lib/module/models/PrimerCountryCode.js.map +1 -0
  78. package/lib/module/models/{utils/currencyCode.js → PrimerCurrencyCode.js} +1 -1
  79. package/lib/module/models/PrimerCurrencyCode.js.map +1 -0
  80. package/lib/module/models/PrimerError.js +19 -0
  81. package/lib/module/models/PrimerError.js.map +1 -0
  82. package/lib/module/models/PrimerPaymentMethodTokenData.js +7 -0
  83. package/lib/module/models/PrimerPaymentMethodTokenData.js.map +1 -0
  84. package/lib/module/models/PrimerSessionIntent.js +7 -0
  85. package/lib/module/models/PrimerSessionIntent.js.map +1 -0
  86. package/lib/module/models/PrimerSettings.js +2 -0
  87. package/lib/{commonjs/models/primer.js.map → module/models/PrimerSettings.js.map} +0 -0
  88. package/lib/module/models/PrimerTheme.js +2 -0
  89. package/lib/module/{headless_checkout/types.js.map → models/PrimerTheme.js.map} +0 -0
  90. package/lib/module/utils/index.js.map +1 -1
  91. package/lib/typescript/Primer.d.ts +2 -15
  92. package/lib/typescript/RNPrimer.d.ts +16 -9
  93. package/lib/typescript/index.d.ts +9 -5
  94. package/lib/typescript/models/Primer.d.ts +26 -0
  95. package/lib/typescript/models/PrimerCheckoutData.d.ts +15 -0
  96. package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts +5 -0
  97. package/lib/typescript/models/PrimerClientSession.d.ts +45 -0
  98. package/lib/typescript/models/{utils/countryCode.d.ts → PrimerCountryCode.d.ts} +1 -1
  99. package/lib/typescript/models/{utils/currencyCode.d.ts → PrimerCurrencyCode.d.ts} +1 -1
  100. package/lib/typescript/models/PrimerError.d.ts +11 -0
  101. package/lib/typescript/models/PrimerPaymentMethodTokenData.d.ts +116 -0
  102. package/lib/typescript/models/PrimerSessionIntent.d.ts +4 -0
  103. package/lib/typescript/models/PrimerSettings.d.ts +73 -0
  104. package/lib/typescript/models/{primer-theme.d.ts → PrimerTheme.d.ts} +1 -1
  105. package/lib/typescript/utils/index.d.ts +1 -1
  106. package/package.json +1 -1
  107. package/primer-io-react-native.podspec +1 -1
  108. package/src/Primer.ts +228 -172
  109. package/src/RNPrimer.ts +135 -51
  110. package/src/index.tsx +33 -7
  111. package/src/models/Primer.ts +35 -0
  112. package/src/models/PrimerCheckoutData.ts +18 -0
  113. package/src/models/PrimerCheckoutPaymentMethodData.ts +5 -0
  114. package/src/models/PrimerClientSession.ts +53 -0
  115. package/src/models/{utils/countryCode.ts → PrimerCountryCode.ts} +1 -1
  116. package/src/models/{utils/currencyCode.ts → PrimerCurrencyCode.ts} +1 -1
  117. package/src/models/PrimerError.ts +20 -0
  118. package/src/models/PrimerPaymentMethodTokenData.ts +130 -0
  119. package/src/models/PrimerSessionIntent.ts +4 -0
  120. package/src/models/PrimerSettings.ts +93 -0
  121. package/src/models/{primer-theme.ts → PrimerTheme.ts} +1 -1
  122. package/src/utils/index.ts +1 -1
  123. package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +0 -83
  124. package/android/src/main/java/com/primerioreactnative/PrimerHeadlessUniversalCheckout.kt +0 -198
  125. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEventsRN.kt +0 -11
  126. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerIntentRN.kt +0 -80
  127. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerOnClientSessionActionsRequestRN.kt +0 -65
  128. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerRequestRN.kt +0 -9
  129. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerThemeRN.kt +0 -51
  130. package/android/src/main/java/com/primerioreactnative/huc/assets/AssetsManager.kt +0 -56
  131. package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +0 -11
  132. package/android/src/main/java/com/primerioreactnative/huc/extensions/Map.kt +0 -10
  133. package/android/src/main/java/com/primerioreactnative/utils/Keys.kt +0 -7
  134. package/android/src/main/java/com/primerioreactnative/utils/PrimerEventQueueRN.kt +0 -30
  135. package/ios/DataModels/PrimerIntentRN.swift +0 -10
  136. package/ios/DataModels/PrimerRequestRN.swift +0 -14
  137. package/ios/Headless Universal Checkout/RNTPrimerCardNumberInputElementManager.m +0 -23
  138. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +0 -30
  139. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +0 -241
  140. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +0 -14
  141. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +0 -113
  142. package/lib/commonjs/PrimerInput.js +0 -80
  143. package/lib/commonjs/PrimerInput.js.map +0 -1
  144. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +0 -14
  145. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +0 -1
  146. package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +0 -110
  147. package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +0 -1
  148. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -117
  149. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
  150. package/lib/commonjs/headless_checkout/types.js +0 -2
  151. package/lib/commonjs/models/action-request.js +0 -2
  152. package/lib/commonjs/models/client-session-actions-request.js +0 -2
  153. package/lib/commonjs/models/payment-instrument-token.js +0 -30
  154. package/lib/commonjs/models/payment-instrument-token.js.map +0 -1
  155. package/lib/commonjs/models/primer-callbacks.js +0 -6
  156. package/lib/commonjs/models/primer-error.js +0 -4
  157. package/lib/commonjs/models/primer-error.js.map +0 -1
  158. package/lib/commonjs/models/primer-intent.js +0 -4
  159. package/lib/commonjs/models/primer-intent.js.map +0 -1
  160. package/lib/commonjs/models/primer-request.js +0 -2
  161. package/lib/commonjs/models/primer-settings.js +0 -6
  162. package/lib/commonjs/models/primer-theme.js +0 -2
  163. package/lib/commonjs/models/utils/countryCode.js.map +0 -1
  164. package/lib/commonjs/models/utils/currencyCode.js.map +0 -1
  165. package/lib/commonjs/models/utils/redirectScheme.js +0 -4
  166. package/lib/commonjs/models/utils/redirectScheme.js.map +0 -1
  167. package/lib/module/PrimerInput.js +0 -46
  168. package/lib/module/PrimerInput.js.map +0 -1
  169. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +0 -5
  170. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +0 -1
  171. package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +0 -98
  172. package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +0 -1
  173. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -100
  174. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
  175. package/lib/module/headless_checkout/types.js +0 -2
  176. package/lib/module/models/action-request.js +0 -2
  177. package/lib/module/models/action-request.js.map +0 -1
  178. package/lib/module/models/client-session-actions-request.js +0 -2
  179. package/lib/module/models/client-session-actions-request.js.map +0 -1
  180. package/lib/module/models/payment-instrument-token.js +0 -28
  181. package/lib/module/models/payment-instrument-token.js.map +0 -1
  182. package/lib/module/models/primer-callbacks.js +0 -2
  183. package/lib/module/models/primer-callbacks.js.map +0 -1
  184. package/lib/module/models/primer-config.js +0 -2
  185. package/lib/module/models/primer-config.js.map +0 -1
  186. package/lib/module/models/primer-error.js +0 -2
  187. package/lib/module/models/primer-error.js.map +0 -1
  188. package/lib/module/models/primer-intent.js +0 -2
  189. package/lib/module/models/primer-intent.js.map +0 -1
  190. package/lib/module/models/primer-request.js +0 -2
  191. package/lib/module/models/primer-request.js.map +0 -1
  192. package/lib/module/models/primer-settings.js +0 -2
  193. package/lib/module/models/primer-settings.js.map +0 -1
  194. package/lib/module/models/primer-theme.js +0 -2
  195. package/lib/module/models/primer-theme.js.map +0 -1
  196. package/lib/module/models/primer.js +0 -2
  197. package/lib/module/models/primer.js.map +0 -1
  198. package/lib/module/models/utils/countryCode.js.map +0 -1
  199. package/lib/module/models/utils/currencyCode.js.map +0 -1
  200. package/lib/module/models/utils/redirectScheme.js +0 -2
  201. package/lib/module/models/utils/redirectScheme.js.map +0 -1
  202. package/lib/typescript/PrimerInput.d.ts +0 -15
  203. package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +0 -1
  204. package/lib/typescript/headless_checkout/NativePrimerHeadlessUniversalCheckout.d.ts +0 -13
  205. package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +0 -13
  206. package/lib/typescript/headless_checkout/types.d.ts +0 -16
  207. package/lib/typescript/models/action-request.d.ts +0 -10
  208. package/lib/typescript/models/client-session-actions-request.d.ts +0 -15
  209. package/lib/typescript/models/payment-instrument-token.d.ts +0 -76
  210. package/lib/typescript/models/primer-callbacks.d.ts +0 -10
  211. package/lib/typescript/models/primer-config.d.ts +0 -44
  212. package/lib/typescript/models/primer-error.d.ts +0 -8
  213. package/lib/typescript/models/primer-intent.d.ts +0 -13
  214. package/lib/typescript/models/primer-request.d.ts +0 -7
  215. package/lib/typescript/models/primer-settings.d.ts +0 -65
  216. package/lib/typescript/models/primer.d.ts +0 -33
  217. package/lib/typescript/models/utils/redirectScheme.d.ts +0 -3
  218. package/src/PrimerInput.tsx +0 -73
  219. package/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tsx +0 -2
  220. package/src/headless_checkout/NativePrimerHeadlessUniversalCheckout.ts +0 -132
  221. package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +0 -140
  222. package/src/headless_checkout/types.ts +0 -18
  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,132 +0,0 @@
1
- import { NativeEventEmitter, NativeModules } from 'react-native';
2
- import type { PrimerSettings } from 'src/models/primer-settings';
3
- import RNPrimer from '../RNPrimer';
4
- import type { PrimerHeadlessUniversalCheckoutCallbacks } from './types';
5
-
6
- const { PrimerHeadlessUniversalCheckout } = NativeModules;
7
-
8
- const eventEmitter = new NativeEventEmitter(PrimerHeadlessUniversalCheckout);
9
-
10
- type EventType =
11
- | 'preparationStarted'
12
- | 'paymentMethodPresented'
13
- | 'tokenizationStarted'
14
- | 'tokenizationSucceeded'
15
- | 'resume'
16
- | 'error';
17
-
18
- let primerSettings: (PrimerSettings & PrimerHeadlessUniversalCheckoutCallbacks) | null = null;
19
-
20
- const NativePrimerHeadlessUniversalCheckout = {
21
- ///////////////////////////////////////////
22
- // Event Emitter
23
- ///////////////////////////////////////////
24
- addListener: (eventType: EventType, listener: (...args: any[]) => any) => {
25
- eventEmitter.addListener(eventType, listener);
26
- },
27
-
28
- removeListener: (eventType: EventType, listener: (...args: any[]) => any) => {
29
- eventEmitter.removeListener(eventType, listener);
30
- },
31
-
32
- removeAllListenersForEvent(eventType: EventType) {
33
- eventEmitter.removeAllListeners(eventType);
34
- },
35
-
36
- removeAllListeners() {
37
- eventEmitter.removeAllListeners('preparationStarted');
38
- eventEmitter.removeAllListeners('paymentMethodPresented');
39
- eventEmitter.removeAllListeners('tokenizationStarted');
40
- eventEmitter.removeAllListeners('tokenizationSucceeded');
41
- eventEmitter.removeAllListeners('resume');
42
- eventEmitter.removeAllListeners('error');
43
- },
44
-
45
- ///////////////////////////////////////////
46
- // Native API
47
- ///////////////////////////////////////////
48
- getAssetForPaymentMethod: (
49
- paymentMethodType: string,
50
- assetType: 'logo' | 'icon'
51
- ): Promise<string> => {
52
- return new Promise((resolve, reject) => {
53
- try {
54
- PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(
55
- paymentMethodType,
56
- assetType,
57
- (err: Error) => {
58
- reject(err);
59
- },
60
- (url: string) => {
61
- resolve(url);
62
- }
63
- );
64
- } catch (e) {
65
- reject(e);
66
- }
67
- });
68
- },
69
-
70
- getAssetForCardNetwork: (
71
- cardNetwork: string,
72
- assetType: 'logo' | 'icon'
73
- ): Promise<string> => {
74
- return new Promise((resolve, reject) => {
75
- try {
76
- PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(
77
- cardNetwork,
78
- assetType,
79
- (err: Error) => {
80
- reject(err);
81
- },
82
- (url: string) => {
83
- resolve(url);
84
- }
85
- );
86
- } catch (e) {
87
- reject(e);
88
- }
89
- });
90
- },
91
-
92
- startWithClientToken(clientToken: string, settings: any): Promise<any> {
93
- primerSettings = settings;
94
-
95
- return new Promise((resolve, reject) => {
96
- PrimerHeadlessUniversalCheckout.startWithClientToken(
97
- clientToken,
98
- JSON.stringify(settings),
99
- (err: Error) => {
100
- console.error(err);
101
- reject(err);
102
- },
103
- (paymentMethodTypes: string[]) => {
104
- resolve({ paymentMethodTypes });
105
- }
106
- );
107
- });
108
- },
109
-
110
- showPaymentMethod: async (paymentMethod: string) => {
111
- if (primerSettings) {
112
- let implementedRNCallbacks: any = {
113
- isTokenAddedToVaultImplemented: false,
114
- isOnResumeSuccessImplemented: (primerSettings.onResumeSuccess !== undefined),
115
- isOnResumeErrorImplemented: (primerSettings.onFailure !== undefined),
116
- isOnCheckoutDismissedImplemented: false,
117
- isCheckoutFailedImplemented: (primerSettings.onFailure !== undefined),
118
- isClientSessionActionsImplemented: false
119
- };
120
-
121
- await RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks);
122
- }
123
-
124
- PrimerHeadlessUniversalCheckout.showPaymentMethod(paymentMethod);
125
- },
126
-
127
- resumeWithClientToken(resumeToken: string) {
128
- PrimerHeadlessUniversalCheckout.resumeWithClientToken(resumeToken);
129
- }
130
- };
131
-
132
- export default NativePrimerHeadlessUniversalCheckout;
@@ -1,140 +0,0 @@
1
- import type { PaymentInstrumentToken } from 'src/models/payment-instrument-token';
2
- import type { PrimerError } from 'src/models/primer-error';
3
- import type { PrimerSettings } from 'src/models/primer-settings';
4
- import NativePrimerHeadlessUniversalCheckout from './NativePrimerHeadlessUniversalCheckout';
5
- import type {
6
- PrimerHeadlessUniversalCheckoutStartResponse,
7
- PrimerHeadlessUniversalCheckoutCallbacks,
8
- } from './types';
9
-
10
- let callbacks: PrimerHeadlessUniversalCheckoutCallbacks | undefined;
11
-
12
- class PrimerHeadlessUniversalCheckoutClass {
13
-
14
- ///////////////////////////////////////////
15
- // Init
16
- ///////////////////////////////////////////
17
- constructor() {
18
-
19
- }
20
-
21
- private configureListeners() {
22
- NativePrimerHeadlessUniversalCheckout.removeAllListeners();
23
-
24
- NativePrimerHeadlessUniversalCheckout.addListener(
25
- 'preparationStarted',
26
- () => {
27
- console.log('preparationStarted');
28
- callbacks?.onPreparationStarted?.();
29
- }
30
- );
31
-
32
- NativePrimerHeadlessUniversalCheckout.addListener(
33
- 'paymentMethodPresented',
34
- () => {
35
- console.log('paymentMethodPresented');
36
- callbacks?.onPaymentMethodPresented?.();
37
- }
38
- );
39
-
40
- NativePrimerHeadlessUniversalCheckout.addListener(
41
- 'tokenizationStarted',
42
- () => {
43
- console.log('tokenizationStarted');
44
- callbacks?.onTokenizeStart?.();
45
- }
46
- );
47
-
48
- NativePrimerHeadlessUniversalCheckout.addListener(
49
- 'tokenizationSucceeded',
50
- (data) => {
51
- console.log('tokenizationSucceeded', data);
52
-
53
- if (data.paymentMethodToken) {
54
- const paymentMethodTokenObj: PaymentInstrumentToken = JSON.parse(
55
- data.paymentMethodToken
56
- );
57
- callbacks?.onTokenizeSuccess?.(paymentMethodTokenObj);
58
- } else {
59
- const err: PrimerError = {
60
- name: 'ParseJsonFailed',
61
- description: 'Failed to parse payment method token',
62
- };
63
- //@ts-ignore
64
- callbacks?.onFailure?.(err);
65
- }
66
- }
67
- );
68
-
69
- NativePrimerHeadlessUniversalCheckout.addListener('resume', (data) => {
70
- console.log('resume', data);
71
- callbacks?.onResumeSuccess?.(data.resumeToken);
72
- });
73
-
74
- NativePrimerHeadlessUniversalCheckout.addListener('error', (data) => {
75
- console.log('error', data);
76
- callbacks?.onFailure?.(data.error);
77
- });
78
- }
79
-
80
- ///////////////////////////////////////////
81
- // API
82
- ///////////////////////////////////////////
83
- startWithClientToken(
84
- clientToken: string,
85
- settings: PrimerSettings & PrimerHeadlessUniversalCheckoutCallbacks
86
- ): Promise<PrimerHeadlessUniversalCheckoutStartResponse> {
87
- // Copy callback
88
- callbacks = {
89
- onPreparationStarted: settings.onPreparationStarted,
90
- onPaymentMethodPresented: settings.onPaymentMethodPresented,
91
- onTokenizeStart: settings.onTokenizeStart,
92
- onTokenizeSuccess: settings.onTokenizeSuccess,
93
- onResumeSuccess: settings.onResumeSuccess,
94
- onFailure: settings.onFailure,
95
- };
96
-
97
- return NativePrimerHeadlessUniversalCheckout.startWithClientToken(
98
- clientToken,
99
- settings
100
- );
101
- }
102
-
103
- showPaymentMethod(paymentMethod: string) {
104
- this.configureListeners();
105
-
106
- return NativePrimerHeadlessUniversalCheckout.showPaymentMethod(
107
- paymentMethod
108
- );
109
- }
110
-
111
- resumeWithClientToken(resumeToken: string) {
112
- return NativePrimerHeadlessUniversalCheckout.resumeWithClientToken(
113
- resumeToken
114
- );
115
- }
116
-
117
- getAssetForPaymentMethod(
118
- paymentMethodType: string,
119
- assetType: 'logo' | 'icon'
120
- ): Promise<string> {
121
- return NativePrimerHeadlessUniversalCheckout.getAssetForPaymentMethod(
122
- paymentMethodType,
123
- assetType
124
- );
125
- }
126
-
127
- getAssetForCardNetwork(
128
- cardNetwork: string,
129
- assetType: 'logo' | 'icon'
130
- ): Promise<string> {
131
- return NativePrimerHeadlessUniversalCheckout.getAssetForCardNetwork(
132
- cardNetwork,
133
- assetType
134
- );
135
- }
136
- }
137
-
138
- const PrimerHeadlessUniversalCheckout = new PrimerHeadlessUniversalCheckoutClass();
139
-
140
- export default PrimerHeadlessUniversalCheckout;
@@ -1,18 +0,0 @@
1
- export interface PrimerHeadlessUniversalCheckoutStartResponse {
2
- paymentMethodTypes: string[];
3
- }
4
-
5
- export interface PrimerError {
6
- errorId: string;
7
- description: string;
8
- recoverySuggestion?: string;
9
- }
10
-
11
- 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
- }
@@ -1,12 +0,0 @@
1
- export type ActionRequest = IActionRequest;
2
-
3
- interface IActionRequest {
4
- actions: Action[];
5
- }
6
-
7
- type Action = IAction;
8
-
9
- interface IAction {
10
- type: string;
11
- metadata: any;
12
- }
@@ -1,21 +0,0 @@
1
- export type ClientSessionActionsRequest = IClientSessionActionsRequest;
2
-
3
- interface IClientSessionActionsRequest {
4
- actions: ClientSessionAction[];
5
- }
6
-
7
- type ClientSessionAction = IClientSessionAction;
8
-
9
- interface IClientSessionAction {
10
- type:
11
- | 'SELECT_PAYMENT_METHOD'
12
- | 'UNSELECT_PAYMENT_METHOD'
13
- | 'SET_BILLING_ADDRESS';
14
- paymentMethodType?: string;
15
- network?: string;
16
- params?: IActionParams;
17
- }
18
-
19
- interface IActionParams {
20
- billingAddress: Record<string, string | null>;
21
- }
@@ -1,109 +0,0 @@
1
- export interface IPaymentMethodToken<T, U extends PaymentInstrumentType> {
2
- token: string;
3
- analyticsId: string;
4
- tokenType: TokenType;
5
- paymentInstrumentData: T;
6
- paymentInstrumentType: U;
7
- threeDSecureAuthentication: Nullable<ThreeDSAuthenticationData>;
8
- vaultData: Nullable<VaultData>;
9
- }
10
-
11
- enum PaymentInstrumentType {
12
- CARD = 'PAYMENT_CARD',
13
- APPLE_PAY = 'APPLE_PAY',
14
- GOOGLE_PAY = 'GOOGLE_PAY',
15
- PAYPAL = 'PAYPAL_ORDER',
16
- PAYPAL_VAULTED = 'PAYPAL_BILLING_AGREEMENT',
17
- GO_CARDLESS = 'GOCARDLESS',
18
- PAY_NL_IDEAL = 'PAY_NL_IDEAL',
19
- }
20
-
21
- enum TokenType {
22
- SINGLE_USE = 'SINGLE_USE',
23
- MULTI_USE = 'MULTI_USE',
24
- }
25
-
26
- interface VaultData {
27
- customerId: string;
28
- }
29
-
30
- interface ThreeDSAuthenticationData {
31
- responseCode: ThreeDSecureStatus;
32
- reasonCode?: string;
33
- reasonText?: string;
34
- protocolVersion: string;
35
- challengeIssued: boolean;
36
- }
37
-
38
- enum ThreeDSecureStatus {
39
- SUCCESS = 'AUTH_SUCCESS',
40
- FAILED = 'AUTH_FAILED',
41
- SKIPPED = 'SKIPPED',
42
- CHALLENGE = 'CHALLENGE',
43
- }
44
-
45
- type Nullable<T> = T | null;
46
-
47
- export type PaymentInstrumentToken =
48
- | PaymentCardToken
49
- | PayPalBillingAgreementToken
50
- | GoCardlessToken
51
- | IdealPayToken
52
- | IPaymentMethodToken<any, any>;
53
-
54
- type PaymentCardToken = IPaymentMethodToken<
55
- PaymentCardDetails,
56
- PaymentInstrumentType.CARD
57
- >;
58
-
59
- type PayPalBillingAgreementToken = IPaymentMethodToken<
60
- PayPalBillingAgreementDetails,
61
- PaymentInstrumentType.PAYPAL_VAULTED
62
- >;
63
-
64
- type GoCardlessToken = IPaymentMethodToken<
65
- GoCardlessDetails,
66
- PaymentInstrumentType.GO_CARDLESS
67
- >;
68
-
69
- type IdealPayToken = IPaymentMethodToken<
70
- Record<string, never>,
71
- PaymentInstrumentType.PAY_NL_IDEAL
72
- >;
73
-
74
- interface PaymentCardDetails {
75
- last4Digits: string;
76
- cardholderName: string;
77
- network: string;
78
- }
79
-
80
- interface PayPalBillingAgreementDetails {
81
- paypalBillingAgreementId: string;
82
- externalPayerInfo?: ExternalPayerInfo;
83
- shippingAddress?: BillingAddress;
84
- }
85
-
86
- interface GoCardlessDetails {
87
- gocardlessMandateId: string;
88
- }
89
-
90
- interface ExternalPayerInfo {
91
- externalPayerId: string;
92
- firstName?: string;
93
- lastName?: string;
94
- email?: string;
95
- }
96
-
97
- interface BillingAddress {
98
- firstName: string;
99
- lastName: string;
100
- addressLine1: string;
101
- addressLine2?: string;
102
- addressLine3?: string;
103
- city: string;
104
- state?: string;
105
- countryCode: Alpha2CountryCode;
106
- postalCode: string;
107
- }
108
-
109
- type Alpha2CountryCode = 'ES' | 'FR' | 'GB' | 'DE' | 'PL' | 'IT';
@@ -1,14 +0,0 @@
1
- import type { IPrimerError } from 'src/RNPrimer';
2
- import type { IClientSessionAction } from 'src/Primer';
3
- import type { PaymentInstrumentToken } from './payment-instrument-token';
4
- import type { PrimerResumeHandler } from './primer-request';
5
-
6
- // Not implemented
7
- // export type OnClientTokenCallback = (resumeHandler: PrimerResumeHandler) => void;
8
-
9
- export type OnClientSessionActionsCallback = (clientSessionActions: IClientSessionAction[], resumeHandler: PrimerResumeHandler | null) => void;
10
- export type OnTokenizeSuccessCallback = (paymentInstrument: PaymentInstrumentToken, resumeHandler: PrimerResumeHandler) => void;
11
- export type OnTokenAddedToVaultCallback = (paymentInstrument: PaymentInstrumentToken) => void;
12
- export type OnResumeCallback = (resumeToken: string, resumeHandler: PrimerResumeHandler | null) => void;
13
- export type OnPrimerErrorCallback = (err: IPrimerError, resumeHandler: PrimerResumeHandler) => void;
14
- export type OnDismissCallback = () => void;
@@ -1,55 +0,0 @@
1
- import type { IClientSessionAction } from 'src/Primer';
2
- import type { IPrimerError } from 'src/RNPrimer';
3
- import type { PaymentInstrumentToken } from './payment-instrument-token';
4
- import type { PrimerResumeHandler } from './primer-request';
5
- import type { PrimerSettings } from './primer-settings';
6
- import type { PrimerTheme } from './primer-theme';
7
-
8
- export interface IPrimerConfig {
9
- /**
10
- * Include data for different payment methods (e.g. amount or business details)
11
- */
12
- settings?: PrimerSettings;
13
-
14
- /**
15
- * Set colors and dimensions for the Primer UI.
16
- */
17
- theme?: PrimerTheme;
18
-
19
- // onClientTokenCallback?: (resumeHandler: PrimerResumeHandler) => void;
20
-
21
- /**
22
- * Use this callback to grab a Primer payment instrument and complete a payment.
23
- */
24
- onTokenizeSuccess?: (paymentInstrument: PaymentInstrumentToken, resumeHandler: PrimerResumeHandler) => void;
25
-
26
- /**
27
- * Use this callback to grab a Primer payment instrument and complete a payment.
28
- */
29
- onVaultSuccess?: (paymentInstrument: PaymentInstrumentToken) => void;
30
-
31
- /**
32
- * Use this callback to resume a PENDING payment with the token provided.
33
- */
34
- onResumeSuccess?: (resumeToken: string, resumeHandler: PrimerResumeHandler | null) => void;
35
-
36
- /**
37
- * Use this callback to perform some action when a payment instrument was saved to Primer.
38
- */
39
- onTokenAddedToVault?: (paymentInstrument: PaymentInstrumentToken) => void;
40
-
41
- /**
42
- * Use this callback to perform some action when the Primer UI is dismissed.
43
- */
44
- onDismiss?: () => void;
45
-
46
- /**
47
- * Use this callback to perform some action when the SDK throws an error.
48
- */
49
- onError?: (err: IPrimerError, resumeHandler: PrimerResumeHandler) => void;
50
-
51
- /**
52
- * Use this callback to perform actions on payment methods, like surcharging.
53
- */
54
- onClientSessionActions?: (clientSessionActions: IClientSessionAction[], resumeHandler: PrimerResumeHandler | null) => void;
55
- }
@@ -1,19 +0,0 @@
1
- export type PrimerError = IPrimerError;
2
-
3
- interface IPrimerError {
4
- name: PrimerErrorType;
5
- description?: String;
6
- }
7
-
8
- const errors = [
9
- 'ParseJsonFailed',
10
- 'InitFailed',
11
- 'CheckoutFlowFailed',
12
- 'TokenizationFailed',
13
- 'clientTokenNotConfigured',
14
- 'settingsNotConfigured',
15
- 'invalidPrimerIntent',
16
- 'noIosViewController',
17
- ] as const;
18
-
19
- type PrimerErrorType = typeof errors[number];
@@ -1,49 +0,0 @@
1
- const paymentMethods = [
2
- 'ADYEN_ALIPAY',
3
- 'ADYEN_DOTPAY',
4
- 'ADYEN_GIROPAY',
5
- 'ADYEN_IDEAL',
6
- 'ADYEN_MOBILEPAY',
7
- 'ADYEN_SOFORT',
8
- 'ADYEN_TRUSTLY',
9
- 'ADYEN_TWINT',
10
- 'ADYEN_VIPPS',
11
- 'APAYA',
12
- 'APPLE_PAY',
13
- 'ATOME',
14
- 'BUCKAROO_BANCONTACT',
15
- 'BUCKAROO_EPS',
16
- 'BUCKAROO_GIROPAY',
17
- 'BUCKAROO_IDEAL',
18
- 'BUCKAROO_SOFORT',
19
- 'GOCARDLESS',
20
- 'GOOGLE_PAY',
21
- 'HOOLAH',
22
- 'KLARNA',
23
- 'MOLLIE_BANCONTACT',
24
- 'MOLLIE_IDEAL',
25
- 'PAY_NL_BANCONTACT',
26
- 'PAY_NL_GIROPAY',
27
- 'PAY_NL_IDEAL',
28
- 'PAY_NL_PAYCONIQ',
29
- 'PAYMENT_CARD',
30
- 'PAYPAL',
31
- 'XFERS_PAYNOW',
32
- ] as const;
33
-
34
- export type SinglePrimerPaymentMethod = typeof paymentMethods[number];
35
- export interface AnyPrimerPaymentMethodIntent {
36
- vault: boolean;
37
- paymentMethod: SinglePrimerPaymentMethod;
38
- }
39
-
40
- export type PrimerPaymentMethodIntent = ISinglePrimerPaymentMethodIntent;
41
-
42
- interface ISinglePrimerPaymentMethodIntent {
43
- vault: boolean;
44
- paymentMethod: SinglePrimerPaymentMethod;
45
- }
46
-
47
- export type PrimerIntent =
48
- | ISinglePrimerPaymentMethodIntent
49
- | AnyPrimerPaymentMethodIntent;
@@ -1,7 +0,0 @@
1
- export type PrimerResumeHandler = IPrimerResumeHandler;
2
-
3
- interface IPrimerResumeHandler {
4
- handleNewClientToken: (clientToken: string) => void;
5
- handleError: (error: Error) => void;
6
- handleSuccess: () => void;
7
- }
@@ -1,73 +0,0 @@
1
- import type { CountryCode } from './utils/countryCode';
2
- import type { CurrencyCode } from './utils/currencyCode';
3
-
4
- export type PrimerSettings = IPrimerSettings;
5
- interface IPrimerSettings {
6
- order?: IOrder;
7
- business?: IBusiness;
8
- customer?: ICustomer;
9
- options?: IOptions;
10
- }
11
-
12
- interface IOrder {
13
- id?: string;
14
- amount?: number;
15
- currency?: CurrencyCode;
16
- countryCode?: CountryCode;
17
- items?: IOrderItem[];
18
- shipping?: IAddress;
19
- }
20
-
21
- interface IOrderItem {
22
- name: string;
23
- amount: number;
24
- quantity: number;
25
- isPending?: boolean;
26
- }
27
-
28
- interface IBusiness {
29
- name?: string;
30
- registrationNumber?: string;
31
- email?: string;
32
- phone?: string;
33
- address?: IAddress;
34
- }
35
-
36
- interface ICustomer {
37
- id?: string;
38
- firstName?: string;
39
- lastName?: string;
40
- email?: string;
41
- phone?: string;
42
- billing?: IAddress;
43
- }
44
-
45
- interface IOptions {
46
- isResultScreenEnabled?: boolean;
47
- isLoadingScreenEnabled?: boolean;
48
- isFullScreenEnabled?: boolean;
49
- is3DSOnVaultingEnabled?: boolean;
50
- is3DSDevelopmentModeEnabled?: boolean;
51
- locale?: string;
52
- ios?: IIosOptions;
53
- android?: IAndroidOptions;
54
- }
55
-
56
- interface IIosOptions {
57
- urlScheme?: string;
58
- urlSchemeIdentifier?: string;
59
- merchantIdentifier?: string;
60
- }
61
-
62
- interface IAndroidOptions {
63
- redirectScheme?: string;
64
- }
65
-
66
- interface IAddress {
67
- line1?: String;
68
- line2?: String;
69
- postalCode?: String;
70
- state?: String;
71
- city?: String;
72
- country?: CountryCode;
73
- }