@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.
- package/android/build.gradle +1 -4
- package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +83 -0
- package/android/src/main/java/com/primerioreactnative/PrimerHeadlessUniversalCheckout.kt +198 -0
- package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +13 -8
- package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +2 -1
- package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +14 -3
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +2 -0
- package/android/src/main/java/com/primerioreactnative/huc/assets/AssetsManager.kt +56 -0
- package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +11 -0
- package/android/src/main/java/com/primerioreactnative/huc/extensions/Map.kt +10 -0
- package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +1 -1
- package/android/src/main/java/com/primerioreactnative/utils/Keys.kt +7 -0
- package/ios/{ReactNative-Bridging-Header.h → Core/ReactNative-Bridging-Header.h} +1 -0
- package/ios/DataModels/PrimerSettingsRN.swift +2 -6
- package/ios/Headless Universal Checkout/RNTPrimerCardNumberInputElementManager.m +23 -0
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +30 -0
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +241 -0
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +14 -0
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +113 -0
- package/ios/{Pods/Manifest.lock → Podfile.lock} +1 -1
- package/ios/RNTPrimer.swift +14 -0
- package/lib/commonjs/Primer.js +84 -124
- package/lib/commonjs/Primer.js.map +1 -1
- package/lib/commonjs/PrimerInput.js +80 -0
- package/lib/commonjs/PrimerInput.js.map +1 -0
- package/lib/commonjs/RNPrimer.js +1 -0
- package/lib/commonjs/RNPrimer.js.map +1 -1
- package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +14 -0
- package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
- package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +110 -0
- package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +117 -0
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/commonjs/headless_checkout/types.js +2 -0
- package/lib/commonjs/headless_checkout/types.js.map +1 -0
- package/lib/commonjs/index.js +28 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/primer-callbacks.js +4 -0
- package/lib/commonjs/models/primer-config.js +4 -0
- package/lib/commonjs/models/primer-settings.js +4 -0
- package/lib/commonjs/models/primer.js +4 -0
- package/lib/commonjs/utils/index.js +1 -1
- package/lib/module/Primer.js +79 -118
- package/lib/module/Primer.js.map +1 -1
- package/lib/module/PrimerInput.js +46 -0
- package/lib/module/PrimerInput.js.map +1 -0
- package/lib/module/RNPrimer.js +1 -0
- package/lib/module/RNPrimer.js.map +1 -1
- package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +5 -0
- package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
- package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +98 -0
- package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +100 -0
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/module/headless_checkout/types.js +2 -0
- package/lib/module/headless_checkout/types.js.map +1 -0
- package/lib/module/index.js +4 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/primer-callbacks.js +1 -1
- package/lib/module/models/primer-config.js +1 -1
- package/lib/module/models/primer-settings.js +1 -1
- package/lib/module/models/primer.js +1 -1
- package/lib/typescript/PrimerInput.d.ts +15 -0
- package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +1 -0
- package/lib/typescript/headless_checkout/NativePrimerHeadlessUniversalCheckout.d.ts +13 -0
- package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +13 -0
- package/lib/typescript/headless_checkout/types.d.ts +16 -0
- package/lib/typescript/index.d.ts +3 -1
- package/lib/typescript/models/primer-config.d.ts +4 -0
- package/lib/typescript/models/primer-settings.d.ts +4 -2
- package/package.json +1 -1
- package/primer-io-react-native.podspec +1 -1
- package/src/Primer.ts +86 -124
- package/src/PrimerInput.tsx +73 -0
- package/src/RNPrimer.ts +1 -0
- package/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tsx +2 -0
- package/src/headless_checkout/NativePrimerHeadlessUniversalCheckout.ts +132 -0
- package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +140 -0
- package/src/headless_checkout/types.ts +18 -0
- package/src/index.tsx +3 -2
- package/src/models/primer-config.ts +5 -0
- package/src/models/primer-settings.ts +5 -2
- package/ios/Pods/Pods.xcodeproj/project.pbxproj +0 -344
- package/ios/Pods/Pods.xcodeproj/xcuserdata/aladintaleb.xcuserdatad/xcschemes/Pods-ReactNative.xcscheme +0 -60
- package/ios/Pods/Pods.xcodeproj/xcuserdata/aladintaleb.xcuserdatad/xcschemes/xcschememanagement.plist +0 -16
- package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-acknowledgements.markdown +0 -3
- package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-acknowledgements.plist +0 -29
- package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-dummy.m +0 -5
- package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative.debug.xcconfig +0 -8
- package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative.release.xcconfig +0 -8
- 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 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
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
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["PrimerNativeMapping","Primer"],"mappings":"
|
|
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
|
-
|
|
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
package/src/Primer.ts
CHANGED
|
@@ -87,136 +87,97 @@ interface IBinData {
|
|
|
87
87
|
network: string;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
function configureListeners(config: IPrimerConfig) {
|
|
91
|
+
RNPrimer.removeAllListeners();
|
|
91
92
|
|
|
92
|
-
|
|
93
|
-
|
|
93
|
+
RNPrimer.addListener('onVaultSuccess', data => {
|
|
94
|
+
const paymentInstrumentToken: PaymentInstrumentToken = data;
|
|
95
|
+
if (config.onVaultSuccess) {
|
|
96
|
+
config.onVaultSuccess(paymentInstrumentToken);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
94
99
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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
|
-
|
|
159
|
-
|
|
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
|
-
|
|
162
|
-
|
|
121
|
+
RNPrimer.addListener('onCheckoutDismissed', _ => {
|
|
122
|
+
if (config.onDismiss) {
|
|
123
|
+
config.onDismiss();
|
|
124
|
+
}
|
|
163
125
|
|
|
164
|
-
|
|
165
|
-
|
|
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
|
-
|
|
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
|
-
|
|
178
|
-
// if (config.onClientTokenCallback) {
|
|
179
|
-
// config.onClientTokenCallback(resumeHandler);
|
|
180
|
-
// }
|
|
181
|
-
// });
|
|
137
|
+
export const PrimerNativeMapping: IPrimer = {
|
|
182
138
|
|
|
183
|
-
|
|
184
|
-
|
|
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
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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.
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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
|
-
|
|
207
|
-
|
|
208
|
-
config.onDismiss();
|
|
209
|
-
}
|
|
210
|
-
});
|
|
161
|
+
showVaultManager(clientToken: string, config: IPrimerConfig): void {
|
|
162
|
+
RNPrimer.configure(config.settings || null, config.theme || null);
|
|
211
163
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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');
|