@primer-io/react-native 0.12.5 → 0.13.0-beta.3
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 -1
- package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +83 -0
- package/android/src/main/java/com/primerioreactnative/PrimerHeadlessUniversalCheckout.kt +201 -0
- package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +3 -3
- 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/datamodels/PrimerSettingsRN.kt +3 -4
- 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/ios/{PrimerRN+PrimerDelegate.swift → Core/PrimerRN+PrimerDelegate.swift} +4 -3
- package/ios/{ReactNative.m → Core/PrimerRN.m} +1 -1
- package/ios/{PrimerRN.swift → Core/PrimerRN.swift} +26 -24
- package/ios/{ReactNative-Bridging-Header.h → Core/ReactNative-Bridging-Header.h} +2 -0
- package/ios/DataModels/PrimerErrorRN.swift +32 -2
- package/ios/DataModels/PrimerSettingsRN.swift +1 -11
- 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 +117 -0
- package/lib/commonjs/Primer.js +2 -1
- 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/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +14 -0
- package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
- package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +73 -0
- package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +119 -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 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/Primer.js +1 -1
- 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/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +5 -0
- package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
- package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +64 -0
- package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +104 -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 +3 -1
- package/lib/module/index.js.map +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 +10 -0
- package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +14 -0
- package/lib/typescript/headless_checkout/types.d.ts +16 -0
- package/lib/typescript/index.d.ts +3 -1
- package/lib/typescript/models/primer-callbacks.d.ts +5 -6
- package/lib/typescript/models/primer-config.d.ts +2 -2
- package/lib/typescript/models/primer-settings.d.ts +1 -2
- package/package.json +1 -1
- package/primer-io-react-native.podspec +1 -1
- package/src/Primer.ts +3 -2
- package/src/PrimerInput.tsx +73 -0
- package/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tsx +2 -0
- package/src/headless_checkout/NativePrimerHeadlessUniversalCheckout.ts +94 -0
- package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +136 -0
- package/src/headless_checkout/types.ts +18 -0
- package/src/index.tsx +3 -1
- package/src/models/primer-callbacks.ts +6 -11
- package/src/models/primer-config.ts +1 -2
- package/src/models/primer-settings.ts +1 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["PrimerHeadlessUniversalCheckout.ts"],"names":["NativePrimerHeadlessUniversalCheckout","PrimerHeadlessUniversalCheckoutClass","constructor","callbacks","undefined","configureListeners","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\nclass PrimerHeadlessUniversalCheckoutClass {\n private callbacks: PrimerHeadlessUniversalCheckoutCallbacks | undefined;\n\n ///////////////////////////////////////////\n // Init\n ///////////////////////////////////////////\n constructor() {\n this.callbacks = undefined;\n this.configureListeners();\n }\n\n private configureListeners() {\n NativePrimerHeadlessUniversalCheckout.addListener(\n 'preparationStarted',\n () => {\n console.log('preparationStarted');\n this.callbacks?.onPreparationStarted?.();\n }\n );\n\n NativePrimerHeadlessUniversalCheckout.addListener(\n 'paymentMethodPresented',\n () => {\n console.log('paymentMethodPresented');\n this.callbacks?.onPaymentMethodPresented?.();\n }\n );\n\n NativePrimerHeadlessUniversalCheckout.addListener(\n 'tokenizationStarted',\n () => {\n console.log('tokenizationStarted');\n this.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 this.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 this.callbacks?.onFailure?.(err);\n }\n }\n );\n\n NativePrimerHeadlessUniversalCheckout.addListener('resume', (data) => {\n console.log('resume', data);\n this.callbacks?.onResumeSuccess?.(data.resumeToken);\n });\n\n NativePrimerHeadlessUniversalCheckout.addListener('error', (data) => {\n console.log('error', data);\n this.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 this.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 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,4 +1,6 @@
|
|
|
1
|
+
import PrimerHeadlessUniversalCheckout from './headless_checkout/PrimerHeadlessUniversalCheckout';
|
|
1
2
|
import { PrimerNativeMapping } from './Primer';
|
|
3
|
+
export * from './PrimerInput';
|
|
2
4
|
const Primer = PrimerNativeMapping;
|
|
3
|
-
export { Primer };
|
|
5
|
+
export { Primer, PrimerHeadlessUniversalCheckout as HeadlessUniversalCheckout };
|
|
4
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"]}
|
|
@@ -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,10 @@
|
|
|
1
|
+
declare type EventType = 'preparationStarted' | 'paymentMethodPresented' | 'tokenizationStarted' | 'tokenizationSucceeded' | 'resume' | 'error';
|
|
2
|
+
declare const NativePrimerHeadlessUniversalCheckout: {
|
|
3
|
+
addListener: (eventType: EventType, listener: (...args: any[]) => any) => void;
|
|
4
|
+
getAssetForPaymentMethod: (paymentMethodType: string, assetType: 'logo' | 'icon') => Promise<string>;
|
|
5
|
+
getAssetForCardNetwork: (cardNetwork: string, assetType: 'logo' | 'icon') => Promise<string>;
|
|
6
|
+
startWithClientToken(clientToken: string, settings: any): Promise<any>;
|
|
7
|
+
showPaymentMethod: (paymentMethod: string) => any;
|
|
8
|
+
resumeWithClientToken(resumeToken: string): void;
|
|
9
|
+
};
|
|
10
|
+
export default NativePrimerHeadlessUniversalCheckout;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PrimerSettings } from 'src/models/primer-settings';
|
|
2
|
+
import type { PrimerHeadlessUniversalCheckoutStartResponse, PrimerHeadlessUniversalCheckoutCallbacks } from './types';
|
|
3
|
+
declare class PrimerHeadlessUniversalCheckoutClass {
|
|
4
|
+
private callbacks;
|
|
5
|
+
constructor();
|
|
6
|
+
private configureListeners;
|
|
7
|
+
startWithClientToken(clientToken: string, settings: PrimerSettings & PrimerHeadlessUniversalCheckoutCallbacks): Promise<PrimerHeadlessUniversalCheckoutStartResponse>;
|
|
8
|
+
showPaymentMethod(paymentMethod: string): any;
|
|
9
|
+
resumeWithClientToken(resumeToken: string): void;
|
|
10
|
+
getAssetForPaymentMethod(paymentMethodType: string, assetType: 'logo' | 'icon'): Promise<string>;
|
|
11
|
+
getAssetForCardNetwork(cardNetwork: string, assetType: 'logo' | 'icon'): Promise<string>;
|
|
12
|
+
}
|
|
13
|
+
declare const PrimerHeadlessUniversalCheckout: PrimerHeadlessUniversalCheckoutClass;
|
|
14
|
+
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 };
|
|
@@ -3,11 +3,10 @@ import type { ClientSessionActionsRequest } from './client-session-actions-reque
|
|
|
3
3
|
import type { PaymentInstrumentToken } from './payment-instrument-token';
|
|
4
4
|
import type { PrimerError } from './primer-error';
|
|
5
5
|
import type { PrimerResumeHandler } from './primer-request';
|
|
6
|
-
export declare type OnTokenizeSuccessCallback = (
|
|
7
|
-
export declare type
|
|
8
|
-
export declare type OnClientSessionActionsCallback = (request: ClientSessionActionsRequest, resumeHandler: PrimerResumeHandler) => void;
|
|
6
|
+
export declare type OnTokenizeSuccessCallback = (req: PaymentInstrumentToken, completion: PrimerResumeHandler) => void;
|
|
7
|
+
export declare type OnClientSessionActionsCallback = (req: ClientSessionActionsRequest, completion: PrimerResumeHandler) => void;
|
|
9
8
|
export declare type OnDataChangeCallback = (req: ActionRequest, completion: PrimerResumeHandler) => void;
|
|
10
|
-
export declare type OnTokenAddedToVaultCallback = (
|
|
9
|
+
export declare type OnTokenAddedToVaultCallback = (data: PaymentInstrumentToken) => void;
|
|
11
10
|
export declare type OnDismissCallback = () => void;
|
|
12
|
-
export declare type OnPrimerErrorCallback = (
|
|
13
|
-
export declare type OnSavedPaymentInstrumentsFetchedCallback = (
|
|
11
|
+
export declare type OnPrimerErrorCallback = (data: PrimerError) => void;
|
|
12
|
+
export declare type OnSavedPaymentInstrumentsFetchedCallback = (data: PaymentInstrumentToken[]) => void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { OnClientSessionActionsCallback, OnDismissCallback, OnPrimerErrorCallback,
|
|
1
|
+
import type { OnClientSessionActionsCallback, OnDismissCallback, OnPrimerErrorCallback, OnSavedPaymentInstrumentsFetchedCallback, OnTokenAddedToVaultCallback, OnTokenizeSuccessCallback } from './primer-callbacks';
|
|
2
2
|
import type { PrimerSettings } from './primer-settings';
|
|
3
3
|
import type { PrimerTheme } from './primer-theme';
|
|
4
4
|
export declare type PrimerConfig = IPrimerConfig;
|
|
@@ -15,7 +15,7 @@ interface IPrimerConfig {
|
|
|
15
15
|
* Use this callback to grab a Primer payment instrument token and complete a payment.
|
|
16
16
|
*/
|
|
17
17
|
onTokenizeSuccess?: OnTokenizeSuccessCallback;
|
|
18
|
-
onResumeSuccess?:
|
|
18
|
+
onResumeSuccess?: OnTokenizeSuccessCallback;
|
|
19
19
|
/**
|
|
20
20
|
* Use this callback to perform some action when a payment instrument was saved to Primer.
|
|
21
21
|
*/
|
|
@@ -40,8 +40,7 @@ interface IOptions {
|
|
|
40
40
|
isResultScreenEnabled?: boolean;
|
|
41
41
|
isLoadingScreenEnabled?: boolean;
|
|
42
42
|
isFullScreenEnabled?: boolean;
|
|
43
|
-
|
|
44
|
-
is3DSDevelopmentModeEnabled?: boolean;
|
|
43
|
+
isThreeDsEnabled?: boolean;
|
|
45
44
|
locale?: string;
|
|
46
45
|
ios?: IIosOptions;
|
|
47
46
|
android?: IAndroidOptions;
|
package/package.json
CHANGED
package/src/Primer.ts
CHANGED
|
@@ -6,7 +6,6 @@ import type {
|
|
|
6
6
|
OnClientSessionActionsCallback,
|
|
7
7
|
OnDismissCallback,
|
|
8
8
|
OnPrimerErrorCallback,
|
|
9
|
-
OnResumeSuccessCallback,
|
|
10
9
|
OnTokenAddedToVaultCallback,
|
|
11
10
|
OnTokenizeSuccessCallback,
|
|
12
11
|
} from './models/primer-callbacks';
|
|
@@ -56,6 +55,8 @@ export const PrimerNativeMapping: IPrimer = {
|
|
|
56
55
|
},
|
|
57
56
|
};
|
|
58
57
|
|
|
58
|
+
//
|
|
59
|
+
|
|
59
60
|
function configure(config: PrimerConfig): void {
|
|
60
61
|
configureTheme(config.theme);
|
|
61
62
|
configureSettings(config.settings);
|
|
@@ -160,7 +161,7 @@ function configureOnClientSessionActions(
|
|
|
160
161
|
}
|
|
161
162
|
|
|
162
163
|
function configureOnResumeSuccess(
|
|
163
|
-
callback:
|
|
164
|
+
callback: OnTokenizeSuccessCallback = (_, __) => {}
|
|
164
165
|
) {
|
|
165
166
|
NativeModule.configureOnResumeSuccess((paymentMethodToken: any) => {
|
|
166
167
|
try {
|
|
@@ -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
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { NativeEventEmitter, NativeModules } from 'react-native';
|
|
2
|
+
|
|
3
|
+
const { PrimerHeadlessUniversalCheckout } = NativeModules;
|
|
4
|
+
|
|
5
|
+
const eventEmitter = new NativeEventEmitter(PrimerHeadlessUniversalCheckout);
|
|
6
|
+
|
|
7
|
+
type EventType =
|
|
8
|
+
| 'preparationStarted'
|
|
9
|
+
| 'paymentMethodPresented'
|
|
10
|
+
| 'tokenizationStarted'
|
|
11
|
+
| 'tokenizationSucceeded'
|
|
12
|
+
| 'resume'
|
|
13
|
+
| 'error';
|
|
14
|
+
|
|
15
|
+
const NativePrimerHeadlessUniversalCheckout = {
|
|
16
|
+
///////////////////////////////////////////
|
|
17
|
+
// Event Emitter
|
|
18
|
+
///////////////////////////////////////////
|
|
19
|
+
addListener: (eventType: EventType, listener: (...args: any[]) => any) => {
|
|
20
|
+
eventEmitter.addListener(eventType, listener);
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
///////////////////////////////////////////
|
|
24
|
+
// Native API
|
|
25
|
+
///////////////////////////////////////////
|
|
26
|
+
getAssetForPaymentMethod: (
|
|
27
|
+
paymentMethodType: string,
|
|
28
|
+
assetType: 'logo' | 'icon'
|
|
29
|
+
): Promise<string> => {
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
try {
|
|
32
|
+
PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(
|
|
33
|
+
paymentMethodType,
|
|
34
|
+
assetType,
|
|
35
|
+
(err: Error) => {
|
|
36
|
+
reject(err);
|
|
37
|
+
},
|
|
38
|
+
(url: string) => {
|
|
39
|
+
resolve(url);
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
} catch (e) {
|
|
43
|
+
reject(e);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
getAssetForCardNetwork: (
|
|
49
|
+
cardNetwork: string,
|
|
50
|
+
assetType: 'logo' | 'icon'
|
|
51
|
+
): Promise<string> => {
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
try {
|
|
54
|
+
PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(
|
|
55
|
+
cardNetwork,
|
|
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
|
+
startWithClientToken(clientToken: string, settings: any): Promise<any> {
|
|
71
|
+
return new Promise((resolve, reject) => {
|
|
72
|
+
PrimerHeadlessUniversalCheckout.startWithClientToken(
|
|
73
|
+
clientToken,
|
|
74
|
+
JSON.stringify(settings),
|
|
75
|
+
(err: Error) => {
|
|
76
|
+
console.error(err);
|
|
77
|
+
reject(err);
|
|
78
|
+
},
|
|
79
|
+
(paymentMethodTypes: string[]) => {
|
|
80
|
+
resolve({ paymentMethodTypes });
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
showPaymentMethod: (paymentMethod: string) =>
|
|
87
|
+
PrimerHeadlessUniversalCheckout.showPaymentMethod(paymentMethod),
|
|
88
|
+
|
|
89
|
+
resumeWithClientToken(resumeToken: string) {
|
|
90
|
+
PrimerHeadlessUniversalCheckout.resumeWithClientToken(resumeToken);
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
export default NativePrimerHeadlessUniversalCheckout;
|
|
@@ -0,0 +1,136 @@
|
|
|
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
|
+
class PrimerHeadlessUniversalCheckoutClass {
|
|
11
|
+
private callbacks: PrimerHeadlessUniversalCheckoutCallbacks | undefined;
|
|
12
|
+
|
|
13
|
+
///////////////////////////////////////////
|
|
14
|
+
// Init
|
|
15
|
+
///////////////////////////////////////////
|
|
16
|
+
constructor() {
|
|
17
|
+
this.callbacks = undefined;
|
|
18
|
+
this.configureListeners();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private configureListeners() {
|
|
22
|
+
NativePrimerHeadlessUniversalCheckout.addListener(
|
|
23
|
+
'preparationStarted',
|
|
24
|
+
() => {
|
|
25
|
+
console.log('preparationStarted');
|
|
26
|
+
this.callbacks?.onPreparationStarted?.();
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
NativePrimerHeadlessUniversalCheckout.addListener(
|
|
31
|
+
'paymentMethodPresented',
|
|
32
|
+
() => {
|
|
33
|
+
console.log('paymentMethodPresented');
|
|
34
|
+
this.callbacks?.onPaymentMethodPresented?.();
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
NativePrimerHeadlessUniversalCheckout.addListener(
|
|
39
|
+
'tokenizationStarted',
|
|
40
|
+
() => {
|
|
41
|
+
console.log('tokenizationStarted');
|
|
42
|
+
this.callbacks?.onTokenizeStart?.();
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
NativePrimerHeadlessUniversalCheckout.addListener(
|
|
47
|
+
'tokenizationSucceeded',
|
|
48
|
+
(data) => {
|
|
49
|
+
console.log('tokenizationSucceeded', data);
|
|
50
|
+
|
|
51
|
+
if (data.paymentMethodToken) {
|
|
52
|
+
const paymentMethodTokenObj: PaymentInstrumentToken = JSON.parse(
|
|
53
|
+
data.paymentMethodToken
|
|
54
|
+
);
|
|
55
|
+
this.callbacks?.onTokenizeSuccess?.(paymentMethodTokenObj);
|
|
56
|
+
} else {
|
|
57
|
+
const err: PrimerError = {
|
|
58
|
+
name: 'ParseJsonFailed',
|
|
59
|
+
description: 'Failed to parse payment method token',
|
|
60
|
+
};
|
|
61
|
+
//@ts-ignore
|
|
62
|
+
this.callbacks?.onFailure?.(err);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
NativePrimerHeadlessUniversalCheckout.addListener('resume', (data) => {
|
|
68
|
+
console.log('resume', data);
|
|
69
|
+
this.callbacks?.onResumeSuccess?.(data.resumeToken);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
NativePrimerHeadlessUniversalCheckout.addListener('error', (data) => {
|
|
73
|
+
console.log('error', data);
|
|
74
|
+
this.callbacks?.onFailure?.(data.error);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
///////////////////////////////////////////
|
|
79
|
+
// API
|
|
80
|
+
///////////////////////////////////////////
|
|
81
|
+
startWithClientToken(
|
|
82
|
+
clientToken: string,
|
|
83
|
+
settings: PrimerSettings & PrimerHeadlessUniversalCheckoutCallbacks
|
|
84
|
+
): Promise<PrimerHeadlessUniversalCheckoutStartResponse> {
|
|
85
|
+
// Copy callback
|
|
86
|
+
this.callbacks = {
|
|
87
|
+
onPreparationStarted: settings.onPreparationStarted,
|
|
88
|
+
onPaymentMethodPresented: settings.onPaymentMethodPresented,
|
|
89
|
+
onTokenizeStart: settings.onTokenizeStart,
|
|
90
|
+
onTokenizeSuccess: settings.onTokenizeSuccess,
|
|
91
|
+
onResumeSuccess: settings.onResumeSuccess,
|
|
92
|
+
onFailure: settings.onFailure,
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
return NativePrimerHeadlessUniversalCheckout.startWithClientToken(
|
|
96
|
+
clientToken,
|
|
97
|
+
settings
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
showPaymentMethod(paymentMethod: string) {
|
|
102
|
+
return NativePrimerHeadlessUniversalCheckout.showPaymentMethod(
|
|
103
|
+
paymentMethod
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
resumeWithClientToken(resumeToken: string) {
|
|
108
|
+
return NativePrimerHeadlessUniversalCheckout.resumeWithClientToken(
|
|
109
|
+
resumeToken
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
getAssetForPaymentMethod(
|
|
114
|
+
paymentMethodType: string,
|
|
115
|
+
assetType: 'logo' | 'icon'
|
|
116
|
+
): Promise<string> {
|
|
117
|
+
return NativePrimerHeadlessUniversalCheckout.getAssetForPaymentMethod(
|
|
118
|
+
paymentMethodType,
|
|
119
|
+
assetType
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
getAssetForCardNetwork(
|
|
124
|
+
cardNetwork: string,
|
|
125
|
+
assetType: 'logo' | 'icon'
|
|
126
|
+
): Promise<string> {
|
|
127
|
+
return NativePrimerHeadlessUniversalCheckout.getAssetForCardNetwork(
|
|
128
|
+
cardNetwork,
|
|
129
|
+
assetType
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const PrimerHeadlessUniversalCheckout = new PrimerHeadlessUniversalCheckoutClass();
|
|
135
|
+
|
|
136
|
+
export default PrimerHeadlessUniversalCheckout;
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
}
|
package/src/index.tsx
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import PrimerHeadlessUniversalCheckout from './headless_checkout/PrimerHeadlessUniversalCheckout';
|
|
1
2
|
import type { IPrimer } from './models/primer';
|
|
2
3
|
import { PrimerNativeMapping } from './Primer';
|
|
4
|
+
export * from './PrimerInput';
|
|
3
5
|
|
|
4
6
|
const Primer: IPrimer = PrimerNativeMapping;
|
|
5
7
|
|
|
6
|
-
export { Primer };
|
|
8
|
+
export { Primer, PrimerHeadlessUniversalCheckout as HeadlessUniversalCheckout };
|
|
@@ -5,18 +5,13 @@ import type { PrimerError } from './primer-error';
|
|
|
5
5
|
import type { PrimerResumeHandler } from './primer-request';
|
|
6
6
|
|
|
7
7
|
export type OnTokenizeSuccessCallback = (
|
|
8
|
-
|
|
8
|
+
req: PaymentInstrumentToken,
|
|
9
9
|
completion: PrimerResumeHandler
|
|
10
10
|
) => void;
|
|
11
11
|
|
|
12
|
-
export type OnResumeSuccessCallback = (
|
|
13
|
-
resumeToken: string,
|
|
14
|
-
resumeHandler: PrimerResumeHandler
|
|
15
|
-
) => void;
|
|
16
|
-
|
|
17
12
|
export type OnClientSessionActionsCallback = (
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
req: ClientSessionActionsRequest,
|
|
14
|
+
completion: PrimerResumeHandler
|
|
20
15
|
) => void;
|
|
21
16
|
|
|
22
17
|
export type OnDataChangeCallback = (
|
|
@@ -25,13 +20,13 @@ export type OnDataChangeCallback = (
|
|
|
25
20
|
) => void;
|
|
26
21
|
|
|
27
22
|
export type OnTokenAddedToVaultCallback = (
|
|
28
|
-
|
|
23
|
+
data: PaymentInstrumentToken
|
|
29
24
|
) => void;
|
|
30
25
|
|
|
31
26
|
export type OnDismissCallback = () => void;
|
|
32
27
|
|
|
33
|
-
export type OnPrimerErrorCallback = (
|
|
28
|
+
export type OnPrimerErrorCallback = (data: PrimerError) => void;
|
|
34
29
|
|
|
35
30
|
export type OnSavedPaymentInstrumentsFetchedCallback = (
|
|
36
|
-
|
|
31
|
+
data: PaymentInstrumentToken[]
|
|
37
32
|
) => void;
|
|
@@ -2,7 +2,6 @@ import type {
|
|
|
2
2
|
OnClientSessionActionsCallback,
|
|
3
3
|
OnDismissCallback,
|
|
4
4
|
OnPrimerErrorCallback,
|
|
5
|
-
OnResumeSuccessCallback,
|
|
6
5
|
OnSavedPaymentInstrumentsFetchedCallback,
|
|
7
6
|
OnTokenAddedToVaultCallback,
|
|
8
7
|
OnTokenizeSuccessCallback,
|
|
@@ -25,7 +24,7 @@ interface IPrimerConfig {
|
|
|
25
24
|
*/
|
|
26
25
|
onTokenizeSuccess?: OnTokenizeSuccessCallback;
|
|
27
26
|
|
|
28
|
-
onResumeSuccess?:
|
|
27
|
+
onResumeSuccess?: OnTokenizeSuccessCallback;
|
|
29
28
|
|
|
30
29
|
/**
|
|
31
30
|
* Use this callback to perform some action when a payment instrument was saved to Primer.
|
|
@@ -46,8 +46,7 @@ interface IOptions {
|
|
|
46
46
|
isResultScreenEnabled?: boolean;
|
|
47
47
|
isLoadingScreenEnabled?: boolean;
|
|
48
48
|
isFullScreenEnabled?: boolean;
|
|
49
|
-
|
|
50
|
-
is3DSDevelopmentModeEnabled?: boolean;
|
|
49
|
+
isThreeDsEnabled?: boolean;
|
|
51
50
|
locale?: string;
|
|
52
51
|
ios?: IIosOptions;
|
|
53
52
|
android?: IAndroidOptions;
|