@primer-io/react-native 0.15.4 → 0.16.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 (91) hide show
  1. package/android/build.gradle +1 -4
  2. package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +83 -0
  3. package/android/src/main/java/com/primerioreactnative/PrimerHeadlessUniversalCheckout.kt +198 -0
  4. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +13 -8
  5. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +2 -1
  6. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +14 -3
  7. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +2 -0
  8. package/android/src/main/java/com/primerioreactnative/huc/assets/AssetsManager.kt +56 -0
  9. package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +11 -0
  10. package/android/src/main/java/com/primerioreactnative/huc/extensions/Map.kt +10 -0
  11. package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +1 -1
  12. package/android/src/main/java/com/primerioreactnative/utils/Keys.kt +7 -0
  13. package/ios/{ReactNative-Bridging-Header.h → Core/ReactNative-Bridging-Header.h} +1 -0
  14. package/ios/DataModels/PrimerSettingsRN.swift +2 -6
  15. package/ios/Headless Universal Checkout/RNTPrimerCardNumberInputElementManager.m +23 -0
  16. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +30 -0
  17. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +241 -0
  18. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +14 -0
  19. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +113 -0
  20. package/ios/{Pods/Manifest.lock → Podfile.lock} +1 -1
  21. package/ios/RNTPrimer.swift +14 -0
  22. package/lib/commonjs/Primer.js +84 -124
  23. package/lib/commonjs/Primer.js.map +1 -1
  24. package/lib/commonjs/PrimerInput.js +80 -0
  25. package/lib/commonjs/PrimerInput.js.map +1 -0
  26. package/lib/commonjs/RNPrimer.js +1 -0
  27. package/lib/commonjs/RNPrimer.js.map +1 -1
  28. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +14 -0
  29. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
  30. package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +110 -0
  31. package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +1 -0
  32. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +117 -0
  33. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  34. package/lib/commonjs/headless_checkout/types.js +2 -0
  35. package/lib/commonjs/headless_checkout/types.js.map +1 -0
  36. package/lib/commonjs/index.js +28 -1
  37. package/lib/commonjs/index.js.map +1 -1
  38. package/lib/commonjs/models/primer-callbacks.js +4 -0
  39. package/lib/commonjs/models/primer-config.js +4 -0
  40. package/lib/commonjs/models/primer-settings.js +4 -0
  41. package/lib/commonjs/models/primer.js +4 -0
  42. package/lib/commonjs/utils/index.js +1 -1
  43. package/lib/module/Primer.js +79 -118
  44. package/lib/module/Primer.js.map +1 -1
  45. package/lib/module/PrimerInput.js +46 -0
  46. package/lib/module/PrimerInput.js.map +1 -0
  47. package/lib/module/RNPrimer.js +1 -0
  48. package/lib/module/RNPrimer.js.map +1 -1
  49. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +5 -0
  50. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
  51. package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +98 -0
  52. package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +1 -0
  53. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +100 -0
  54. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  55. package/lib/module/headless_checkout/types.js +2 -0
  56. package/lib/module/headless_checkout/types.js.map +1 -0
  57. package/lib/module/index.js +4 -3
  58. package/lib/module/index.js.map +1 -1
  59. package/lib/module/models/primer-callbacks.js +1 -1
  60. package/lib/module/models/primer-config.js +1 -1
  61. package/lib/module/models/primer-settings.js +1 -1
  62. package/lib/module/models/primer.js +1 -1
  63. package/lib/typescript/PrimerInput.d.ts +15 -0
  64. package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +1 -0
  65. package/lib/typescript/headless_checkout/NativePrimerHeadlessUniversalCheckout.d.ts +13 -0
  66. package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +13 -0
  67. package/lib/typescript/headless_checkout/types.d.ts +16 -0
  68. package/lib/typescript/index.d.ts +3 -1
  69. package/lib/typescript/models/primer-config.d.ts +4 -0
  70. package/lib/typescript/models/primer-settings.d.ts +4 -2
  71. package/package.json +1 -1
  72. package/primer-io-react-native.podspec +1 -1
  73. package/src/Primer.ts +86 -124
  74. package/src/PrimerInput.tsx +73 -0
  75. package/src/RNPrimer.ts +1 -0
  76. package/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tsx +2 -0
  77. package/src/headless_checkout/NativePrimerHeadlessUniversalCheckout.ts +132 -0
  78. package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +140 -0
  79. package/src/headless_checkout/types.ts +18 -0
  80. package/src/index.tsx +3 -2
  81. package/src/models/primer-config.ts +5 -0
  82. package/src/models/primer-settings.ts +5 -2
  83. package/ios/Pods/Pods.xcodeproj/project.pbxproj +0 -344
  84. package/ios/Pods/Pods.xcodeproj/xcuserdata/aladintaleb.xcuserdatad/xcschemes/Pods-ReactNative.xcscheme +0 -60
  85. package/ios/Pods/Pods.xcodeproj/xcuserdata/aladintaleb.xcuserdatad/xcschemes/xcschememanagement.plist +0 -16
  86. package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-acknowledgements.markdown +0 -3
  87. package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-acknowledgements.plist +0 -29
  88. package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-dummy.m +0 -5
  89. package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative.debug.xcconfig +0 -8
  90. package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative.release.xcconfig +0 -8
  91. package/ios/ReactNative.xcworkspace/xcuserdata/aladintaleb.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
@@ -0,0 +1,100 @@
1
+ import NativePrimerHeadlessUniversalCheckout from './NativePrimerHeadlessUniversalCheckout';
2
+ let callbacks;
3
+
4
+ class PrimerHeadlessUniversalCheckoutClass {
5
+ ///////////////////////////////////////////
6
+ // Init
7
+ ///////////////////////////////////////////
8
+ constructor() {}
9
+
10
+ configureListeners() {
11
+ NativePrimerHeadlessUniversalCheckout.removeAllListeners();
12
+ NativePrimerHeadlessUniversalCheckout.addListener('preparationStarted', () => {
13
+ var _callbacks, _callbacks$onPreparat;
14
+
15
+ console.log('preparationStarted');
16
+ (_callbacks = callbacks) === null || _callbacks === void 0 ? void 0 : (_callbacks$onPreparat = _callbacks.onPreparationStarted) === null || _callbacks$onPreparat === void 0 ? void 0 : _callbacks$onPreparat.call(_callbacks);
17
+ });
18
+ NativePrimerHeadlessUniversalCheckout.addListener('paymentMethodPresented', () => {
19
+ var _callbacks2, _callbacks2$onPayment;
20
+
21
+ console.log('paymentMethodPresented');
22
+ (_callbacks2 = callbacks) === null || _callbacks2 === void 0 ? void 0 : (_callbacks2$onPayment = _callbacks2.onPaymentMethodPresented) === null || _callbacks2$onPayment === void 0 ? void 0 : _callbacks2$onPayment.call(_callbacks2);
23
+ });
24
+ NativePrimerHeadlessUniversalCheckout.addListener('tokenizationStarted', () => {
25
+ var _callbacks3, _callbacks3$onTokeniz;
26
+
27
+ console.log('tokenizationStarted');
28
+ (_callbacks3 = callbacks) === null || _callbacks3 === void 0 ? void 0 : (_callbacks3$onTokeniz = _callbacks3.onTokenizeStart) === null || _callbacks3$onTokeniz === void 0 ? void 0 : _callbacks3$onTokeniz.call(_callbacks3);
29
+ });
30
+ NativePrimerHeadlessUniversalCheckout.addListener('tokenizationSucceeded', data => {
31
+ console.log('tokenizationSucceeded', data);
32
+
33
+ if (data.paymentMethodToken) {
34
+ var _callbacks4, _callbacks4$onTokeniz;
35
+
36
+ const paymentMethodTokenObj = JSON.parse(data.paymentMethodToken);
37
+ (_callbacks4 = callbacks) === null || _callbacks4 === void 0 ? void 0 : (_callbacks4$onTokeniz = _callbacks4.onTokenizeSuccess) === null || _callbacks4$onTokeniz === void 0 ? void 0 : _callbacks4$onTokeniz.call(_callbacks4, paymentMethodTokenObj);
38
+ } else {
39
+ var _callbacks5, _callbacks5$onFailure;
40
+
41
+ const err = {
42
+ name: 'ParseJsonFailed',
43
+ description: 'Failed to parse payment method token'
44
+ }; //@ts-ignore
45
+
46
+ (_callbacks5 = callbacks) === null || _callbacks5 === void 0 ? void 0 : (_callbacks5$onFailure = _callbacks5.onFailure) === null || _callbacks5$onFailure === void 0 ? void 0 : _callbacks5$onFailure.call(_callbacks5, err);
47
+ }
48
+ });
49
+ NativePrimerHeadlessUniversalCheckout.addListener('resume', data => {
50
+ var _callbacks6, _callbacks6$onResumeS;
51
+
52
+ console.log('resume', data);
53
+ (_callbacks6 = callbacks) === null || _callbacks6 === void 0 ? void 0 : (_callbacks6$onResumeS = _callbacks6.onResumeSuccess) === null || _callbacks6$onResumeS === void 0 ? void 0 : _callbacks6$onResumeS.call(_callbacks6, data.resumeToken);
54
+ });
55
+ NativePrimerHeadlessUniversalCheckout.addListener('error', data => {
56
+ var _callbacks7, _callbacks7$onFailure;
57
+
58
+ console.log('error', data);
59
+ (_callbacks7 = callbacks) === null || _callbacks7 === void 0 ? void 0 : (_callbacks7$onFailure = _callbacks7.onFailure) === null || _callbacks7$onFailure === void 0 ? void 0 : _callbacks7$onFailure.call(_callbacks7, data.error);
60
+ });
61
+ } ///////////////////////////////////////////
62
+ // API
63
+ ///////////////////////////////////////////
64
+
65
+
66
+ startWithClientToken(clientToken, settings) {
67
+ // Copy callback
68
+ callbacks = {
69
+ onPreparationStarted: settings.onPreparationStarted,
70
+ onPaymentMethodPresented: settings.onPaymentMethodPresented,
71
+ onTokenizeStart: settings.onTokenizeStart,
72
+ onTokenizeSuccess: settings.onTokenizeSuccess,
73
+ onResumeSuccess: settings.onResumeSuccess,
74
+ onFailure: settings.onFailure
75
+ };
76
+ return NativePrimerHeadlessUniversalCheckout.startWithClientToken(clientToken, settings);
77
+ }
78
+
79
+ showPaymentMethod(paymentMethod) {
80
+ this.configureListeners();
81
+ return NativePrimerHeadlessUniversalCheckout.showPaymentMethod(paymentMethod);
82
+ }
83
+
84
+ resumeWithClientToken(resumeToken) {
85
+ return NativePrimerHeadlessUniversalCheckout.resumeWithClientToken(resumeToken);
86
+ }
87
+
88
+ getAssetForPaymentMethod(paymentMethodType, assetType) {
89
+ return NativePrimerHeadlessUniversalCheckout.getAssetForPaymentMethod(paymentMethodType, assetType);
90
+ }
91
+
92
+ getAssetForCardNetwork(cardNetwork, assetType) {
93
+ return NativePrimerHeadlessUniversalCheckout.getAssetForCardNetwork(cardNetwork, assetType);
94
+ }
95
+
96
+ }
97
+
98
+ const PrimerHeadlessUniversalCheckout = new PrimerHeadlessUniversalCheckoutClass();
99
+ export default PrimerHeadlessUniversalCheckout;
100
+ //# sourceMappingURL=PrimerHeadlessUniversalCheckout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["PrimerHeadlessUniversalCheckout.ts"],"names":["NativePrimerHeadlessUniversalCheckout","callbacks","PrimerHeadlessUniversalCheckoutClass","constructor","configureListeners","removeAllListeners","addListener","console","log","onPreparationStarted","onPaymentMethodPresented","onTokenizeStart","data","paymentMethodToken","paymentMethodTokenObj","JSON","parse","onTokenizeSuccess","err","name","description","onFailure","onResumeSuccess","resumeToken","error","startWithClientToken","clientToken","settings","showPaymentMethod","paymentMethod","resumeWithClientToken","getAssetForPaymentMethod","paymentMethodType","assetType","getAssetForCardNetwork","cardNetwork","PrimerHeadlessUniversalCheckout"],"mappings":"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","sourcesContent":["import type { PaymentInstrumentToken } from 'src/models/payment-instrument-token';\nimport type { PrimerError } from 'src/models/primer-error';\nimport type { PrimerSettings } from 'src/models/primer-settings';\nimport NativePrimerHeadlessUniversalCheckout from './NativePrimerHeadlessUniversalCheckout';\nimport type {\n PrimerHeadlessUniversalCheckoutStartResponse,\n PrimerHeadlessUniversalCheckoutCallbacks,\n} from './types';\n\nlet callbacks: PrimerHeadlessUniversalCheckoutCallbacks | undefined;\n\nclass PrimerHeadlessUniversalCheckoutClass {\n\n ///////////////////////////////////////////\n // Init\n ///////////////////////////////////////////\n constructor() {\n\n }\n\n private configureListeners() {\n NativePrimerHeadlessUniversalCheckout.removeAllListeners();\n\n NativePrimerHeadlessUniversalCheckout.addListener(\n 'preparationStarted',\n () => {\n console.log('preparationStarted');\n callbacks?.onPreparationStarted?.();\n }\n );\n\n NativePrimerHeadlessUniversalCheckout.addListener(\n 'paymentMethodPresented',\n () => {\n console.log('paymentMethodPresented');\n callbacks?.onPaymentMethodPresented?.();\n }\n );\n\n NativePrimerHeadlessUniversalCheckout.addListener(\n 'tokenizationStarted',\n () => {\n console.log('tokenizationStarted');\n callbacks?.onTokenizeStart?.();\n }\n );\n\n NativePrimerHeadlessUniversalCheckout.addListener(\n 'tokenizationSucceeded',\n (data) => {\n console.log('tokenizationSucceeded', data);\n\n if (data.paymentMethodToken) {\n const paymentMethodTokenObj: PaymentInstrumentToken = JSON.parse(\n data.paymentMethodToken\n );\n callbacks?.onTokenizeSuccess?.(paymentMethodTokenObj);\n } else {\n const err: PrimerError = {\n name: 'ParseJsonFailed',\n description: 'Failed to parse payment method token',\n };\n //@ts-ignore\n callbacks?.onFailure?.(err);\n }\n }\n );\n\n NativePrimerHeadlessUniversalCheckout.addListener('resume', (data) => {\n console.log('resume', data);\n callbacks?.onResumeSuccess?.(data.resumeToken);\n });\n\n NativePrimerHeadlessUniversalCheckout.addListener('error', (data) => {\n console.log('error', data);\n callbacks?.onFailure?.(data.error);\n });\n }\n\n ///////////////////////////////////////////\n // API\n ///////////////////////////////////////////\n startWithClientToken(\n clientToken: string,\n settings: PrimerSettings & PrimerHeadlessUniversalCheckoutCallbacks\n ): Promise<PrimerHeadlessUniversalCheckoutStartResponse> {\n // Copy callback\n callbacks = {\n onPreparationStarted: settings.onPreparationStarted,\n onPaymentMethodPresented: settings.onPaymentMethodPresented,\n onTokenizeStart: settings.onTokenizeStart,\n onTokenizeSuccess: settings.onTokenizeSuccess,\n onResumeSuccess: settings.onResumeSuccess,\n onFailure: settings.onFailure,\n };\n\n return NativePrimerHeadlessUniversalCheckout.startWithClientToken(\n clientToken,\n settings\n );\n }\n\n showPaymentMethod(paymentMethod: string) {\n this.configureListeners();\n\n return NativePrimerHeadlessUniversalCheckout.showPaymentMethod(\n paymentMethod\n );\n }\n\n resumeWithClientToken(resumeToken: string) {\n return NativePrimerHeadlessUniversalCheckout.resumeWithClientToken(\n resumeToken\n );\n }\n\n getAssetForPaymentMethod(\n paymentMethodType: string,\n assetType: 'logo' | 'icon'\n ): Promise<string> {\n return NativePrimerHeadlessUniversalCheckout.getAssetForPaymentMethod(\n paymentMethodType,\n assetType\n );\n }\n\n getAssetForCardNetwork(\n cardNetwork: string,\n assetType: 'logo' | 'icon'\n ): Promise<string> {\n return NativePrimerHeadlessUniversalCheckout.getAssetForCardNetwork(\n cardNetwork,\n assetType\n );\n }\n}\n\nconst PrimerHeadlessUniversalCheckout = new PrimerHeadlessUniversalCheckoutClass();\n\nexport default PrimerHeadlessUniversalCheckout;\n"]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -1,5 +1,6 @@
1
- import { PrimerNativeMapping } from './Primer'; // import type { IPrimerConfig as PrimerConfig } from './models/primer-config';
2
-
1
+ import PrimerHeadlessUniversalCheckout from './headless_checkout/PrimerHeadlessUniversalCheckout';
2
+ import { PrimerNativeMapping } from './Primer';
3
+ export * from './PrimerInput';
3
4
  const Primer = PrimerNativeMapping;
4
- export { Primer };
5
+ export { Primer, PrimerHeadlessUniversalCheckout as HeadlessUniversalCheckout };
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["PrimerNativeMapping","Primer"],"mappings":"AACA,SAASA,mBAAT,QAAoC,UAApC,C,CACA;;AAEA,MAAMC,MAAe,GAAGD,mBAAxB;AAEA,SAASC,MAAT","sourcesContent":["import type { IPrimer } from './models/primer';\nimport { PrimerNativeMapping } from './Primer';\n// import type { IPrimerConfig as PrimerConfig } from './models/primer-config';\n\nconst Primer: IPrimer = PrimerNativeMapping;\n\nexport { Primer };\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["PrimerHeadlessUniversalCheckout","PrimerNativeMapping","Primer","HeadlessUniversalCheckout"],"mappings":"AAAA,OAAOA,+BAAP,MAA4C,qDAA5C;AAEA,SAASC,mBAAT,QAAoC,UAApC;AACA,cAAc,eAAd;AAEA,MAAMC,MAAe,GAAGD,mBAAxB;AAEA,SAASC,MAAT,EAAiBF,+BAA+B,IAAIG,yBAApD","sourcesContent":["import PrimerHeadlessUniversalCheckout from './headless_checkout/PrimerHeadlessUniversalCheckout';\nimport type { IPrimer } from './models/primer';\nimport { PrimerNativeMapping } from './Primer';\nexport * from './PrimerInput';\n\nconst Primer: IPrimer = PrimerNativeMapping;\n\nexport { Primer, PrimerHeadlessUniversalCheckout as HeadlessUniversalCheckout };\n"]}
@@ -1,2 +1,2 @@
1
-
1
+ export {};
2
2
  //# sourceMappingURL=primer-callbacks.js.map
@@ -1,2 +1,2 @@
1
-
1
+ export {};
2
2
  //# sourceMappingURL=primer-config.js.map
@@ -1,2 +1,2 @@
1
-
1
+ export {};
2
2
  //# sourceMappingURL=primer-settings.js.map
@@ -1,2 +1,2 @@
1
-
1
+ export {};
2
2
  //# sourceMappingURL=primer.js.map
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ViewProps } from 'react-native';
3
+ export declare const PrimerCardNumberEditTextRaw: import("react-native").HostComponent<{}>;
4
+ declare type PrimerCardNumberEditTextProps = ViewProps;
5
+ export declare const PrimerCardNumberEditText: React.FC<PrimerCardNumberEditTextProps>;
6
+ export declare const PrimerCardholderNameEditTextRaw: import("react-native").HostComponent<{}>;
7
+ declare type PrimerCardholderNameEditTextProps = ViewProps;
8
+ export declare const PrimerCardholderNameEditText: React.FC<PrimerCardholderNameEditTextProps>;
9
+ export declare const PrimerExpiryEditTextRaw: import("react-native").HostComponent<{}>;
10
+ declare type PrimerExpiryEditTextProps = ViewProps;
11
+ export declare const PrimerExpiryEditText: React.FC<PrimerExpiryEditTextProps>;
12
+ export declare const PrimerCvvEditTextRaw: import("react-native").HostComponent<{}>;
13
+ declare type PrimerCvvEditTextProps = ViewProps;
14
+ export declare const PrimerCvvEditText: React.FC<PrimerCvvEditTextProps>;
15
+ export {};
@@ -0,0 +1 @@
1
+ export declare const PrimerHeadlessUniversalCheckoutCardFormUIManager: any;
@@ -0,0 +1,13 @@
1
+ declare type EventType = 'preparationStarted' | 'paymentMethodPresented' | 'tokenizationStarted' | 'tokenizationSucceeded' | 'resume' | 'error';
2
+ declare const NativePrimerHeadlessUniversalCheckout: {
3
+ addListener: (eventType: EventType, listener: (...args: any[]) => any) => void;
4
+ removeListener: (eventType: EventType, listener: (...args: any[]) => any) => void;
5
+ removeAllListenersForEvent(eventType: EventType): void;
6
+ removeAllListeners(): void;
7
+ getAssetForPaymentMethod: (paymentMethodType: string, assetType: 'logo' | 'icon') => Promise<string>;
8
+ getAssetForCardNetwork: (cardNetwork: string, assetType: 'logo' | 'icon') => Promise<string>;
9
+ startWithClientToken(clientToken: string, settings: any): Promise<any>;
10
+ showPaymentMethod: (paymentMethod: string) => Promise<void>;
11
+ resumeWithClientToken(resumeToken: string): void;
12
+ };
13
+ export default NativePrimerHeadlessUniversalCheckout;
@@ -0,0 +1,13 @@
1
+ import type { PrimerSettings } from 'src/models/primer-settings';
2
+ import type { PrimerHeadlessUniversalCheckoutStartResponse, PrimerHeadlessUniversalCheckoutCallbacks } from './types';
3
+ declare class PrimerHeadlessUniversalCheckoutClass {
4
+ constructor();
5
+ private configureListeners;
6
+ startWithClientToken(clientToken: string, settings: PrimerSettings & PrimerHeadlessUniversalCheckoutCallbacks): Promise<PrimerHeadlessUniversalCheckoutStartResponse>;
7
+ showPaymentMethod(paymentMethod: string): Promise<void>;
8
+ resumeWithClientToken(resumeToken: string): void;
9
+ getAssetForPaymentMethod(paymentMethodType: string, assetType: 'logo' | 'icon'): Promise<string>;
10
+ getAssetForCardNetwork(cardNetwork: string, assetType: 'logo' | 'icon'): Promise<string>;
11
+ }
12
+ declare const PrimerHeadlessUniversalCheckout: PrimerHeadlessUniversalCheckoutClass;
13
+ export default PrimerHeadlessUniversalCheckout;
@@ -0,0 +1,16 @@
1
+ export interface PrimerHeadlessUniversalCheckoutStartResponse {
2
+ paymentMethodTypes: string[];
3
+ }
4
+ export interface PrimerError {
5
+ errorId: string;
6
+ description: string;
7
+ recoverySuggestion?: string;
8
+ }
9
+ export interface PrimerHeadlessUniversalCheckoutCallbacks {
10
+ onPreparationStarted?: () => void;
11
+ onPaymentMethodPresented?: () => void;
12
+ onTokenizeStart?: () => void;
13
+ onTokenizeSuccess?: (paymentMethod: any) => void;
14
+ onResumeSuccess?: (resumeToken: string) => void;
15
+ onFailure?: (error: PrimerError) => void;
16
+ }
@@ -1,3 +1,5 @@
1
+ import PrimerHeadlessUniversalCheckout from './headless_checkout/PrimerHeadlessUniversalCheckout';
1
2
  import type { IPrimer } from './models/primer';
3
+ export * from './PrimerInput';
2
4
  declare const Primer: IPrimer;
3
- export { Primer };
5
+ export { Primer, PrimerHeadlessUniversalCheckout as HeadlessUniversalCheckout };
@@ -17,6 +17,10 @@ export interface IPrimerConfig {
17
17
  * Use this callback to grab a Primer payment instrument and complete a payment.
18
18
  */
19
19
  onTokenizeSuccess?: (paymentInstrument: PaymentInstrumentToken, resumeHandler: PrimerResumeHandler) => void;
20
+ /**
21
+ * Use this callback to grab a Primer payment instrument and complete a payment.
22
+ */
23
+ onVaultSuccess?: (paymentInstrument: PaymentInstrumentToken) => void;
20
24
  /**
21
25
  * Use this callback to resume a PENDING payment with the token provided.
22
26
  */
@@ -1,6 +1,5 @@
1
1
  import type { CountryCode } from './utils/countryCode';
2
2
  import type { CurrencyCode } from './utils/currencyCode';
3
- import type { RedirectScheme } from './utils/redirectScheme';
4
3
  export declare type PrimerSettings = IPrimerSettings;
5
4
  interface IPrimerSettings {
6
5
  order?: IOrder;
@@ -45,13 +44,16 @@ interface IOptions {
45
44
  is3DSDevelopmentModeEnabled?: boolean;
46
45
  locale?: string;
47
46
  ios?: IIosOptions;
48
- redirectScheme?: RedirectScheme;
47
+ android?: IAndroidOptions;
49
48
  }
50
49
  interface IIosOptions {
51
50
  urlScheme?: string;
52
51
  urlSchemeIdentifier?: string;
53
52
  merchantIdentifier?: string;
54
53
  }
54
+ interface IAndroidOptions {
55
+ redirectScheme?: string;
56
+ }
55
57
  interface IAddress {
56
58
  line1?: String;
57
59
  line2?: String;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer-io/react-native",
3
- "version": "0.15.4",
3
+ "version": "0.16.0",
4
4
  "description": "Primer SDK for RN",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -17,5 +17,5 @@ Pod::Spec.new do |s|
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
19
  s.dependency "React-Core"
20
- s.dependency "PrimerSDK", "1.32.5"
20
+ s.dependency "PrimerSDK", "1.36.0"
21
21
  end
package/src/Primer.ts CHANGED
@@ -87,136 +87,97 @@ interface IBinData {
87
87
  network: string;
88
88
  }
89
89
 
90
- export const PrimerNativeMapping: IPrimer = {
90
+ function configureListeners(config: IPrimerConfig) {
91
+ RNPrimer.removeAllListeners();
91
92
 
92
- showUniversalCheckout(clientToken: string, config: IPrimerConfig): void {
93
- RNPrimer.removeAllListeners();
93
+ RNPrimer.addListener('onVaultSuccess', data => {
94
+ const paymentInstrumentToken: PaymentInstrumentToken = data;
95
+ if (config.onVaultSuccess) {
96
+ config.onVaultSuccess(paymentInstrumentToken);
97
+ }
98
+ });
94
99
 
95
- if (config.settings || config.theme) {
96
- RNPrimer.configure(config.settings || null, config.theme || null);
97
-
98
- let implementedRNCallbacks: any = {
99
- // isClientTokenCallbackImplemented: (config.onClientTokenCallback !== undefined),
100
- isTokenAddedToVaultImplemented: (config.onTokenAddedToVault !== undefined),
101
- isOnResumeSuccessImplemented: (config.onResumeSuccess !== undefined),
102
- isOnResumeErrorImplemented: (config.onError !== undefined),
103
- isOnCheckoutDismissedImplemented: (config.onDismiss !== undefined),
104
- isCheckoutFailedImplemented: (config.onError !== undefined),
105
- isClientSessionActionsImplemented: (config.onClientSessionActions !== undefined)
106
- };
107
-
108
- RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks)
109
- .then(() => {
110
- RNPrimer.addListener('onClientSessionActions', data => {
111
- const clientSessionActions: IClientSessionAction[] = data;
112
- if (config.onClientSessionActions) {
113
- config.onClientSessionActions(clientSessionActions, resumeHandler);
114
- }
115
- });
116
-
117
- RNPrimer.addListener('onTokenizeSuccessCallback', data => {
118
- const paymentInstrumentToken: PaymentInstrumentToken = data;
119
- if (config.onTokenizeSuccess) {
120
- config.onTokenizeSuccess(paymentInstrumentToken, resumeHandler);
121
- }
122
- });
123
-
124
- RNPrimer.addListener('onResumeSuccess', data => {
125
- const resumeToken: string = data.resumeToken;
126
- if (config.onResumeSuccess) {
127
- config.onResumeSuccess(resumeToken, resumeHandler);
128
- }
129
- });
130
-
131
- RNPrimer.addListener('onCheckoutDismissed', _ => {
132
- if (config.onDismiss) {
133
- config.onDismiss();
134
- }
135
- });
136
-
137
- RNPrimer.addListener('onError', data => {
138
- const err: IPrimerError = data.error;
139
- if (config.onError) {
140
- config.onError(err, resumeHandler);
141
- }
142
- });
143
-
144
- RNPrimer.showUniversalCheckout(clientToken);
145
- })
146
- .catch( err => {
147
- console.error(err);
148
- })
149
- }
100
+ RNPrimer.addListener('onClientSessionActions', data => {
101
+ const clientSessionActions: IClientSessionAction[] = data;
102
+ if (config.onClientSessionActions) {
103
+ config.onClientSessionActions(clientSessionActions, resumeHandler);
104
+ }
105
+ });
150
106
 
151
- // RNPrimer.addListener('onClientTokenCallback', _ => {
152
- // if (config.onClientTokenCallback) {
153
- // config.onClientTokenCallback(resumeHandler);
154
- // }
155
- // });
156
- },
107
+ RNPrimer.addListener('onTokenizeSuccessCallback', data => {
108
+ const paymentInstrumentToken: PaymentInstrumentToken = data;
109
+ if (config.onTokenizeSuccess) {
110
+ config.onTokenizeSuccess(paymentInstrumentToken, resumeHandler);
111
+ }
112
+ });
157
113
 
158
- showVaultManager(clientToken: string, config: IPrimerConfig): void {
159
- RNPrimer.removeAllListeners();
114
+ RNPrimer.addListener('onResumeSuccess', data => {
115
+ const resumeToken: string = data.resumeToken;
116
+ if (config.onResumeSuccess) {
117
+ config.onResumeSuccess(resumeToken, resumeHandler);
118
+ }
119
+ });
160
120
 
161
- if (config.settings || config.theme) {
162
- RNPrimer.configure(config.settings || null, config.theme || null);
121
+ RNPrimer.addListener('onCheckoutDismissed', _ => {
122
+ if (config.onDismiss) {
123
+ config.onDismiss();
124
+ }
163
125
 
164
- let implementedRNCallbacks: any = {
165
- // isClientTokenCallbackImplemented: (config.onClientTokenCallback !== undefined),
166
- isTokenAddedToVaultImplemented: (config.onTokenAddedToVault !== undefined),
167
- isOnResumeSuccessImplemented: (config.onResumeSuccess !== undefined),
168
- isOnResumeErrorImplemented: (config.onError !== undefined),
169
- isOnCheckoutDismissedImplemented: (config.onDismiss !== undefined),
170
- isCheckoutFailedImplemented: (config.onError !== undefined),
171
- isClientSessionActionsImplemented: (config.onClientSessionActions !== undefined)
172
- };
126
+ RNPrimer.removeAllListeners();
127
+ });
173
128
 
174
- RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks);
129
+ RNPrimer.addListener('onError', data => {
130
+ const err: IPrimerError = data.error;
131
+ if (config.onError) {
132
+ config.onError(err, resumeHandler);
175
133
  }
134
+ });
135
+ }
176
136
 
177
- // RNPrimer.addListener('onClientTokenCallback', _ => {
178
- // if (config.onClientTokenCallback) {
179
- // config.onClientTokenCallback(resumeHandler);
180
- // }
181
- // });
137
+ export const PrimerNativeMapping: IPrimer = {
182
138
 
183
- RNPrimer.addListener('onClientSessionActions', data => {
184
- const clientSessionActions: IClientSessionAction[] = data;
185
- if (config.onClientSessionActions) {
186
- config.onClientSessionActions(clientSessionActions, resumeHandler);
187
- } else {
188
- RNPrimer.handleSuccess();
189
- }
190
- });
139
+ showUniversalCheckout(clientToken: string, config: IPrimerConfig): void {
140
+ RNPrimer.configure(config.settings || null, config.theme || null);
191
141
 
192
- RNPrimer.addListener('onTokenizeSuccessCallback', data => {
193
- const paymentInstrumentToken: PaymentInstrumentToken = data;
194
- if (config.onTokenizeSuccess) {
195
- config.onTokenizeSuccess(paymentInstrumentToken, resumeHandler);
196
- }
197
- });
142
+ let implementedRNCallbacks: any = {
143
+ isTokenAddedToVaultImplemented: (config.onVaultSuccess !== undefined),
144
+ isOnResumeSuccessImplemented: (config.onResumeSuccess !== undefined),
145
+ isOnResumeErrorImplemented: (config.onError !== undefined),
146
+ isOnCheckoutDismissedImplemented: (config.onDismiss !== undefined),
147
+ isCheckoutFailedImplemented: (config.onError !== undefined),
148
+ isClientSessionActionsImplemented: (config.onClientSessionActions !== undefined)
149
+ };
198
150
 
199
- RNPrimer.addListener('onResumeSuccess', data => {
200
- const resumeToken: string = data.resumeToken;
201
- if (config.onResumeSuccess) {
202
- config.onResumeSuccess(resumeToken, resumeHandler);
203
- }
204
- });
151
+ RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks)
152
+ .then(() => {
153
+ configureListeners(config);
154
+ RNPrimer.showUniversalCheckout(clientToken);
155
+ })
156
+ .catch(err => {
157
+ console.error(err);
158
+ })
159
+ },
205
160
 
206
- RNPrimer.addListener('onCheckoutDismissed', () => {
207
- if (config.onDismiss) {
208
- config.onDismiss();
209
- }
210
- });
161
+ showVaultManager(clientToken: string, config: IPrimerConfig): void {
162
+ RNPrimer.configure(config.settings || null, config.theme || null);
211
163
 
212
- RNPrimer.addListener('onError', data => {
213
- const err: IPrimerError = data.error;
214
- if (config.onError) {
215
- config.onError(err, resumeHandler);
216
- }
217
- });
164
+ let implementedRNCallbacks: any = {
165
+ isTokenAddedToVaultImplemented: (config.onVaultSuccess !== undefined),
166
+ isOnResumeSuccessImplemented: (config.onResumeSuccess !== undefined),
167
+ isOnResumeErrorImplemented: (config.onError !== undefined),
168
+ isOnCheckoutDismissedImplemented: (config.onDismiss !== undefined),
169
+ isCheckoutFailedImplemented: (config.onError !== undefined),
170
+ isClientSessionActionsImplemented: (config.onClientSessionActions !== undefined)
171
+ };
218
172
 
219
- RNPrimer.showVaultManager(clientToken);
173
+ RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks)
174
+ .then((() => {
175
+ configureListeners(config);
176
+ RNPrimer.showVaultManager(clientToken);
177
+ }))
178
+ .catch(err => {
179
+ console.error(err);
180
+ })
220
181
  },
221
182
 
222
183
  showPaymentMethod(
@@ -224,15 +185,10 @@ export const PrimerNativeMapping: IPrimer = {
224
185
  intent: PrimerPaymentMethodIntent,
225
186
  config: IPrimerConfig
226
187
  ): void {
227
- RNPrimer.removeAllListeners();
228
-
229
- if (config.settings || config.theme) {
230
- RNPrimer.configure(config.settings || null, config.theme || null);
231
- }
188
+ RNPrimer.configure(config.settings || null, config.theme || null);
232
189
 
233
190
  let implementedRNCallbacks: any = {
234
- // isClientTokenCallbackImplemented: (config.onClientTokenCallback !== undefined),
235
- isTokenAddedToVaultImplemented: (config.onTokenAddedToVault !== undefined),
191
+ isTokenAddedToVaultImplemented: (config.onVaultSuccess !== undefined),
236
192
  isOnResumeSuccessImplemented: (config.onResumeSuccess !== undefined),
237
193
  isOnResumeErrorImplemented: (config.onError !== undefined),
238
194
  isOnCheckoutDismissedImplemented: (config.onDismiss !== undefined),
@@ -240,8 +196,14 @@ export const PrimerNativeMapping: IPrimer = {
240
196
  isClientSessionActionsImplemented: (config.onClientSessionActions !== undefined)
241
197
  };
242
198
 
243
- RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks);
244
- RNPrimer.showPaymentMethod(clientToken, intent.paymentMethod, intent.vault === true ? "vault" : "checkout");
199
+ RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks)
200
+ .then(() => {
201
+ configureListeners(config);
202
+ RNPrimer.showPaymentMethod(clientToken, intent.paymentMethod, intent.vault === true ? "vault" : "checkout");
203
+ })
204
+ .catch(err => {
205
+ console.error(err);
206
+ })
245
207
  },
246
208
 
247
209
  dispose(): void {
@@ -0,0 +1,73 @@
1
+ import { PrimerHeadlessUniversalCheckoutCardFormUIManager } from './RNTPrimerHeadlessUniversalCheckoutCardFormUIManager';
2
+ import React, { useEffect, useRef } from 'react';
3
+ import { NativeModules, requireNativeComponent, ViewProps } from 'react-native';
4
+
5
+
6
+ // PrimerCardNumberEditText
7
+ export const PrimerCardNumberEditTextRaw = requireNativeComponent<{}>(
8
+ 'PrimerCardNumberEditText'
9
+ );
10
+
11
+ type PrimerCardNumberEditTextProps = ViewProps;
12
+
13
+ const { PrimerRN } = NativeModules;
14
+
15
+ export const PrimerCardNumberEditText: React.FC<PrimerCardNumberEditTextProps> = (props) => {
16
+ const ref = useRef(React.createRef<any>());
17
+
18
+ useEffect(() => {
19
+ const tag = ref.current.current._nativeTag;
20
+ PrimerHeadlessUniversalCheckoutCardFormUIManager.addInput(tag);
21
+ return () => PrimerRN.removeInput(tag);
22
+ }, []);
23
+
24
+ const rawComponent = (
25
+ <PrimerCardNumberEditTextRaw ref={ref.current} {...props} />
26
+ );
27
+
28
+ return rawComponent;
29
+ };
30
+
31
+ // PrimerCardholderNameEditText
32
+ export const PrimerCardholderNameEditTextRaw = requireNativeComponent<{}>(
33
+ 'PrimerCardholderNameEditText'
34
+ );
35
+
36
+ type PrimerCardholderNameEditTextProps = ViewProps;
37
+
38
+ export const PrimerCardholderNameEditText: React.FC<PrimerCardholderNameEditTextProps> = (
39
+ props
40
+ ) => {
41
+ const ref = useRef(React.createRef<any>());
42
+
43
+ useEffect(() => {
44
+ const tag = ref.current.current._nativeTag;
45
+ PrimerRN.addInput(tag);
46
+ return () => PrimerRN.removeInput(tag);
47
+ }, []);
48
+ return <PrimerCardholderNameEditTextRaw ref={ref.current} {...props} />;
49
+ };
50
+
51
+ // PrimerExpiryEditText
52
+ export const PrimerExpiryEditTextRaw = requireNativeComponent<{}>(
53
+ 'PrimerExpiryEditText'
54
+ );
55
+
56
+ type PrimerExpiryEditTextProps = ViewProps;
57
+
58
+ export const PrimerExpiryEditText: React.FC<PrimerExpiryEditTextProps> = (
59
+ props
60
+ ) => {
61
+ return <PrimerExpiryEditTextRaw {...props} />;
62
+ };
63
+
64
+ // cvv
65
+ export const PrimerCvvEditTextRaw = requireNativeComponent<{}>(
66
+ 'PrimerCvvEditText'
67
+ );
68
+
69
+ type PrimerCvvEditTextProps = ViewProps;
70
+
71
+ export const PrimerCvvEditText: React.FC<PrimerCvvEditTextProps> = (props) => {
72
+ return <PrimerCvvEditTextRaw {...props} />;
73
+ };
package/src/RNPrimer.ts CHANGED
@@ -41,6 +41,7 @@ const RNPrimer = {
41
41
  eventEmitter.removeAllListeners('onClientTokenCallback');
42
42
  eventEmitter.removeAllListeners('onClientSessionActions');
43
43
  eventEmitter.removeAllListeners('onTokenizeSuccessCallback');
44
+ eventEmitter.removeAllListeners('onVaultSuccess');
44
45
  eventEmitter.removeAllListeners('onResumeSuccess');
45
46
  eventEmitter.removeAllListeners('onCheckoutDismissed');
46
47
  eventEmitter.removeAllListeners('onError');
@@ -0,0 +1,2 @@
1
+ import { NativeModules } from 'react-native';
2
+ export const { PrimerHeadlessUniversalCheckoutCardFormUIManager } = NativeModules;