@paykka/card-checkout-ui 0.13.5 → 0.13.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/card-checkout-ui.js +13 -13
  2. package/dist/card-checkout-ui.umd.cjs +13 -13
  3. package/dist/es/_commonjsHelpers.js +1 -1
  4. package/dist/es/api/http.js +1 -0
  5. package/dist/es/api/modules/risk/index.js +21 -0
  6. package/dist/es/components/AccordionItem/AccordionItem.js +1 -0
  7. package/dist/es/components/AccountNameField/index.js +1 -0
  8. package/dist/es/components/AddressField/index.js +1 -0
  9. package/dist/es/components/AliPay/index.js +1 -0
  10. package/dist/es/components/ApplePay/index.js +1 -0
  11. package/dist/es/components/Boost/index.js +1 -0
  12. package/dist/es/components/Card/index.js +1 -0
  13. package/dist/es/components/CardBrands/index.js +1 -0
  14. package/dist/es/components/CardExpireDateField/index.js +1 -0
  15. package/dist/es/components/CardHolderNameField/index.js +1 -0
  16. package/dist/es/components/CardIBANField/index.js +1 -0
  17. package/dist/es/components/CardNo/index.js +1 -0
  18. package/dist/es/components/CardNumberField/index.js +1 -0
  19. package/dist/es/components/CardSecurityCodeField/index.js +1 -0
  20. package/dist/es/components/CardSelector/index.js +1 -0
  21. package/dist/es/components/CombinedCardInfo/index.js +1 -0
  22. package/dist/es/components/DropIn/index.js +1 -0
  23. package/dist/es/components/EmailField/EmailField.js +1 -0
  24. package/dist/es/components/EncryptedCard/index.js +1 -0
  25. package/dist/es/components/GooglePay/index.js +1 -0
  26. package/dist/es/components/GrabPay/index.js +1 -0
  27. package/dist/es/components/GuideCard/index.js +1 -0
  28. package/dist/es/components/LinePay/index.js +1 -0
  29. package/dist/es/components/MayBankQRPay/index.js +1 -0
  30. package/dist/es/components/NinePay/index.js +1 -0
  31. package/dist/es/components/RecurringTip/index.js +1 -0
  32. package/dist/es/components/Sepa/index.js +1 -0
  33. package/dist/es/components/ShopeePay/index.js +1 -0
  34. package/dist/es/components/SubmitButton/index.js +1 -0
  35. package/dist/es/components/TNGWallet/index.js +1 -0
  36. package/dist/es/components/ThreeDS/index.js +2 -1
  37. package/dist/es/components/WechatPay/index.js +1 -0
  38. package/dist/es/components/business/QRCodeModal/QRCodeModal.js +1 -0
  39. package/dist/es/components/business/QRCodeModal/index.js +1 -0
  40. package/dist/es/components/business/index.js +1 -0
  41. package/dist/es/components/index.js +1 -0
  42. package/dist/es/components/internal/Accordion/index.js +1 -0
  43. package/dist/es/components/internal/Button/Button.js +1 -0
  44. package/dist/es/components/internal/Button/index.js +1 -0
  45. package/dist/es/components/internal/CheckBox/CheckBox.js +1 -0
  46. package/dist/es/components/internal/CheckBox/index.js +1 -0
  47. package/dist/es/components/internal/Form/type.js +1 -0
  48. package/dist/es/components/internal/Info/Info.js +1 -0
  49. package/dist/es/components/internal/Info/index.js +1 -0
  50. package/dist/es/components/internal/Input/type.js +1 -0
  51. package/dist/es/components/internal/LoadingCheck/LoadingCheck.js +1 -0
  52. package/dist/es/components/internal/LoadingCheck/index.js +1 -0
  53. package/dist/es/components/internal/Modal/Modal.js +1 -0
  54. package/dist/es/components/internal/QRCode/QRCode.js +1 -0
  55. package/dist/es/components/internal/QRCode/index.js +1 -0
  56. package/dist/es/components/internal/Select/Select.js +1 -0
  57. package/dist/es/components/internal/Select/SelectMenu.js +1 -0
  58. package/dist/es/components/internal/Select/SelectMenuItem.js +1 -0
  59. package/dist/es/components/wallets/GCash/GCash.js +1 -0
  60. package/dist/es/components/wallets/OpayWallet/OpayWallet.js +1 -0
  61. package/dist/es/components/wallets/PagaWallet/PagaWallet.js +1 -0
  62. package/dist/es/components/wallets/Paymaya/Paymaya.js +1 -0
  63. package/dist/es/components/wallets/PicPay/PicPay.js +1 -0
  64. package/dist/es/components/wallets/Pix/Pix.js +1 -0
  65. package/dist/es/components/wallets/Vietqr/Vietqr.js +1 -0
  66. package/dist/es/components/wallets/Zalopay/Zalopay.js +1 -0
  67. package/dist/es/constant.js +6 -0
  68. package/dist/es/core/checkout.js +4 -3
  69. package/dist/es/core/environment.js +1 -13
  70. package/dist/es/core/index.js +1 -0
  71. package/dist/es/core/theme.js +1 -0
  72. package/dist/es/core.js +34 -34
  73. package/dist/es/hooks/index.js +1 -0
  74. package/dist/es/hooks/useI18n.js +1 -0
  75. package/dist/es/hooks/usePayState.js +2 -2
  76. package/dist/es/index.js +2 -1
  77. package/dist/es/out/fraud-detection.js +25 -60
  78. package/dist/es/out/stripe-radar.js +92 -0
  79. package/dist/es/out/worldpay-ddc.js +14 -4
  80. package/dist/es/out/worldpay-jsc-origin.js +61 -0
  81. package/dist/es/out/worldpay-jsc.js +68 -0
  82. package/dist/es/types/event.js +4 -0
  83. package/dist/es/types/fraud-detection.js +1 -0
  84. package/dist/types/api/modules/risk/index.d.ts +5 -0
  85. package/dist/types/constant.d.ts +4 -0
  86. package/dist/types/core/environment.d.ts +1 -2
  87. package/dist/types/hooks/usePayState.d.ts +0 -1
  88. package/dist/types/out/fraud-detection.d.ts +2 -5
  89. package/dist/types/out/stripe-radar.d.ts +21 -0
  90. package/dist/types/out/types.d.ts +2 -4
  91. package/dist/types/out/worldpay-ddc.d.ts +9 -2
  92. package/dist/types/out/worldpay-jsc-origin.d.ts +0 -0
  93. package/dist/types/out/worldpay-jsc.d.ts +38 -0
  94. package/dist/types/types/event.d.ts +28 -1
  95. package/dist/types/types/fraud-detection.d.ts +5 -5
  96. package/dist/types/types/message.d.ts +1 -0
  97. package/package.json +67 -67
@@ -12,6 +12,7 @@ import { getBrowserParams } from "../../../api/modules/get-browser-params.js";
12
12
  import { PaymentCategory, COMMON_CLASS_NAME, PaymentMethod, SessionMode } from "../../../constant.js";
13
13
  import { getZalopayPayInfo, zalopayPay } from "../../../api/modules/zalopay/index.js";
14
14
  import { PayKKaError } from "../../../core/error.js";
15
+ import "../../../out/worldpay-jsc-origin.js";
15
16
  import { usePayState } from "../../../hooks/usePayState.js";
16
17
  import { useRetry } from "../../../hooks/useRetry.js";
17
18
  import { usePaymentStatus } from "../../../hooks/usePayment.js";
@@ -172,9 +172,15 @@ var SessionMode = /* @__PURE__ */ ((SessionMode2) => {
172
172
  SessionMode2["COMPONENT"] = "COMPONENT";
173
173
  return SessionMode2;
174
174
  })(SessionMode || {});
175
+ var ChannelCode = /* @__PURE__ */ ((ChannelCode2) => {
176
+ ChannelCode2["STRIPE"] = "STRIPE";
177
+ ChannelCode2["WORLDPAY"] = "WORLD_PAY";
178
+ return ChannelCode2;
179
+ })(ChannelCode || {});
175
180
  export {
176
181
  COMMON_CLASS_NAME,
177
182
  CardPaymentMethods,
183
+ ChannelCode,
178
184
  EAddressType,
179
185
  PREFIX,
180
186
  PaymentCategory,
@@ -29,9 +29,9 @@ var __privateMethod = (obj, member, method) => {
29
29
  var _id, _config, _envConfig, _session, _theme, _componentInsts, _addressCore, _initPromise, _doInit, doInit_fn;
30
30
  import { create } from "./create.js";
31
31
  import { Session } from "./session.js";
32
- import { setApiPrefix, setApiUrl, setCDNUrl, setFraudDetectionEnv, setCustomLocale } from "../config.js";
32
+ import { setApiPrefix, setApiUrl, setCDNUrl, setFraudDetectionEnv, fraudDetectionEnv, setCustomLocale } from "../config.js";
33
33
  import { PayKKaError } from "./error.js";
34
- import { apiEnv, cdnEnv, fraudDetectionEnv } from "./environment.js";
34
+ import { apiEnv, cdnEnv } from "./environment.js";
35
35
  import "../api/http.js";
36
36
  import { isEmptyObject } from "../utils/is.js";
37
37
  import "../utils/card-brand/brands.js";
@@ -39,6 +39,7 @@ import "../utils/system-info/get-browser-info.js";
39
39
  import { getUrlParam } from "../utils/location.js";
40
40
  import { deepMerge } from "../utils/object.js";
41
41
  import { genShortId } from "../utils/string.js";
42
+ import "../out/worldpay-jsc-origin.js";
42
43
  import { d } from "../core.js";
43
44
  import { AddressCore } from "./address.js";
44
45
  import { PayKKaTheme } from "./theme.js";
@@ -141,7 +142,7 @@ class PayKKaCheckout {
141
142
  }
142
143
  setApiUrl((_envConfig2 == null ? void 0 : _envConfig2.api) || apiEnv[env]);
143
144
  setCDNUrl((_envConfig2 == null ? void 0 : _envConfig2.cdn) || cdnEnv[env]);
144
- setFraudDetectionEnv((_envConfig2 == null ? void 0 : _envConfig2.fraudDetection) || fraudDetectionEnv[env]);
145
+ setFraudDetectionEnv((_envConfig2 == null ? void 0 : _envConfig2.fraudDetection) || env || fraudDetectionEnv);
145
146
  }
146
147
  initLocale() {
147
148
  const { locale } = __privateGet(this, _config);
@@ -8,19 +8,7 @@ const cdnEnv = {
8
8
  hk: "https://checkout.aq.paykka.com/cp",
9
9
  sandbox: "https://checkout-sandbox.aq.paykka.com/cp"
10
10
  };
11
- const fraudDetectionEnv = {
12
- eu: {
13
- SR: "pk_live_51QSXl2G2tOepMLcRVNu0S2T6MxyB1AIgCP5g7qMQvAviQS37v0wkPhJRKqfcbTql6ZkCkGktux4ixfXuZtFy6ZpP00awbGlLEq"
14
- },
15
- hk: {
16
- SR: "pk_live_51QSXh9Azq7GQL5iqwZNLz3KJ896MIUnai4H7H0z9DtlklJkgoH1VAlHKy382vWPqDm80nTy8MKUdJIKs0fFbTlKx006WcKWEDu"
17
- },
18
- sandbox: {
19
- SR: "pk_test_51QaC2P5VarcojPHdg13yagk5TqrGkIkeK8I21BgQUZe8BzyRmbtmOg3dKsXjkxt6JlsjyjJMTvBH9dFMCZWRxOkt00tWQ1eHFU"
20
- }
21
- };
22
11
  export {
23
12
  apiEnv,
24
- cdnEnv,
25
- fraudDetectionEnv
13
+ cdnEnv
26
14
  };
@@ -3,3 +3,4 @@ import "../core.js";
3
3
  import "../utils/card-brand/brands.js";
4
4
  import "../utils/system-info/get-browser-info.js";
5
5
  import "../api/http.js";
6
+ import "../out/worldpay-jsc-origin.js";
@@ -26,6 +26,7 @@ import { generateColors } from "../utils/colors.js";
26
26
  import { loadStyle } from "../utils/style.js";
27
27
  import { getThemeText } from "../utils/theme.js";
28
28
  import "../api/http.js";
29
+ import "../out/worldpay-jsc-origin.js";
29
30
  class PayKKaTheme {
30
31
  constructor(checkoutId) {
31
32
  /** 主题类名 */
package/dist/es/core.js CHANGED
@@ -695,6 +695,36 @@ l$3.diffed = function(n2) {
695
695
  var t2 = n2.props, e2 = n2.__e;
696
696
  null != e2 && "textarea" === n2.type && "value" in t2 && t2.value !== e2.value && (e2.value = null == t2.value ? "" : t2.value);
697
697
  };
698
+ function e$1(e2, n2) {
699
+ return n2 = n2 || {}, new Promise(function(t2, r2) {
700
+ var s2 = new XMLHttpRequest(), o2 = [], u2 = {}, a2 = function e3() {
701
+ return { ok: 2 == (s2.status / 100 | 0), statusText: s2.statusText, status: s2.status, url: s2.responseURL, text: function() {
702
+ return Promise.resolve(s2.responseText);
703
+ }, json: function() {
704
+ return Promise.resolve(s2.responseText).then(JSON.parse);
705
+ }, blob: function() {
706
+ return Promise.resolve(new Blob([s2.response]));
707
+ }, clone: e3, headers: { keys: function() {
708
+ return o2;
709
+ }, entries: function() {
710
+ return o2.map(function(e4) {
711
+ return [e4, s2.getResponseHeader(e4)];
712
+ });
713
+ }, get: function(e4) {
714
+ return s2.getResponseHeader(e4);
715
+ }, has: function(e4) {
716
+ return null != s2.getResponseHeader(e4);
717
+ } } };
718
+ };
719
+ for (var i2 in s2.open(n2.method || "get", e2, true), s2.onload = function() {
720
+ s2.getAllResponseHeaders().toLowerCase().replace(/^(.+?):/gm, function(e3, n3) {
721
+ u2[n3] || o2.push(u2[n3] = n3);
722
+ }), t2(a2());
723
+ }, s2.onerror = r2, s2.withCredentials = "include" == n2.credentials, n2.headers)
724
+ s2.setRequestHeader(i2, n2.headers[i2]);
725
+ s2.send(n2.body || null);
726
+ });
727
+ }
698
728
  var __assign = function() {
699
729
  __assign = Object.assign || function __assign2(t2) {
700
730
  for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
@@ -3907,7 +3937,7 @@ function t() {
3907
3937
  }
3908
3938
  var o = void 0;
3909
3939
  var h = void 0, s$1 = 0, f = 0, v = 0;
3910
- function e$1(i2) {
3940
+ function e(i2) {
3911
3941
  if (void 0 !== o) {
3912
3942
  var t2 = i2.n;
3913
3943
  if (void 0 === t2 || t2.t !== o) {
@@ -3998,7 +4028,7 @@ u.prototype.peek = function() {
3998
4028
  }
3999
4029
  };
4000
4030
  Object.defineProperty(u.prototype, "value", { get: function() {
4001
- var i2 = e$1(this);
4031
+ var i2 = e(this);
4002
4032
  if (void 0 !== i2)
4003
4033
  i2.i = this.i;
4004
4034
  return this.v;
@@ -4129,7 +4159,7 @@ y.prototype.N = function() {
4129
4159
  Object.defineProperty(y.prototype, "value", { get: function() {
4130
4160
  if (1 & this.f)
4131
4161
  throw new Error("Cycle detected");
4132
- var i2 = e$1(this);
4162
+ var i2 = e(this);
4133
4163
  this.h();
4134
4164
  if (void 0 !== i2)
4135
4165
  i2.i = this.i;
@@ -4412,36 +4442,6 @@ function useSignal(n2) {
4412
4442
  return d$1(n2);
4413
4443
  }, []);
4414
4444
  }
4415
- function e(e2, n2) {
4416
- return n2 = n2 || {}, new Promise(function(t2, r2) {
4417
- var s2 = new XMLHttpRequest(), o2 = [], u2 = {}, a2 = function e3() {
4418
- return { ok: 2 == (s2.status / 100 | 0), statusText: s2.statusText, status: s2.status, url: s2.responseURL, text: function() {
4419
- return Promise.resolve(s2.responseText);
4420
- }, json: function() {
4421
- return Promise.resolve(s2.responseText).then(JSON.parse);
4422
- }, blob: function() {
4423
- return Promise.resolve(new Blob([s2.response]));
4424
- }, clone: e3, headers: { keys: function() {
4425
- return o2;
4426
- }, entries: function() {
4427
- return o2.map(function(e4) {
4428
- return [e4, s2.getResponseHeader(e4)];
4429
- });
4430
- }, get: function(e4) {
4431
- return s2.getResponseHeader(e4);
4432
- }, has: function(e4) {
4433
- return null != s2.getResponseHeader(e4);
4434
- } } };
4435
- };
4436
- for (var i2 in s2.open(n2.method || "get", e2, true), s2.onload = function() {
4437
- s2.getAllResponseHeaders().toLowerCase().replace(/^(.+?):/gm, function(e3, n3) {
4438
- u2[n3] || o2.push(u2[n3] = n3);
4439
- }), t2(a2());
4440
- }, s2.onerror = r2, s2.withCredentials = "include" == n2.credentials, n2.headers)
4441
- s2.setRequestHeader(i2, n2.headers[i2]);
4442
- s2.send(n2.body || null);
4443
- });
4444
- }
4445
4445
  var browser = {};
4446
4446
  var canPromise$1 = function() {
4447
4447
  return typeof Promise === "function" && Promise.prototype && Promise.prototype.then;
@@ -6440,7 +6440,7 @@ export {
6440
6440
  b$1 as b,
6441
6441
  browser,
6442
6442
  d$1 as d,
6443
- e,
6443
+ e$1 as e,
6444
6444
  h$1 as h,
6445
6445
  index,
6446
6446
  inputToRGB,
@@ -3,3 +3,4 @@ import "../utils/system-info/get-browser-info.js";
3
3
  import "../core.js";
4
4
  import "../core/context.js";
5
5
  import "../api/http.js";
6
+ import "../out/worldpay-jsc-origin.js";
@@ -4,6 +4,7 @@ import "../utils/card-brand/brands.js";
4
4
  import "../utils/system-info/get-browser-info.js";
5
5
  import "../api/http.js";
6
6
  import { I18n } from "../i18n/I18n.js";
7
+ import "../out/worldpay-jsc-origin.js";
7
8
  function useI18n(locale) {
8
9
  const coreContext = x(CoreContext);
9
10
  const [_i18n] = h((coreContext == null ? void 0 : coreContext.i18n) ?? new I18n());
@@ -20,9 +20,9 @@ function usePayState(session, core) {
20
20
  );
21
21
  i18n.load(locale);
22
22
  const fraudDetection2 = getFraudDetectionInstance(fraudDetectionEnv, void 0, {
23
- onEvent: (type) => {
23
+ onEvent: (type, data) => {
24
24
  var _a2, _b;
25
- (_b = core == null ? void 0 : (_a2 = core.config).onEvent) == null ? void 0 : _b.call(_a2, type);
25
+ (_b = core == null ? void 0 : (_a2 = core.config).onEvent) == null ? void 0 : _b.call(_a2, type, data);
26
26
  }
27
27
  });
28
28
  setFraudDetection(fraudDetection2);
package/dist/es/index.js CHANGED
@@ -48,9 +48,10 @@ import { redirectToPayment } from "./utils/redirect.js";
48
48
  import "./core.js";
49
49
  import { I18n } from "./i18n/I18n.js";
50
50
  import { LocaleKey } from "./i18n/locales/index.js";
51
- import { FraudDetectionEventType } from "./types/event.js";
52
51
  import { setApiUrl, setCDNUrl, setCustomLocale, setCustomReqHeaders, setFraudDetectionEnv } from "./config.js";
52
+ import { FraudDetectionEventType } from "./types/event.js";
53
53
  import "./api/http.js";
54
+ import "./out/worldpay-jsc-origin.js";
54
55
  import { ECollMode } from "./types/fraud-detection.js";
55
56
  import { MessageAction } from "./types/message.js";
56
57
  export {
@@ -4,15 +4,13 @@ var __publicField = (obj, key, value) => {
4
4
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
  return value;
6
6
  };
7
+ import { setApiUrl } from "../config.js";
8
+ import { apiEnv } from "../core/environment.js";
7
9
  import { ECollMode } from "../types/fraud-detection.js";
8
10
  import { FraudDetectionEventType } from "../types/event.js";
11
+ import { StripeRadar } from "./stripe-radar.js";
9
12
  import { WorldpayDDC } from "./worldpay-ddc.js";
10
- var define_import_meta_env_default = { VITE_API_URL: "https://checkout.aq.paykka.com", VITE_CDN_ORIGIN: "https://checkout.aq.paykka.com", VITE_CDN_DIR: "/cp", BASE_URL: "/", MODE: "production", DEV: false, PROD: true, SSR: false };
11
- const stripeKeyMap = {
12
- eu: "pk_live_51QSXl2G2tOepMLcRVNu0S2T6MxyB1AIgCP5g7qMQvAviQS37v0wkPhJRKqfcbTql6ZkCkGktux4ixfXuZtFy6ZpP00awbGlLEq",
13
- hk: "pk_live_51QSXh9Azq7GQL5iqwZNLz3KJ896MIUnai4H7H0z9DtlklJkgoH1VAlHKy382vWPqDm80nTy8MKUdJIKs0fFbTlKx006WcKWEDu",
14
- us: define_import_meta_env_default.VITE_STRIPE_KEY
15
- };
13
+ import { WorldpayJSC } from "./worldpay-jsc.js";
16
14
  const DEFAULT_ENV = "eu";
17
15
  let instance = null;
18
16
  function getFraudDetectionInstance(env, mode, options) {
@@ -22,46 +20,34 @@ function getFraudDetectionInstance(env, mode, options) {
22
20
  return instance;
23
21
  }
24
22
  class FraudDetection {
25
- constructor(env = DEFAULT_ENV, mode = [ECollMode.SR, ECollMode.WP], options) {
23
+ constructor(env = DEFAULT_ENV, mode = [ECollMode.SR, ECollMode.WP, ECollMode.WJ], options) {
26
24
  __publicField(this, "options");
27
- __publicField(this, "collResultMap", {
28
- [ECollMode.SR]: "",
29
- [ECollMode.WP]: ""
30
- });
31
25
  __publicField(this, "collMap", {
32
26
  [ECollMode.SR]: () => this.stripeRadarColl(),
33
- [ECollMode.WP]: () => this.worldpayDDCColl()
27
+ [ECollMode.WP]: () => this.worldpayDDCColl(),
28
+ [ECollMode.WJ]: () => this.worldpayJSCColl()
34
29
  });
35
30
  __publicField(this, "p");
36
31
  __publicField(this, "realMode", []);
37
- __publicField(this, "keyMap", {
38
- [ECollMode.SR]: ""
39
- });
32
+ __publicField(this, "env");
40
33
  this.realMode = mode;
41
34
  this.options = options;
42
- if (mode.includes(ECollMode.SR)) {
43
- if (typeof env === "string") {
44
- this.keyMap[ECollMode.SR] = stripeKeyMap[env];
45
- } else {
46
- this.keyMap[ECollMode.SR] = env[ECollMode.SR];
47
- }
35
+ this.env = env;
36
+ if (typeof __IS_IIFE__ !== "undefined" && __IS_IIFE__ && typeof env === "string") {
37
+ setApiUrl(apiEnv[env]);
48
38
  }
49
39
  }
50
- // TODO: 待废弃
51
- get fraudDetectionID() {
52
- return this.formatFraudDetectionId({
53
- s: this.collResultMap[ECollMode.SR]
54
- });
55
- }
56
40
  async getFraudDetectionId(options) {
57
41
  return this.formatFraudDetectionId({
58
42
  // stripe radar session id
59
- s: this.collResultMap[ECollMode.SR],
43
+ s: this.stripeRadarColl().getFraudDetectionId(),
60
44
  // worldpay ddc fraud detection id
61
- w: await this.worldpayDDCColl().getFraudDetectionId((options == null ? void 0 : options.bin) || "")
45
+ w: await this.worldpayDDCColl().getFraudDetectionId((options == null ? void 0 : options.bin) || ""),
46
+ // worldpay jsc fraud detection id
47
+ wr: this.worldpayJSCColl().fraudDetectionId
62
48
  });
63
49
  }
64
- /** 创建获取 radar session id 的 promise,缓存单例 */
50
+ /** 创建获取 fraud detection id 的 promise,缓存单例 */
65
51
  async createFraudDetection() {
66
52
  if (!this.p) {
67
53
  this.p = Promise.all(
@@ -87,37 +73,16 @@ class FraudDetection {
87
73
  return "";
88
74
  }
89
75
  }
90
- stripeRadarColl() {
91
- return new Promise((resolve, reject) => {
92
- const { onEvent } = this.options || {};
93
- onEvent == null ? void 0 : onEvent(FraudDetectionEventType.STRIPE_RADAR_START);
94
- const script = document.createElement("script");
95
- script.type = "text/javascript";
96
- script.src = "https://js.stripe.com/v3/";
97
- script.async = true;
98
- script.crossOrigin = "";
99
- script.onload = async () => {
100
- const stripe = window.Stripe(this.keyMap[ECollMode.SR]);
101
- const { radarSession, error } = await stripe.createRadarSession();
102
- if (error) {
103
- console.error(error);
104
- onEvent == null ? void 0 : onEvent(FraudDetectionEventType.STRIPE_RADAR_ERROR);
105
- reject(error);
106
- } else {
107
- this.collResultMap[ECollMode.SR] = radarSession == null ? void 0 : radarSession.id;
108
- onEvent == null ? void 0 : onEvent(FraudDetectionEventType.STRIPE_RADAR_SUCCESS);
109
- resolve(radarSession);
110
- }
111
- };
112
- script.onerror = () => {
113
- onEvent == null ? void 0 : onEvent(FraudDetectionEventType.STRIPE_RADAR_LOAD_ERROR);
114
- reject();
115
- };
116
- document.getElementsByTagName("head")[0].appendChild(script);
117
- });
118
- }
119
76
  worldpayDDCColl() {
120
- return new WorldpayDDC(this.options);
77
+ const config = typeof this.env === "string" ? void 0 : this.env[ECollMode.WP];
78
+ return new WorldpayDDC(config, this.options);
79
+ }
80
+ worldpayJSCColl() {
81
+ const config = typeof this.env === "string" ? void 0 : this.env[ECollMode.WJ];
82
+ return new WorldpayJSC(config, this.options);
83
+ }
84
+ stripeRadarColl() {
85
+ return new StripeRadar(this.options);
121
86
  }
122
87
  }
123
88
  export {
@@ -0,0 +1,92 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import "../api/http.js";
8
+ import "../utils/card-brand/brands.js";
9
+ import "../utils/system-info/get-browser-info.js";
10
+ import { ChannelCode } from "../constant.js";
11
+ import { FraudDetectionEventType } from "../types/event.js";
12
+ import { loadScript } from "../utils/load.js";
13
+ import "../core.js";
14
+ import { getChannelConfig } from "../api/modules/risk/index.js";
15
+ const STRIPE_RADAR_SCRIPT_URL = "https://js.stripe.com/v3/";
16
+ const _StripeRadar = class _StripeRadar {
17
+ constructor(options) {
18
+ __publicField(this, "options");
19
+ __publicField(this, "radarSessionId");
20
+ if (_StripeRadar.instance) {
21
+ return _StripeRadar.instance;
22
+ }
23
+ this.options = options;
24
+ this.init();
25
+ _StripeRadar.instance = this;
26
+ }
27
+ async init() {
28
+ const { onEvent } = this.options || {};
29
+ onEvent == null ? void 0 : onEvent(FraudDetectionEventType.STRIPE_RADAR_START);
30
+ await this.setRadarSessionId();
31
+ }
32
+ getFraudDetectionId() {
33
+ return this.radarSessionId;
34
+ }
35
+ async setRadarSessionId() {
36
+ const { onEvent } = this.options || {};
37
+ try {
38
+ const [key] = await Promise.all([this.getStripeKey(), this.loadStripeScript()]);
39
+ if (!key) {
40
+ return "";
41
+ }
42
+ const stripe = window.Stripe(key);
43
+ const { radarSession, error } = await stripe.createRadarSession();
44
+ if (error) {
45
+ onEvent == null ? void 0 : onEvent(FraudDetectionEventType.STRIPE_RADAR_ERROR);
46
+ } else {
47
+ onEvent == null ? void 0 : onEvent(FraudDetectionEventType.STRIPE_RADAR_SUCCESS);
48
+ this.radarSessionId = radarSession == null ? void 0 : radarSession.id;
49
+ }
50
+ } catch (error) {
51
+ onEvent == null ? void 0 : onEvent(FraudDetectionEventType.STRIPE_RADAR_LOAD_ERROR);
52
+ }
53
+ }
54
+ async getStripeKey() {
55
+ const { onEvent } = this.options || {};
56
+ try {
57
+ const res = await getChannelConfig(ChannelCode.STRIPE);
58
+ const key = res.stripe.key;
59
+ if (!key) {
60
+ onEvent == null ? void 0 : onEvent(FraudDetectionEventType.STRIPE_RADAR_API_ERROR, {
61
+ message: "Empty key"
62
+ });
63
+ }
64
+ return key;
65
+ } catch (error) {
66
+ onEvent == null ? void 0 : onEvent(FraudDetectionEventType.STRIPE_RADAR_API_ERROR);
67
+ return "";
68
+ }
69
+ }
70
+ loadStripeScript() {
71
+ return new Promise((resolve, reject) => {
72
+ loadScript({
73
+ src: STRIPE_RADAR_SCRIPT_URL,
74
+ extraOptions: {
75
+ async: true,
76
+ crossOrigin: ""
77
+ },
78
+ onload: () => {
79
+ resolve();
80
+ },
81
+ onerror: () => {
82
+ reject();
83
+ }
84
+ });
85
+ });
86
+ }
87
+ };
88
+ __publicField(_StripeRadar, "instance", null);
89
+ let StripeRadar = _StripeRadar;
90
+ export {
91
+ StripeRadar
92
+ };
@@ -11,10 +11,11 @@ import { FraudDetectionEventType } from "../types/event.js";
11
11
  import "../utils/card-brand/brands.js";
12
12
  import "../utils/system-info/get-browser-info.js";
13
13
  import { postMessageToIframe } from "../utils/iframe.js";
14
- const DDC_ORIGIN = "https://centinelapistag.cardinalcommerce.com";
14
+ const DDC_ORIGIN = "https://centinelapi.cardinalcommerce.com";
15
15
  const DDC_TIMEOUT = 1e4;
16
+ const DDC_API_URL = `${DDC_ORIGIN}/V2/Cruise/Collect`;
16
17
  const _WorldpayDDC = class _WorldpayDDC {
17
- constructor(options) {
18
+ constructor(config, options) {
18
19
  __publicField(this, "iframe", null);
19
20
  __publicField(this, "jwt", null);
20
21
  __publicField(this, "listener", null);
@@ -22,10 +23,18 @@ const _WorldpayDDC = class _WorldpayDDC {
22
23
  __publicField(this, "fraudDetectionId", null);
23
24
  __publicField(this, "p");
24
25
  __publicField(this, "options");
26
+ __publicField(this, "config", {
27
+ ddcOrigin: DDC_ORIGIN,
28
+ ddcCollectUrl: DDC_API_URL
29
+ });
25
30
  if (_WorldpayDDC.instance) {
26
31
  return _WorldpayDDC.instance;
27
32
  }
28
33
  this.options = options;
34
+ this.config = {
35
+ ddcOrigin: (config == null ? void 0 : config.ddcOrigin) || this.config.ddcOrigin,
36
+ ddcCollectUrl: (config == null ? void 0 : config.ddcCollectUrl) || this.config.ddcCollectUrl
37
+ };
29
38
  _WorldpayDDC.instance = this;
30
39
  }
31
40
  /**
@@ -77,7 +86,8 @@ const _WorldpayDDC = class _WorldpayDDC {
77
86
  const message = {
78
87
  action: MessageAction.DDC_JWT_BIN,
79
88
  jwt: this.jwt || "",
80
- bin
89
+ bin,
90
+ url: this.config.ddcCollectUrl
81
91
  };
82
92
  postMessageToIframe(message, this.iframe.contentWindow, cdnOrigin);
83
93
  }
@@ -92,7 +102,7 @@ const _WorldpayDDC = class _WorldpayDDC {
92
102
  }
93
103
  this.listener = (event) => {
94
104
  var _a;
95
- if (event.origin === DDC_ORIGIN) {
105
+ if (event.origin === this.config.ddcOrigin) {
96
106
  const data = JSON.parse(event.data);
97
107
  console.warn("worldpay ddc data", data);
98
108
  if (data) {
@@ -0,0 +1,61 @@
1
+ window.worldpayJSCOrigin = window.worldpayJSCOrigin || {};
2
+ console.log("window.worldpayJSCOrigin", window.worldpayJSCOrigin);
3
+ window.worldpayJSCOrigin.version = 4, window.worldpayJSCOrigin.create_url = function(t, e, r, n, c) {
4
+ function i() {
5
+ return Math.floor(2742745743359 * Math.random());
6
+ }
7
+ function a() {
8
+ return o(i());
9
+ }
10
+ function o(t2) {
11
+ return (t2 + 78364164096).toString(36);
12
+ }
13
+ var m = i(), u = i(), l = 885187064159;
14
+ u = ((u = u - u % 256 + window.worldpayJSCOrigin.version) + m) % 2742745743359, l = (l + m) % 2742745743359;
15
+ var s = "https://" + t + "/" + (m = a() + o(m)) + e, h = [(u = o(l) + o(u)) + "=" + r, a() + a() + "=" + n];
16
+ return void 0 !== c && c.length > 0 && h.push(a() + a() + "=" + c), s + "?" + h.join("&");
17
+ }, window.worldpayJSCOrigin.beacon = function(t, e, r, n) {
18
+ var c = "turn:aa.online-metrix.net?transport=", i = "1:" + e + ":" + r, a = {
19
+ iceServers: [
20
+ { urls: c + "tcp", username: i, credential: r },
21
+ { urls: c + "udp", username: i, credential: r }
22
+ ]
23
+ };
24
+ try {
25
+ var o = new RTCPeerConnection(a);
26
+ o.createDataChannel(Math.random().toString());
27
+ var m = function() {
28
+ }, u = function(t2) {
29
+ o.setLocalDescription(t2, m, m);
30
+ };
31
+ "undefined" == typeof Promise || o.createOffer.length > 0 ? o.createOffer(u, m) : o.createOffer().then(u, m), setInterval(function() {
32
+ o.close();
33
+ }, 1e4);
34
+ } catch (t2) {
35
+ }
36
+ }, window.worldpayJSCOrigin.load_tags = function(t, e, r, n) {
37
+ window.worldpayJSCOrigin.beacon(t, e, r, n);
38
+ var c = document.getElementsByTagName("head").item(0), i = document.createElement("script");
39
+ i.id = "tmx_tags_js", i.setAttribute("type", "text/javascript");
40
+ var a = window.worldpayJSCOrigin.create_url(t, ".js", e, r, n);
41
+ i.setAttribute("src", a), window.worldpayJSCOrigin.set_csp_nonce(i), c.appendChild(i);
42
+ }, window.worldpayJSCOrigin.csp_nonce = null, window.worldpayJSCOrigin.register_csp_nonce = function(t) {
43
+ if (void 0 !== t.currentScript && null !== t.currentScript) {
44
+ var e = t.currentScript.getAttribute("nonce");
45
+ null != e && "" !== e ? window.worldpayJSCOrigin.csp_nonce = e : void 0 !== t.currentScript.nonce && null !== t.currentScript.nonce && "" !== t.currentScript.nonce && (window.worldpayJSCOrigin.csp_nonce = t.currentScript.nonce);
46
+ }
47
+ }, window.worldpayJSCOrigin.set_csp_nonce = function(t) {
48
+ null !== window.worldpayJSCOrigin.csp_nonce && (t.setAttribute("nonce", window.worldpayJSCOrigin.csp_nonce), t.getAttribute("nonce") !== window.worldpayJSCOrigin.csp_nonce && (t.nonce = window.worldpayJSCOrigin.csp_nonce));
49
+ }, window.worldpayJSCOrigin.cleanup = function() {
50
+ let hp_frame = null;
51
+ let tmx_frame = null;
52
+ let tmx_script = null;
53
+ for (; null !== (hp_frame = document.getElementById("tdz_ifrm")); )
54
+ hp_frame.parentElement.removeChild(hp_frame);
55
+ for (; null !== (tmx_frame = document.getElementById("tmx_tags_iframe")); )
56
+ tmx_frame.parentElement.removeChild(tmx_frame);
57
+ for (; null !== (tmx_script = document.getElementById("tmx_tags_js")); )
58
+ tmx_script.parentElement.removeChild(tmx_script);
59
+ }, window.worldpayJSCOrigin.load = function(t, e, r, n) {
60
+ void 0 !== t && void 0 !== e && void 0 !== r && 8 === e.length && (window.worldpayJSCOrigin.cleanup(), window.worldpayJSCOrigin.register_csp_nonce(document), window.worldpayJSCOrigin.load_tags(t, e, r, n));
61
+ };
@@ -0,0 +1,68 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import "./worldpay-jsc-origin.js";
8
+ import { FraudDetectionEventType } from "../types/event.js";
9
+ const _WorldpayJSC = class _WorldpayJSC {
10
+ constructor(config, options) {
11
+ __publicField(this, "options");
12
+ __publicField(this, "fraudDetectionId", null);
13
+ __publicField(this, "config", {
14
+ // for live:
15
+ organizationId: "dzppsd1h",
16
+ profilingDomain: "ddc.worldpay.com"
17
+ // for test:
18
+ // organizationId: 'afevfjm6',
19
+ // profilingDomain: 'ddc-test.worldpay.com'
20
+ });
21
+ if (_WorldpayJSC.instance) {
22
+ return _WorldpayJSC.instance;
23
+ }
24
+ this.options = options;
25
+ this.config = {
26
+ organizationId: (config == null ? void 0 : config.organizationId) || this.config.organizationId,
27
+ profilingDomain: (config == null ? void 0 : config.profilingDomain) || this.config.profilingDomain
28
+ };
29
+ this.init();
30
+ _WorldpayJSC.instance = this;
31
+ }
32
+ init() {
33
+ const { onEvent } = this.options || {};
34
+ onEvent == null ? void 0 : onEvent(FraudDetectionEventType.WORLDPAY_JSC_START);
35
+ this.loadJSC();
36
+ }
37
+ loadJSC() {
38
+ var _a;
39
+ const { onEvent } = this.options || {};
40
+ try {
41
+ this.fraudDetectionId = this.getFraudDetectionId();
42
+ (_a = window.worldpayJSCOrigin) == null ? void 0 : _a.load(
43
+ this.config.profilingDomain,
44
+ this.config.organizationId,
45
+ this.fraudDetectionId
46
+ );
47
+ onEvent == null ? void 0 : onEvent(FraudDetectionEventType.WORLDPAY_JSC_SUCCESS);
48
+ } catch (error) {
49
+ console.error(error);
50
+ onEvent == null ? void 0 : onEvent(FraudDetectionEventType.WORLDPAY_JSC_ERROR);
51
+ }
52
+ }
53
+ /**
54
+ * 生成一个随机 fraudDetectionId
55
+ * @returns 随机生成的 fraudDetectionId
56
+ */
57
+ getFraudDetectionId() {
58
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
59
+ const r = Math.random() * 16 | 0, v = c === "x" ? r : r & 3 | 8;
60
+ return v.toString(16);
61
+ });
62
+ }
63
+ };
64
+ __publicField(_WorldpayJSC, "instance", null);
65
+ let WorldpayJSC = _WorldpayJSC;
66
+ export {
67
+ WorldpayJSC
68
+ };
@@ -2,12 +2,16 @@ var FraudDetectionEventType = /* @__PURE__ */ ((FraudDetectionEventType2) => {
2
2
  FraudDetectionEventType2["FRAUD_DETECTION_TRANSFORM_ERROR"] = "fraudDetection:transFormError";
3
3
  FraudDetectionEventType2["STRIPE_RADAR_ERROR"] = "stripeRadar:error";
4
4
  FraudDetectionEventType2["STRIPE_RADAR_LOAD_ERROR"] = "stripeRadar:loadError";
5
+ FraudDetectionEventType2["STRIPE_RADAR_API_ERROR"] = "stripeRadar:apiError";
5
6
  FraudDetectionEventType2["STRIPE_RADAR_START"] = "stripeRadar:start";
6
7
  FraudDetectionEventType2["STRIPE_RADAR_SUCCESS"] = "stripeRadar:success";
7
8
  FraudDetectionEventType2["WORLDPAY_DDC_START"] = "worldpayDDC:start";
8
9
  FraudDetectionEventType2["WORLDPAY_DDC_ERROR"] = "worldpayDDC:error";
9
10
  FraudDetectionEventType2["WORLDPAY_DDC_TIMEOUT"] = "worldpayDDC:timeout";
10
11
  FraudDetectionEventType2["WORLDPAY_DDC_SUCCESS"] = "worldpayDDC:success";
12
+ FraudDetectionEventType2["WORLDPAY_JSC_START"] = "worldpayJSC:start";
13
+ FraudDetectionEventType2["WORLDPAY_JSC_ERROR"] = "worldpayJSC:error";
14
+ FraudDetectionEventType2["WORLDPAY_JSC_SUCCESS"] = "worldpayJSC:success";
11
15
  return FraudDetectionEventType2;
12
16
  })(FraudDetectionEventType || {});
13
17
  export {
@@ -1,6 +1,7 @@
1
1
  var ECollMode = /* @__PURE__ */ ((ECollMode2) => {
2
2
  ECollMode2["SR"] = "SR";
3
3
  ECollMode2["WP"] = "WP";
4
+ ECollMode2["WJ"] = "WJ";
4
5
  return ECollMode2;
5
6
  })(ECollMode || {});
6
7
  export {