@idonatedev/idonate-sdk 1.0.16 → 1.1.0-dev0
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/README.md +27 -0
- package/dist/apple-pay.d.ts +0 -1
- package/dist/apple-pay.js +32 -62
- package/dist/cloudflare-challenge-handler.d.ts +2 -2
- package/dist/cloudflare-challenge-handler.js +65 -92
- package/dist/config-handler.d.ts +3 -0
- package/dist/config-handler.js +16 -11
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +66 -2
- package/dist/google-pay.d.ts +0 -1
- package/dist/google-pay.js +65 -78
- package/dist/idonate-client.d.ts +6 -19
- package/dist/idonate-client.js +165 -192
- package/dist/index.js +40 -11
- package/dist/recaptcha.d.ts +0 -1
- package/dist/recaptcha.js +40 -49
- package/dist/shared.js +8 -9
- package/dist/test-utils.d.ts +81 -0
- package/dist/test-utils.js +110 -0
- package/dist/tokenize/CardConnectTokenizer.d.ts +43 -0
- package/dist/tokenize/CardConnectTokenizer.js +620 -0
- package/dist/tokenize/SpreedlyTokenizer.d.ts +85 -0
- package/dist/tokenize/SpreedlyTokenizer.js +952 -0
- package/dist/tokenize/Tokenizer.d.ts +32 -0
- package/dist/tokenize/Tokenizer.js +183 -0
- package/dist/tokenize/iats.js +11 -13
- package/dist/tokenize/index.d.ts +5 -3
- package/dist/tokenize/index.js +43 -6
- package/dist/tokenize/spreedly-secure.d.ts +8 -0
- package/dist/tokenize/spreedly-secure.js +43 -0
- package/dist/tokenize/styles.d.ts +3 -0
- package/dist/tokenize/styles.js +42 -0
- package/dist/tokenize/tokenizer-constants.d.ts +62 -0
- package/dist/tokenize/tokenizer-constants.js +65 -0
- package/dist/tokenize/tokenizer-utils.d.ts +19 -0
- package/dist/tokenize/tokenizer-utils.js +156 -0
- package/dist/tokenize/types.d.ts +149 -0
- package/dist/tokenize/types.js +30 -0
- package/dist/typeAdapters.d.ts +3 -2
- package/dist/typeAdapters.js +39 -48
- package/dist/types.d.ts +48 -41
- package/dist/types.js +12 -24
- package/dist/util.d.ts +2 -2
- package/dist/util.js +30 -33
- package/package.json +41 -18
- package/umd/idonate-sdk.js +1 -1
- package/dist/tokenize/cardconnect.d.ts +0 -3
- package/dist/tokenize/cardconnect.js +0 -16
- package/dist/tokenize/spreedly.d.ts +0 -48
- package/dist/tokenize/spreedly.js +0 -208
package/README.md
CHANGED
|
@@ -4,6 +4,33 @@ Javascript libraries for integrating with iDonate services.
|
|
|
4
4
|
A rough usage example can be found below the Changelog.
|
|
5
5
|
|
|
6
6
|
# Changes
|
|
7
|
+
## 1.1.0
|
|
8
|
+
### Major Tokenizer Improvements and Canadian Bank Account Support
|
|
9
|
+
|
|
10
|
+
#### Breaking Changes
|
|
11
|
+
* Client constructor now requires `embedId` as second parameter: `new Client(organizationId, embedId, options)`
|
|
12
|
+
* Tokenizer creation is now asynchronous via `createTokenizer` method
|
|
13
|
+
|
|
14
|
+
#### New Features
|
|
15
|
+
* **Unified Tokenizer Architecture**: New `createTokenizer` API provides a consistent interface for all payment methods
|
|
16
|
+
* **Canadian Bank Account Support** (Spreedly only):
|
|
17
|
+
* Support for institution number (3 digits) and transit number (5 digits)
|
|
18
|
+
* New `bankCountry` parameter to specify 'US' or 'CA' for bank accounts
|
|
19
|
+
* Automatic routing number formatting for Canadian banks
|
|
20
|
+
* **Enhanced Security**:
|
|
21
|
+
* Spreedly secure tokenization with certificate-based authentication
|
|
22
|
+
* Automatic fallback to standard mode when secure tokenization unavailable
|
|
23
|
+
* Improved CardConnect security and iframe handling
|
|
24
|
+
* **Improved Testing**:
|
|
25
|
+
* Added Playwright E2E testing for tokenizers
|
|
26
|
+
* Comprehensive test coverage for all tokenization scenarios
|
|
27
|
+
|
|
28
|
+
#### Other Changes
|
|
29
|
+
* Removed legacy tokenizer implementations and SpreedlyAsync class
|
|
30
|
+
* Enhanced field validation for both US and Canadian bank accounts
|
|
31
|
+
* Updated dependencies to latest stable versions
|
|
32
|
+
* Improved error handling and debugging capabilities
|
|
33
|
+
|
|
7
34
|
## 1.0.16
|
|
8
35
|
* Adding checkbox recaptcha type, few corrections for error handling
|
|
9
36
|
* Added tributeType property
|
package/dist/apple-pay.d.ts
CHANGED
package/dist/apple-pay.js
CHANGED
|
@@ -8,37 +8,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
12
|
+
const constants_1 = require("./constants");
|
|
13
|
+
class ApplePay {
|
|
14
|
+
constructor(paymentRequest) {
|
|
42
15
|
this.appleSession = null;
|
|
43
16
|
this.paymentRequestDefaults = {
|
|
44
17
|
currencyCode: 'USD',
|
|
@@ -55,40 +28,38 @@ var ApplePay = (function () {
|
|
|
55
28
|
};
|
|
56
29
|
this.paymentRequest = Object.assign({}, this.paymentRequestDefaults, paymentRequest);
|
|
57
30
|
}
|
|
58
|
-
|
|
31
|
+
static isSupported() {
|
|
59
32
|
return (window.ApplePaySession &&
|
|
60
33
|
ApplePaySession.canMakePayments() &&
|
|
61
34
|
ApplePaySession.supportsVersion(ApplePay.ApplePayApiVersion));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return [2, this.appleSession];
|
|
72
|
-
});
|
|
35
|
+
}
|
|
36
|
+
begin() {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
if (!ApplePay.isSupported()) {
|
|
39
|
+
throw new Error('Apple Pay Not Supported');
|
|
40
|
+
}
|
|
41
|
+
this.appleSession = new ApplePaySession(ApplePay.ApplePayApiVersion, this.paymentRequest);
|
|
42
|
+
this.appleSession.begin();
|
|
43
|
+
return this.appleSession;
|
|
73
44
|
});
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return fetch(embedApiBaseUrl
|
|
45
|
+
}
|
|
46
|
+
createSession(payload, embedApiBaseUrl) {
|
|
47
|
+
return fetch(`${embedApiBaseUrl}/payment/create-session`, {
|
|
77
48
|
method: 'POST',
|
|
78
49
|
headers: constants_1.CLIENT_HEADERS,
|
|
79
50
|
body: JSON.stringify(payload),
|
|
80
|
-
}).then(
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return fetch(cardConnectBaseUrl
|
|
51
|
+
}).then((response) => response.json());
|
|
52
|
+
}
|
|
53
|
+
tokenizeWithCardConnect(applePaymentMethod, cardConnectBaseUrl) {
|
|
54
|
+
const paymentData = applePaymentMethod.token.paymentData;
|
|
55
|
+
const token = paymentData.data;
|
|
56
|
+
const ectype = 'apple';
|
|
57
|
+
const ecsig = paymentData.signature;
|
|
58
|
+
const eckey = paymentData.header.ephemeralPublicKey;
|
|
59
|
+
const ectid = paymentData.header.transactionId;
|
|
60
|
+
const ecpublickeyhash = paymentData.header.publicKeyHash;
|
|
61
|
+
const dataString = `${token}&ectype=${ectype}&ecsig=${ecsig}&eckey=${eckey}&ectid=${ectid}&echash=&ecpublickeyhash=${ecpublickeyhash}`;
|
|
62
|
+
return fetch(`${cardConnectBaseUrl}/cardsecure/api/v1/ccn/tokenize`, {
|
|
92
63
|
method: 'POST',
|
|
93
64
|
headers: {
|
|
94
65
|
'Content-Type': 'application/json',
|
|
@@ -98,9 +69,8 @@ var ApplePay = (function () {
|
|
|
98
69
|
devicedata: dataString,
|
|
99
70
|
unique: true,
|
|
100
71
|
}),
|
|
101
|
-
}).then(
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}());
|
|
72
|
+
}).then((response) => response.json());
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
ApplePay.ApplePayApiVersion = 6;
|
|
106
76
|
exports.default = ApplePay;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import iDonateClient from
|
|
1
|
+
import iDonateClient from './idonate-client';
|
|
2
2
|
export declare const handleCFChallenge: (challengeResponse: Response, sdkClient: iDonateClient) => Promise<{
|
|
3
3
|
token: string;
|
|
4
|
-
preClearance?: boolean
|
|
4
|
+
preClearance?: boolean;
|
|
5
5
|
} | null>;
|
|
@@ -8,101 +8,74 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
12
|
exports.handleCFChallenge = void 0;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var document_1, challengeWrapper_1, challengeDiv_1, showChallenge_1, cloudflareScript;
|
|
13
|
+
let turnstileInstance = null;
|
|
14
|
+
const handleCFChallenge = (challengeResponse, sdkClient) => new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
|
|
43
15
|
var _a, _b, _c;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
turnstileInstance = turnstile;
|
|
67
|
-
}
|
|
68
|
-
showChallenge_1(turnstile);
|
|
69
|
-
};
|
|
70
|
-
challengeWrapper_1.setAttribute('id', 'idonateTurnstileWrapper');
|
|
71
|
-
challengeWrapper_1.style.position = 'fixed';
|
|
72
|
-
challengeWrapper_1.style.top = '0';
|
|
73
|
-
challengeWrapper_1.style.bottom = '0';
|
|
74
|
-
challengeWrapper_1.style.left = '0';
|
|
75
|
-
challengeWrapper_1.style.right = '0';
|
|
76
|
-
challengeWrapper_1.style.backgroundColor = 'rgba(0,0,0,0.9)';
|
|
77
|
-
challengeWrapper_1.style.transition = 'all 400ms';
|
|
78
|
-
challengeWrapper_1.style.display = 'flex';
|
|
79
|
-
challengeWrapper_1.style.flexDirection = 'column';
|
|
80
|
-
challengeWrapper_1.style.padding = '40px 30px';
|
|
81
|
-
challengeWrapper_1.style.opacity = '0';
|
|
82
|
-
challengeWrapper_1.style.color = 'white';
|
|
83
|
-
challengeWrapper_1.style.fontFamily = 'sans-serif';
|
|
84
|
-
challengeWrapper_1.style.zIndex = '1000';
|
|
85
|
-
challengeWrapper_1.innerHTML = '<h1 id="idonateTurnstileVerificationHeader">Last tiny step before we submit your payment:</h1>';
|
|
86
|
-
challengeDiv_1.setAttribute('id', 'iDonateTurnstileBox');
|
|
87
|
-
challengeWrapper_1.append(challengeDiv_1);
|
|
88
|
-
document_1.body.append(challengeWrapper_1);
|
|
89
|
-
if (turnstileInstance) {
|
|
90
|
-
showChallenge_1(turnstileInstance);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
cloudflareScript = document_1.createElement('script');
|
|
94
|
-
challengeDiv_1.innerHTML = 'loading ...';
|
|
95
|
-
cloudflareScript.src = sdkClient.config.turnstileCdnUrl + '?render=explicit&onload=idonateTurnstileLoadedHandler';
|
|
96
|
-
document_1.body.append(cloudflareScript);
|
|
16
|
+
try {
|
|
17
|
+
const document = window === null || window === void 0 ? void 0 : window.document;
|
|
18
|
+
if (!document || !window) {
|
|
19
|
+
throw new Error('document is not present on window');
|
|
20
|
+
}
|
|
21
|
+
const challengeWrapper = document.createElement('div');
|
|
22
|
+
const challengeDiv = document.createElement('div');
|
|
23
|
+
const showChallenge = (turnstile) => {
|
|
24
|
+
var _a;
|
|
25
|
+
(_a = turnstile === null || turnstile === void 0 ? void 0 : turnstile.render) === null || _a === void 0 ? void 0 : _a.call(turnstile, '#iDonateTurnstileBox', {
|
|
26
|
+
sitekey: sdkClient.config.turnstileSiteKey,
|
|
27
|
+
callback(token, preClearance) {
|
|
28
|
+
challengeWrapper.remove();
|
|
29
|
+
resolve({ token, preClearance });
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
window.idonateTurnstileLoadedHandler = () => {
|
|
34
|
+
const turnstile = window.turnstile;
|
|
35
|
+
challengeDiv.innerHTML = '';
|
|
36
|
+
if (turnstile) {
|
|
37
|
+
turnstileInstance = turnstile;
|
|
97
38
|
}
|
|
98
|
-
(
|
|
99
|
-
|
|
39
|
+
showChallenge(turnstile);
|
|
40
|
+
};
|
|
41
|
+
challengeWrapper.setAttribute('id', 'idonateTurnstileWrapper');
|
|
42
|
+
challengeWrapper.style.position = 'fixed';
|
|
43
|
+
challengeWrapper.style.top = '0';
|
|
44
|
+
challengeWrapper.style.bottom = '0';
|
|
45
|
+
challengeWrapper.style.left = '0';
|
|
46
|
+
challengeWrapper.style.right = '0';
|
|
47
|
+
challengeWrapper.style.backgroundColor = 'rgba(0,0,0,0.9)';
|
|
48
|
+
challengeWrapper.style.transition = 'all 400ms';
|
|
49
|
+
challengeWrapper.style.display = 'flex';
|
|
50
|
+
challengeWrapper.style.flexDirection = 'column';
|
|
51
|
+
challengeWrapper.style.padding = '40px 30px';
|
|
52
|
+
challengeWrapper.style.opacity = '0';
|
|
53
|
+
challengeWrapper.style.color = 'white';
|
|
54
|
+
challengeWrapper.style.fontFamily = 'sans-serif';
|
|
55
|
+
challengeWrapper.style.zIndex = '1000';
|
|
56
|
+
challengeWrapper.innerHTML =
|
|
57
|
+
'<h1 id="idonateTurnstileVerificationHeader">Last tiny step before we submit your payment:</h1>';
|
|
58
|
+
challengeDiv.setAttribute('id', 'iDonateTurnstileBox');
|
|
59
|
+
challengeWrapper.append(challengeDiv);
|
|
60
|
+
document.body.append(challengeWrapper);
|
|
61
|
+
if (turnstileInstance) {
|
|
62
|
+
showChallenge(turnstileInstance);
|
|
100
63
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
64
|
+
else {
|
|
65
|
+
const cloudflareScript = document.createElement('script');
|
|
66
|
+
challengeDiv.innerHTML = 'loading ...';
|
|
67
|
+
cloudflareScript.src =
|
|
68
|
+
sdkClient.config.turnstileCdnUrl +
|
|
69
|
+
'?render=explicit&onload=idonateTurnstileLoadedHandler';
|
|
70
|
+
document.body.append(cloudflareScript);
|
|
105
71
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
72
|
+
(_a = challengeDiv.scrollIntoView) === null || _a === void 0 ? void 0 : _a.call(challengeDiv);
|
|
73
|
+
challengeWrapper.style.opacity = '1';
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
(_b = console === null || console === void 0 ? void 0 : console.error) === null || _b === void 0 ? void 0 : _b.call(console, e);
|
|
77
|
+
(_c = console === null || console === void 0 ? void 0 : console.warn) === null || _c === void 0 ? void 0 : _c.call(console, 'iDonate SDK: Could not handle request, please reload the page and try again');
|
|
78
|
+
reject(null);
|
|
79
|
+
}
|
|
80
|
+
}));
|
|
81
|
+
exports.handleCFChallenge = handleCFChallenge;
|
package/dist/config-handler.d.ts
CHANGED
|
@@ -15,5 +15,8 @@ export default class ConfigHandler {
|
|
|
15
15
|
readonly turnstileCdnUrl: string;
|
|
16
16
|
readonly turnstileSiteKey: string;
|
|
17
17
|
readonly client: string;
|
|
18
|
+
readonly enableSpreedlySecureTokenization: boolean;
|
|
19
|
+
readonly organizationId: number | undefined;
|
|
20
|
+
readonly embedId: string | undefined;
|
|
18
21
|
constructor(options: Partial<ClientOptions>);
|
|
19
22
|
}
|
package/dist/config-handler.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const constants_1 = require("./constants");
|
|
4
|
+
class ConfigHandler {
|
|
5
|
+
constructor(options) {
|
|
6
6
|
if (options.enableSandboxMode) {
|
|
7
7
|
this.apiBaseUrl = constants_1.SANDBOX_BASE_URL;
|
|
8
8
|
this.cardConnectBaseUrl = constants_1.SANDBOX_CARD_CONNECT_BASE_URL;
|
|
@@ -18,25 +18,30 @@ var ConfigHandler = (function () {
|
|
|
18
18
|
this.apiBaseUrl = options.overrideBaseUrl;
|
|
19
19
|
}
|
|
20
20
|
this.authApiBaseUrl =
|
|
21
|
-
options.overrideAuthApiBaseUrl || this.apiBaseUrl
|
|
21
|
+
options.overrideAuthApiBaseUrl || `${this.apiBaseUrl}/auth`;
|
|
22
22
|
this.donorApiBaseUrl =
|
|
23
|
-
options.overrideDonorApiBaseUrl || this.apiBaseUrl
|
|
23
|
+
options.overrideDonorApiBaseUrl || `${this.apiBaseUrl}/donor`;
|
|
24
24
|
this.embedApiBaseUrl =
|
|
25
|
-
options.overrideEmbedApiBaseUrl || this.apiBaseUrl
|
|
25
|
+
options.overrideEmbedApiBaseUrl || `${this.apiBaseUrl}/embed`;
|
|
26
26
|
if (options.overrideApplePayUrl) {
|
|
27
27
|
this.applePayUrl = options.overrideApplePayUrl;
|
|
28
28
|
}
|
|
29
29
|
this.pcScriptBase = options.pcScriptBase || constants_1.FALLBACK_PC_SCRIPT_URL;
|
|
30
30
|
this.pcScriptId = options.pcScriptId || constants_1.FALLBACK_PC_SCRIPT_ID;
|
|
31
|
-
this.turnstileCdnUrl =
|
|
32
|
-
|
|
31
|
+
this.turnstileCdnUrl =
|
|
32
|
+
options.turnstileCdnUrl || constants_1.DEFAULT_CF_TURNSTILE_CDN_EXPLICIT_URL;
|
|
33
|
+
this.turnstileSiteKey =
|
|
34
|
+
options.turnstileSiteKey || constants_1.FALLBACK_CF_TURNSTILE_SITE_KEY;
|
|
33
35
|
if (options === null || options === void 0 ? void 0 : options.spreedlyEnvironmentKey) {
|
|
34
36
|
this.spreedlyEnvironmentKey = options.spreedlyEnvironmentKey;
|
|
35
37
|
}
|
|
36
38
|
this.enableDelay = options.enableDelay || false;
|
|
37
39
|
this.secondsToDelay = options.secondsToDelay || 0;
|
|
38
|
-
this.
|
|
40
|
+
this.enableSpreedlySecureTokenization =
|
|
41
|
+
options.enableSpreedlySecureTokenization || false;
|
|
42
|
+
this.organizationId = options.organizationId;
|
|
43
|
+
this.embedId = options.embedId;
|
|
44
|
+
this.cardConnectTokenizerUrl = `${this.cardConnectBaseUrl}/itoke/ajax-tokenizer.html`;
|
|
39
45
|
}
|
|
40
|
-
|
|
41
|
-
}());
|
|
46
|
+
}
|
|
42
47
|
exports.default = ConfigHandler;
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const SDK_VERSION = "1.1.0";
|
|
1
2
|
export declare const PRODUCTION_BASE_URL = "https://secure-api.idonate.com";
|
|
2
3
|
export declare const SANDBOX_BASE_URL = "https://api.qa-idonate.com";
|
|
3
4
|
export declare const PRODUCTION_CARD_CONNECT_BASE_URL = "https://boltgw.cardconnect.com:8443";
|
package/dist/constants.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CLIENT_HEADERS = exports.CARD_CONNECT_DEFAULT_STYLE = exports.DEFAULT_APP_NAME = exports.DEFAULT_CF_TURNSTILE_CDN_EXPLICIT_URL = exports.FALLBACK_CF_TURNSTILE_SITE_KEY = exports.FALLBACK_PC_SCRIPT_ID = exports.FALLBACK_PC_SCRIPT_URL = exports.SANDBOX_APPLE_PAY_URL = exports.APPLE_PAY_URL = exports.SPREEDLY_TOKENIZER_URL = exports.SANDBOX_CARD_CONNECT_BASE_URL = exports.PRODUCTION_CARD_CONNECT_BASE_URL = exports.SANDBOX_BASE_URL = exports.PRODUCTION_BASE_URL = void 0;
|
|
3
|
+
exports.CLIENT_HEADERS = exports.CARD_CONNECT_DEFAULT_STYLE = exports.DEFAULT_APP_NAME = exports.DEFAULT_CF_TURNSTILE_CDN_EXPLICIT_URL = exports.FALLBACK_CF_TURNSTILE_SITE_KEY = exports.FALLBACK_PC_SCRIPT_ID = exports.FALLBACK_PC_SCRIPT_URL = exports.SANDBOX_APPLE_PAY_URL = exports.APPLE_PAY_URL = exports.SPREEDLY_TOKENIZER_URL = exports.SANDBOX_CARD_CONNECT_BASE_URL = exports.PRODUCTION_CARD_CONNECT_BASE_URL = exports.SANDBOX_BASE_URL = exports.PRODUCTION_BASE_URL = exports.SDK_VERSION = void 0;
|
|
4
|
+
exports.SDK_VERSION = '1.1.0';
|
|
4
5
|
exports.PRODUCTION_BASE_URL = 'https://secure-api.idonate.com';
|
|
5
6
|
exports.SANDBOX_BASE_URL = 'https://api.qa-idonate.com';
|
|
6
7
|
exports.PRODUCTION_CARD_CONNECT_BASE_URL = 'https://boltgw.cardconnect.com:8443';
|
|
@@ -13,7 +14,70 @@ exports.FALLBACK_PC_SCRIPT_ID = '_3fd4dad26e8c277bc50fb2ddf8233b50bc8d9704';
|
|
|
13
14
|
exports.FALLBACK_CF_TURNSTILE_SITE_KEY = '0x4AAAAAAAxuRxNZTvX8shIj';
|
|
14
15
|
exports.DEFAULT_CF_TURNSTILE_CDN_EXPLICIT_URL = 'https://challenges.cloudflare.com/turnstile/v0/api.js';
|
|
15
16
|
exports.DEFAULT_APP_NAME = 'unnamed-sdk-client';
|
|
16
|
-
exports.CARD_CONNECT_DEFAULT_STYLE =
|
|
17
|
+
exports.CARD_CONNECT_DEFAULT_STYLE = `
|
|
18
|
+
body {
|
|
19
|
+
margin: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
form {
|
|
23
|
+
display: flex;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
label#cccardlabel {
|
|
27
|
+
display: none;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
br {
|
|
31
|
+
display: none;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
label#cccvvlabel {
|
|
35
|
+
display: none;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
label#ccexpirylabel {
|
|
39
|
+
display: none;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
input {
|
|
43
|
+
padding: 10px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
select {
|
|
47
|
+
padding: 10px;
|
|
48
|
+
font-size: 14px;
|
|
49
|
+
color: #8b959d;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
select#ccexpirymonth {
|
|
53
|
+
margin-right: -30px;
|
|
54
|
+
border: 1px solid #b6b8ba;
|
|
55
|
+
border-right: 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
input#ccnumfield {
|
|
59
|
+
width: 70%;
|
|
60
|
+
border: 1px solid #b6b8ba;
|
|
61
|
+
border-right: 0;
|
|
62
|
+
border-top-left-radius: 3px;
|
|
63
|
+
border-bottom-left-radius: 3px;
|
|
64
|
+
font-size: 14px;
|
|
65
|
+
color: #8b959d;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
select#ccexpiryyear {
|
|
69
|
+
border: 1px solid #b6b8ba;
|
|
70
|
+
border-right: 0;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
input#cccvvfield {
|
|
74
|
+
border: 1px solid #b6b8ba;
|
|
75
|
+
border-top-right-radius: 3px;
|
|
76
|
+
border-bottom-right-radius: 3px;
|
|
77
|
+
font-size: 14px;
|
|
78
|
+
color: #8b959d;
|
|
79
|
+
}
|
|
80
|
+
`.replace(/\s+/gi, ' ');
|
|
17
81
|
exports.CLIENT_HEADERS = {
|
|
18
82
|
'User-Agent': navigator.userAgent + ' idonate-sdk@1.0.16',
|
|
19
83
|
'Content-Type': 'application/json',
|
package/dist/google-pay.d.ts
CHANGED