@greenpay_prod/3ds-sdk 0.1.1-qa.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/dist/index.d.mts +53 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.js +181 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +143 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +37 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
interface GreenPay3DSConfig {
|
|
2
|
+
teamId: string;
|
|
3
|
+
appId: string;
|
|
4
|
+
apiUrl?: string;
|
|
5
|
+
}
|
|
6
|
+
interface OrderData {
|
|
7
|
+
cardData: {
|
|
8
|
+
ed: string;
|
|
9
|
+
session: string;
|
|
10
|
+
};
|
|
11
|
+
sessionToken: string;
|
|
12
|
+
terminalId?: string;
|
|
13
|
+
}
|
|
14
|
+
interface ThreeDSSession {
|
|
15
|
+
id: string;
|
|
16
|
+
createdAt: number;
|
|
17
|
+
threeDSServer: {
|
|
18
|
+
transactionIdentifier: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
interface ThreeDSResult {
|
|
22
|
+
statusCode: number;
|
|
23
|
+
data: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
interface ThreeDSCallbacks {
|
|
26
|
+
onReady?: () => void;
|
|
27
|
+
onSuccess?: () => void;
|
|
28
|
+
onFailure?: (error: string) => void;
|
|
29
|
+
onError?: (error: Error | string) => void;
|
|
30
|
+
onStatusChange?: (status: string) => void;
|
|
31
|
+
}
|
|
32
|
+
interface ThreeDSPaymentCallbacks {
|
|
33
|
+
onReady?: () => void;
|
|
34
|
+
onSuccess?: (result: ThreeDSResult) => void;
|
|
35
|
+
onFailure?: (error: string) => void;
|
|
36
|
+
onError?: (error: Error | string) => void;
|
|
37
|
+
onStatusChange?: (status: string) => void;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare class GreenPay3DSError extends Error {
|
|
41
|
+
code: string;
|
|
42
|
+
constructor(message: string, code: string);
|
|
43
|
+
}
|
|
44
|
+
declare class GreenPay3DS {
|
|
45
|
+
private teamId;
|
|
46
|
+
private appId;
|
|
47
|
+
private apiUrl?;
|
|
48
|
+
constructor(config: GreenPay3DSConfig);
|
|
49
|
+
authenticate(sessionId: string, callbacks?: ThreeDSCallbacks): Promise<void>;
|
|
50
|
+
processPayment(orderData: OrderData, callbacks?: ThreeDSPaymentCallbacks): Promise<ThreeDSResult>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { GreenPay3DS, type GreenPay3DSConfig, GreenPay3DSError, type OrderData, type ThreeDSCallbacks, type ThreeDSPaymentCallbacks, type ThreeDSResult, type ThreeDSSession };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
interface GreenPay3DSConfig {
|
|
2
|
+
teamId: string;
|
|
3
|
+
appId: string;
|
|
4
|
+
apiUrl?: string;
|
|
5
|
+
}
|
|
6
|
+
interface OrderData {
|
|
7
|
+
cardData: {
|
|
8
|
+
ed: string;
|
|
9
|
+
session: string;
|
|
10
|
+
};
|
|
11
|
+
sessionToken: string;
|
|
12
|
+
terminalId?: string;
|
|
13
|
+
}
|
|
14
|
+
interface ThreeDSSession {
|
|
15
|
+
id: string;
|
|
16
|
+
createdAt: number;
|
|
17
|
+
threeDSServer: {
|
|
18
|
+
transactionIdentifier: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
interface ThreeDSResult {
|
|
22
|
+
statusCode: number;
|
|
23
|
+
data: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
interface ThreeDSCallbacks {
|
|
26
|
+
onReady?: () => void;
|
|
27
|
+
onSuccess?: () => void;
|
|
28
|
+
onFailure?: (error: string) => void;
|
|
29
|
+
onError?: (error: Error | string) => void;
|
|
30
|
+
onStatusChange?: (status: string) => void;
|
|
31
|
+
}
|
|
32
|
+
interface ThreeDSPaymentCallbacks {
|
|
33
|
+
onReady?: () => void;
|
|
34
|
+
onSuccess?: (result: ThreeDSResult) => void;
|
|
35
|
+
onFailure?: (error: string) => void;
|
|
36
|
+
onError?: (error: Error | string) => void;
|
|
37
|
+
onStatusChange?: (status: string) => void;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare class GreenPay3DSError extends Error {
|
|
41
|
+
code: string;
|
|
42
|
+
constructor(message: string, code: string);
|
|
43
|
+
}
|
|
44
|
+
declare class GreenPay3DS {
|
|
45
|
+
private teamId;
|
|
46
|
+
private appId;
|
|
47
|
+
private apiUrl?;
|
|
48
|
+
constructor(config: GreenPay3DSConfig);
|
|
49
|
+
authenticate(sessionId: string, callbacks?: ThreeDSCallbacks): Promise<void>;
|
|
50
|
+
processPayment(orderData: OrderData, callbacks?: ThreeDSPaymentCallbacks): Promise<ThreeDSResult>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { GreenPay3DS, type GreenPay3DSConfig, GreenPay3DSError, type OrderData, type ThreeDSCallbacks, type ThreeDSPaymentCallbacks, type ThreeDSResult, type ThreeDSSession };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
GreenPay3DS: () => GreenPay3DS,
|
|
34
|
+
GreenPay3DSError: () => GreenPay3DSError
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(index_exports);
|
|
37
|
+
|
|
38
|
+
// src/api.ts
|
|
39
|
+
async function createSession(apiUrl, cardData, sessionToken, terminalId) {
|
|
40
|
+
const requestBody = { cardData };
|
|
41
|
+
if (terminalId !== void 0 && terminalId !== "") {
|
|
42
|
+
requestBody.terminalId = terminalId;
|
|
43
|
+
}
|
|
44
|
+
const response = await fetch(`${apiUrl}/3ds/create-session`, {
|
|
45
|
+
method: "POST",
|
|
46
|
+
headers: {
|
|
47
|
+
"Content-Type": "application/json",
|
|
48
|
+
"session-token": sessionToken
|
|
49
|
+
},
|
|
50
|
+
body: JSON.stringify(requestBody)
|
|
51
|
+
});
|
|
52
|
+
const json = await response.json();
|
|
53
|
+
if (!response.ok || json.statusCode !== 200) {
|
|
54
|
+
throw new GreenPay3DSError(
|
|
55
|
+
json?.result?.error?.message || json?.message || "Failed to create 3DS session",
|
|
56
|
+
"CREATE_SESSION_FAILED"
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
return json.data;
|
|
60
|
+
}
|
|
61
|
+
async function retrieveSession(apiUrl, sessionId, cardData, sessionToken) {
|
|
62
|
+
const response = await fetch(`${apiUrl}/3ds/retrieve-session`, {
|
|
63
|
+
method: "POST",
|
|
64
|
+
headers: {
|
|
65
|
+
"Content-Type": "application/json",
|
|
66
|
+
"session-token": sessionToken
|
|
67
|
+
},
|
|
68
|
+
body: JSON.stringify({ sessionId, cardData })
|
|
69
|
+
});
|
|
70
|
+
const body = await response.json();
|
|
71
|
+
if (!response.ok || body.statusCode !== 200) {
|
|
72
|
+
throw new GreenPay3DSError(
|
|
73
|
+
body?.result?.error?.message || body?.message || "Failed to retrieve 3DS session",
|
|
74
|
+
"RETRIEVE_SESSION_FAILED"
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
return body;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// src/GreenPay3DS.ts
|
|
81
|
+
var GreenPay3DSError = class extends Error {
|
|
82
|
+
constructor(message, code) {
|
|
83
|
+
super(message);
|
|
84
|
+
this.name = "GreenPay3DSError";
|
|
85
|
+
this.code = code;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
var GreenPay3DS = class {
|
|
89
|
+
constructor(config) {
|
|
90
|
+
if (!config.teamId || !config.appId) {
|
|
91
|
+
throw new GreenPay3DSError(
|
|
92
|
+
"teamId and appId are required",
|
|
93
|
+
"INVALID_CONFIG"
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
this.teamId = config.teamId;
|
|
97
|
+
this.appId = config.appId;
|
|
98
|
+
this.apiUrl = config.apiUrl;
|
|
99
|
+
}
|
|
100
|
+
async authenticate(sessionId, callbacks) {
|
|
101
|
+
if (!sessionId) {
|
|
102
|
+
throw new GreenPay3DSError("sessionId is required", "INVALID_SESSION");
|
|
103
|
+
}
|
|
104
|
+
callbacks?.onStatusChange?.("Loading 3DS authentication...");
|
|
105
|
+
const { loadEvervault } = await import("@evervault/js");
|
|
106
|
+
const ev = await loadEvervault(this.teamId, this.appId);
|
|
107
|
+
callbacks?.onStatusChange?.("Initializing 3DS challenge...");
|
|
108
|
+
return new Promise((resolve, reject) => {
|
|
109
|
+
const threeDSecure = ev.ui.threeDSecure(sessionId);
|
|
110
|
+
threeDSecure.on("ready", () => {
|
|
111
|
+
callbacks?.onReady?.();
|
|
112
|
+
callbacks?.onStatusChange?.(
|
|
113
|
+
"Challenge ready. If frictionless it will complete automatically, otherwise complete the verification prompt."
|
|
114
|
+
);
|
|
115
|
+
});
|
|
116
|
+
threeDSecure.on("success", () => {
|
|
117
|
+
callbacks?.onSuccess?.();
|
|
118
|
+
callbacks?.onStatusChange?.("Authentication successful");
|
|
119
|
+
resolve();
|
|
120
|
+
});
|
|
121
|
+
threeDSecure.on("failure", () => {
|
|
122
|
+
const msg = "3DS authentication was rejected by the issuer";
|
|
123
|
+
callbacks?.onFailure?.(msg);
|
|
124
|
+
callbacks?.onStatusChange?.("Authentication failed");
|
|
125
|
+
reject(new GreenPay3DSError(msg, "AUTHENTICATION_FAILED"));
|
|
126
|
+
});
|
|
127
|
+
threeDSecure.on("error", (err) => {
|
|
128
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
129
|
+
callbacks?.onError?.(err instanceof Error ? err : msg);
|
|
130
|
+
callbacks?.onStatusChange?.("Authentication error");
|
|
131
|
+
reject(new GreenPay3DSError(msg, "AUTHENTICATION_ERROR"));
|
|
132
|
+
});
|
|
133
|
+
threeDSecure.mount();
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
async processPayment(orderData, callbacks) {
|
|
137
|
+
if (!this.apiUrl) {
|
|
138
|
+
throw new GreenPay3DSError(
|
|
139
|
+
"apiUrl is required in config for processPayment",
|
|
140
|
+
"INVALID_CONFIG"
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
const { cardData, sessionToken, terminalId } = orderData;
|
|
144
|
+
if (!cardData?.ed || !cardData?.session || !sessionToken) {
|
|
145
|
+
throw new GreenPay3DSError(
|
|
146
|
+
"cardData.ed, cardData.session, and sessionToken are required",
|
|
147
|
+
"INVALID_ORDER_DATA"
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
callbacks?.onStatusChange?.("Creating 3DS session...");
|
|
151
|
+
const session = await createSession(
|
|
152
|
+
this.apiUrl,
|
|
153
|
+
cardData,
|
|
154
|
+
sessionToken,
|
|
155
|
+
terminalId
|
|
156
|
+
);
|
|
157
|
+
callbacks?.onStatusChange?.("Starting 3DS authentication...");
|
|
158
|
+
await this.authenticate(session.id, {
|
|
159
|
+
onReady: callbacks?.onReady,
|
|
160
|
+
onFailure: callbacks?.onFailure,
|
|
161
|
+
onError: callbacks?.onError,
|
|
162
|
+
onStatusChange: callbacks?.onStatusChange
|
|
163
|
+
});
|
|
164
|
+
callbacks?.onStatusChange?.("Retrieving authentication result...");
|
|
165
|
+
const result = await retrieveSession(
|
|
166
|
+
this.apiUrl,
|
|
167
|
+
session.id,
|
|
168
|
+
cardData,
|
|
169
|
+
sessionToken
|
|
170
|
+
);
|
|
171
|
+
callbacks?.onSuccess?.(result);
|
|
172
|
+
callbacks?.onStatusChange?.("3DS authentication complete");
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
177
|
+
0 && (module.exports = {
|
|
178
|
+
GreenPay3DS,
|
|
179
|
+
GreenPay3DSError
|
|
180
|
+
});
|
|
181
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/api.ts","../src/GreenPay3DS.ts"],"sourcesContent":["export { GreenPay3DS, GreenPay3DSError } from './GreenPay3DS'\nexport type {\n GreenPay3DSConfig,\n ThreeDSCallbacks,\n ThreeDSPaymentCallbacks,\n OrderData,\n ThreeDSSession,\n ThreeDSResult,\n} from './types'\n","import type { ThreeDSSession, ThreeDSResult } from './types'\nimport { GreenPay3DSError } from './GreenPay3DS'\n\nexport async function createSession(\n apiUrl: string,\n cardData: { ed: string; session: string },\n sessionToken: string,\n terminalId?: string\n): Promise<ThreeDSSession> {\n const requestBody: Record<string, unknown> = { cardData }\n if (terminalId !== undefined && terminalId !== '') {\n requestBody.terminalId = terminalId\n }\n\n const response = await fetch(`${apiUrl}/3ds/create-session`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'session-token': sessionToken,\n },\n body: JSON.stringify(requestBody),\n })\n\n const json = await response.json()\n\n if (!response.ok || json.statusCode !== 200) {\n throw new GreenPay3DSError(\n json?.result?.error?.message ||\n json?.message ||\n 'Failed to create 3DS session',\n 'CREATE_SESSION_FAILED'\n )\n }\n\n return json.data\n}\n\nexport async function retrieveSession(\n apiUrl: string,\n sessionId: string,\n cardData: { ed: string; session: string },\n sessionToken: string\n): Promise<ThreeDSResult> {\n const response = await fetch(`${apiUrl}/3ds/retrieve-session`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'session-token': sessionToken,\n },\n body: JSON.stringify({ sessionId, cardData }),\n })\n\n const body = await response.json()\n\n if (!response.ok || body.statusCode !== 200) {\n throw new GreenPay3DSError(\n body?.result?.error?.message || body?.message || 'Failed to retrieve 3DS session',\n 'RETRIEVE_SESSION_FAILED'\n )\n }\n\n return body\n}\n","import type {\n GreenPay3DSConfig,\n ThreeDSCallbacks,\n ThreeDSPaymentCallbacks,\n OrderData,\n ThreeDSResult,\n} from './types'\nimport { createSession, retrieveSession } from './api'\n\nexport class GreenPay3DSError extends Error {\n code: string\n\n constructor(message: string, code: string) {\n super(message)\n this.name = 'GreenPay3DSError'\n this.code = code\n }\n}\n\nexport class GreenPay3DS {\n private teamId: string\n private appId: string\n private apiUrl?: string\n\n constructor(config: GreenPay3DSConfig) {\n if (!config.teamId || !config.appId) {\n throw new GreenPay3DSError(\n 'teamId and appId are required',\n 'INVALID_CONFIG'\n )\n }\n this.teamId = config.teamId\n this.appId = config.appId\n this.apiUrl = config.apiUrl\n }\n\n async authenticate(\n sessionId: string,\n callbacks?: ThreeDSCallbacks\n ): Promise<void> {\n if (!sessionId) {\n throw new GreenPay3DSError('sessionId is required', 'INVALID_SESSION')\n }\n\n callbacks?.onStatusChange?.('Loading 3DS authentication...')\n\n const { loadEvervault } = await import('@evervault/js')\n const ev = await loadEvervault(this.teamId, this.appId)\n\n callbacks?.onStatusChange?.('Initializing 3DS challenge...')\n\n return new Promise<void>((resolve, reject) => {\n const threeDSecure = ev.ui.threeDSecure(sessionId)\n\n threeDSecure.on('ready', () => {\n callbacks?.onReady?.()\n callbacks?.onStatusChange?.(\n 'Challenge ready. If frictionless it will complete automatically, otherwise complete the verification prompt.'\n )\n })\n\n threeDSecure.on('success', () => {\n callbacks?.onSuccess?.()\n callbacks?.onStatusChange?.('Authentication successful')\n resolve()\n })\n\n threeDSecure.on('failure', () => {\n const msg = '3DS authentication was rejected by the issuer'\n callbacks?.onFailure?.(msg)\n callbacks?.onStatusChange?.('Authentication failed')\n reject(new GreenPay3DSError(msg, 'AUTHENTICATION_FAILED'))\n })\n\n threeDSecure.on('error', (err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err)\n callbacks?.onError?.(err instanceof Error ? err : msg)\n callbacks?.onStatusChange?.('Authentication error')\n reject(new GreenPay3DSError(msg, 'AUTHENTICATION_ERROR'))\n })\n\n threeDSecure.mount()\n })\n }\n\n async processPayment(\n orderData: OrderData,\n callbacks?: ThreeDSPaymentCallbacks\n ): Promise<ThreeDSResult> {\n if (!this.apiUrl) {\n throw new GreenPay3DSError(\n 'apiUrl is required in config for processPayment',\n 'INVALID_CONFIG'\n )\n }\n\n const { cardData, sessionToken, terminalId } = orderData\n if (!cardData?.ed || !cardData?.session || !sessionToken) {\n throw new GreenPay3DSError(\n 'cardData.ed, cardData.session, and sessionToken are required',\n 'INVALID_ORDER_DATA'\n )\n }\n\n callbacks?.onStatusChange?.('Creating 3DS session...')\n const session = await createSession(\n this.apiUrl,\n cardData,\n sessionToken,\n terminalId\n )\n\n callbacks?.onStatusChange?.('Starting 3DS authentication...')\n await this.authenticate(session.id, {\n onReady: callbacks?.onReady,\n onFailure: callbacks?.onFailure,\n onError: callbacks?.onError,\n onStatusChange: callbacks?.onStatusChange,\n })\n\n callbacks?.onStatusChange?.('Retrieving authentication result...')\n const result = await retrieveSession(\n this.apiUrl,\n session.id,\n cardData,\n sessionToken\n )\n\n callbacks?.onSuccess?.(result)\n callbacks?.onStatusChange?.('3DS authentication complete')\n return result\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// src/api.ts
|
|
2
|
+
async function createSession(apiUrl, cardData, sessionToken, terminalId) {
|
|
3
|
+
const requestBody = { cardData };
|
|
4
|
+
if (terminalId !== void 0 && terminalId !== "") {
|
|
5
|
+
requestBody.terminalId = terminalId;
|
|
6
|
+
}
|
|
7
|
+
const response = await fetch(`${apiUrl}/3ds/create-session`, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: {
|
|
10
|
+
"Content-Type": "application/json",
|
|
11
|
+
"session-token": sessionToken
|
|
12
|
+
},
|
|
13
|
+
body: JSON.stringify(requestBody)
|
|
14
|
+
});
|
|
15
|
+
const json = await response.json();
|
|
16
|
+
if (!response.ok || json.statusCode !== 200) {
|
|
17
|
+
throw new GreenPay3DSError(
|
|
18
|
+
json?.result?.error?.message || json?.message || "Failed to create 3DS session",
|
|
19
|
+
"CREATE_SESSION_FAILED"
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
return json.data;
|
|
23
|
+
}
|
|
24
|
+
async function retrieveSession(apiUrl, sessionId, cardData, sessionToken) {
|
|
25
|
+
const response = await fetch(`${apiUrl}/3ds/retrieve-session`, {
|
|
26
|
+
method: "POST",
|
|
27
|
+
headers: {
|
|
28
|
+
"Content-Type": "application/json",
|
|
29
|
+
"session-token": sessionToken
|
|
30
|
+
},
|
|
31
|
+
body: JSON.stringify({ sessionId, cardData })
|
|
32
|
+
});
|
|
33
|
+
const body = await response.json();
|
|
34
|
+
if (!response.ok || body.statusCode !== 200) {
|
|
35
|
+
throw new GreenPay3DSError(
|
|
36
|
+
body?.result?.error?.message || body?.message || "Failed to retrieve 3DS session",
|
|
37
|
+
"RETRIEVE_SESSION_FAILED"
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
return body;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/GreenPay3DS.ts
|
|
44
|
+
var GreenPay3DSError = class extends Error {
|
|
45
|
+
constructor(message, code) {
|
|
46
|
+
super(message);
|
|
47
|
+
this.name = "GreenPay3DSError";
|
|
48
|
+
this.code = code;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
var GreenPay3DS = class {
|
|
52
|
+
constructor(config) {
|
|
53
|
+
if (!config.teamId || !config.appId) {
|
|
54
|
+
throw new GreenPay3DSError(
|
|
55
|
+
"teamId and appId are required",
|
|
56
|
+
"INVALID_CONFIG"
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
this.teamId = config.teamId;
|
|
60
|
+
this.appId = config.appId;
|
|
61
|
+
this.apiUrl = config.apiUrl;
|
|
62
|
+
}
|
|
63
|
+
async authenticate(sessionId, callbacks) {
|
|
64
|
+
if (!sessionId) {
|
|
65
|
+
throw new GreenPay3DSError("sessionId is required", "INVALID_SESSION");
|
|
66
|
+
}
|
|
67
|
+
callbacks?.onStatusChange?.("Loading 3DS authentication...");
|
|
68
|
+
const { loadEvervault } = await import("@evervault/js");
|
|
69
|
+
const ev = await loadEvervault(this.teamId, this.appId);
|
|
70
|
+
callbacks?.onStatusChange?.("Initializing 3DS challenge...");
|
|
71
|
+
return new Promise((resolve, reject) => {
|
|
72
|
+
const threeDSecure = ev.ui.threeDSecure(sessionId);
|
|
73
|
+
threeDSecure.on("ready", () => {
|
|
74
|
+
callbacks?.onReady?.();
|
|
75
|
+
callbacks?.onStatusChange?.(
|
|
76
|
+
"Challenge ready. If frictionless it will complete automatically, otherwise complete the verification prompt."
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
threeDSecure.on("success", () => {
|
|
80
|
+
callbacks?.onSuccess?.();
|
|
81
|
+
callbacks?.onStatusChange?.("Authentication successful");
|
|
82
|
+
resolve();
|
|
83
|
+
});
|
|
84
|
+
threeDSecure.on("failure", () => {
|
|
85
|
+
const msg = "3DS authentication was rejected by the issuer";
|
|
86
|
+
callbacks?.onFailure?.(msg);
|
|
87
|
+
callbacks?.onStatusChange?.("Authentication failed");
|
|
88
|
+
reject(new GreenPay3DSError(msg, "AUTHENTICATION_FAILED"));
|
|
89
|
+
});
|
|
90
|
+
threeDSecure.on("error", (err) => {
|
|
91
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
92
|
+
callbacks?.onError?.(err instanceof Error ? err : msg);
|
|
93
|
+
callbacks?.onStatusChange?.("Authentication error");
|
|
94
|
+
reject(new GreenPay3DSError(msg, "AUTHENTICATION_ERROR"));
|
|
95
|
+
});
|
|
96
|
+
threeDSecure.mount();
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
async processPayment(orderData, callbacks) {
|
|
100
|
+
if (!this.apiUrl) {
|
|
101
|
+
throw new GreenPay3DSError(
|
|
102
|
+
"apiUrl is required in config for processPayment",
|
|
103
|
+
"INVALID_CONFIG"
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
const { cardData, sessionToken, terminalId } = orderData;
|
|
107
|
+
if (!cardData?.ed || !cardData?.session || !sessionToken) {
|
|
108
|
+
throw new GreenPay3DSError(
|
|
109
|
+
"cardData.ed, cardData.session, and sessionToken are required",
|
|
110
|
+
"INVALID_ORDER_DATA"
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
callbacks?.onStatusChange?.("Creating 3DS session...");
|
|
114
|
+
const session = await createSession(
|
|
115
|
+
this.apiUrl,
|
|
116
|
+
cardData,
|
|
117
|
+
sessionToken,
|
|
118
|
+
terminalId
|
|
119
|
+
);
|
|
120
|
+
callbacks?.onStatusChange?.("Starting 3DS authentication...");
|
|
121
|
+
await this.authenticate(session.id, {
|
|
122
|
+
onReady: callbacks?.onReady,
|
|
123
|
+
onFailure: callbacks?.onFailure,
|
|
124
|
+
onError: callbacks?.onError,
|
|
125
|
+
onStatusChange: callbacks?.onStatusChange
|
|
126
|
+
});
|
|
127
|
+
callbacks?.onStatusChange?.("Retrieving authentication result...");
|
|
128
|
+
const result = await retrieveSession(
|
|
129
|
+
this.apiUrl,
|
|
130
|
+
session.id,
|
|
131
|
+
cardData,
|
|
132
|
+
sessionToken
|
|
133
|
+
);
|
|
134
|
+
callbacks?.onSuccess?.(result);
|
|
135
|
+
callbacks?.onStatusChange?.("3DS authentication complete");
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
export {
|
|
140
|
+
GreenPay3DS,
|
|
141
|
+
GreenPay3DSError
|
|
142
|
+
};
|
|
143
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api.ts","../src/GreenPay3DS.ts"],"sourcesContent":["import type { ThreeDSSession, ThreeDSResult } from './types'\nimport { GreenPay3DSError } from './GreenPay3DS'\n\nexport async function createSession(\n apiUrl: string,\n cardData: { ed: string; session: string },\n sessionToken: string,\n terminalId?: string\n): Promise<ThreeDSSession> {\n const requestBody: Record<string, unknown> = { cardData }\n if (terminalId !== undefined && terminalId !== '') {\n requestBody.terminalId = terminalId\n }\n\n const response = await fetch(`${apiUrl}/3ds/create-session`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'session-token': sessionToken,\n },\n body: JSON.stringify(requestBody),\n })\n\n const json = await response.json()\n\n if (!response.ok || json.statusCode !== 200) {\n throw new GreenPay3DSError(\n json?.result?.error?.message ||\n json?.message ||\n 'Failed to create 3DS session',\n 'CREATE_SESSION_FAILED'\n )\n }\n\n return json.data\n}\n\nexport async function retrieveSession(\n apiUrl: string,\n sessionId: string,\n cardData: { ed: string; session: string },\n sessionToken: string\n): Promise<ThreeDSResult> {\n const response = await fetch(`${apiUrl}/3ds/retrieve-session`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'session-token': sessionToken,\n },\n body: JSON.stringify({ sessionId, cardData }),\n })\n\n const body = await response.json()\n\n if (!response.ok || body.statusCode !== 200) {\n throw new GreenPay3DSError(\n body?.result?.error?.message || body?.message || 'Failed to retrieve 3DS session',\n 'RETRIEVE_SESSION_FAILED'\n )\n }\n\n return body\n}\n","import type {\n GreenPay3DSConfig,\n ThreeDSCallbacks,\n ThreeDSPaymentCallbacks,\n OrderData,\n ThreeDSResult,\n} from './types'\nimport { createSession, retrieveSession } from './api'\n\nexport class GreenPay3DSError extends Error {\n code: string\n\n constructor(message: string, code: string) {\n super(message)\n this.name = 'GreenPay3DSError'\n this.code = code\n }\n}\n\nexport class GreenPay3DS {\n private teamId: string\n private appId: string\n private apiUrl?: string\n\n constructor(config: GreenPay3DSConfig) {\n if (!config.teamId || !config.appId) {\n throw new GreenPay3DSError(\n 'teamId and appId are required',\n 'INVALID_CONFIG'\n )\n }\n this.teamId = config.teamId\n this.appId = config.appId\n this.apiUrl = config.apiUrl\n }\n\n async authenticate(\n sessionId: string,\n callbacks?: ThreeDSCallbacks\n ): Promise<void> {\n if (!sessionId) {\n throw new GreenPay3DSError('sessionId is required', 'INVALID_SESSION')\n }\n\n callbacks?.onStatusChange?.('Loading 3DS authentication...')\n\n const { loadEvervault } = await import('@evervault/js')\n const ev = await loadEvervault(this.teamId, this.appId)\n\n callbacks?.onStatusChange?.('Initializing 3DS challenge...')\n\n return new Promise<void>((resolve, reject) => {\n const threeDSecure = ev.ui.threeDSecure(sessionId)\n\n threeDSecure.on('ready', () => {\n callbacks?.onReady?.()\n callbacks?.onStatusChange?.(\n 'Challenge ready. If frictionless it will complete automatically, otherwise complete the verification prompt.'\n )\n })\n\n threeDSecure.on('success', () => {\n callbacks?.onSuccess?.()\n callbacks?.onStatusChange?.('Authentication successful')\n resolve()\n })\n\n threeDSecure.on('failure', () => {\n const msg = '3DS authentication was rejected by the issuer'\n callbacks?.onFailure?.(msg)\n callbacks?.onStatusChange?.('Authentication failed')\n reject(new GreenPay3DSError(msg, 'AUTHENTICATION_FAILED'))\n })\n\n threeDSecure.on('error', (err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err)\n callbacks?.onError?.(err instanceof Error ? err : msg)\n callbacks?.onStatusChange?.('Authentication error')\n reject(new GreenPay3DSError(msg, 'AUTHENTICATION_ERROR'))\n })\n\n threeDSecure.mount()\n })\n }\n\n async processPayment(\n orderData: OrderData,\n callbacks?: ThreeDSPaymentCallbacks\n ): Promise<ThreeDSResult> {\n if (!this.apiUrl) {\n throw new GreenPay3DSError(\n 'apiUrl is required in config for processPayment',\n 'INVALID_CONFIG'\n )\n }\n\n const { cardData, sessionToken, terminalId } = orderData\n if (!cardData?.ed || !cardData?.session || !sessionToken) {\n throw new GreenPay3DSError(\n 'cardData.ed, cardData.session, and sessionToken are required',\n 'INVALID_ORDER_DATA'\n )\n }\n\n callbacks?.onStatusChange?.('Creating 3DS session...')\n const session = await createSession(\n this.apiUrl,\n cardData,\n sessionToken,\n terminalId\n )\n\n callbacks?.onStatusChange?.('Starting 3DS authentication...')\n await this.authenticate(session.id, {\n onReady: callbacks?.onReady,\n onFailure: callbacks?.onFailure,\n onError: callbacks?.onError,\n onStatusChange: callbacks?.onStatusChange,\n })\n\n callbacks?.onStatusChange?.('Retrieving authentication result...')\n const result = await retrieveSession(\n this.apiUrl,\n session.id,\n cardData,\n sessionToken\n )\n\n callbacks?.onSuccess?.(result)\n callbacks?.onStatusChange?.('3DS authentication complete')\n return result\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@greenpay_prod/3ds-sdk",
|
|
3
|
+
"version": "0.1.1-qa.0",
|
|
4
|
+
"description": "GreenPay 3D Secure SDK — client-side 3DS authentication",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": {
|
|
11
|
+
"types": "./dist/index.d.mts",
|
|
12
|
+
"default": "./dist/index.mjs"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.js"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"registry": "https://registry.npmjs.org/"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsup",
|
|
28
|
+
"dev": "tsup --watch"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@evervault/js": "^2.9.1"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"tsup": "^8.0.0",
|
|
35
|
+
"typescript": "^5.5.0"
|
|
36
|
+
}
|
|
37
|
+
}
|