@paykka/card-checkout-ui 0.13.1 → 0.13.5

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 (158) hide show
  1. package/dist/card-checkout-ui.js +21 -21
  2. package/dist/card-checkout-ui.umd.cjs +21 -21
  3. package/dist/es/_commonjsHelpers.js +82 -1
  4. package/dist/es/api/modules/get-browser-params.js +4 -1
  5. package/dist/es/api/modules/opay-wallet/index.js +16 -0
  6. package/dist/es/api/modules/paga-wallet/index.js +16 -0
  7. package/dist/es/api/modules/pic-pay/index.js +16 -0
  8. package/dist/es/api/modules/pix/index.js +16 -0
  9. package/dist/es/api/modules/vietqr/index.js +4 -0
  10. package/dist/es/components/AliPay/index.js +29 -35
  11. package/dist/es/components/Boost/index.js +34 -40
  12. package/dist/es/components/Card/index.js +35 -39
  13. package/dist/es/components/DropIn/index.js +42 -2
  14. package/dist/es/components/EncryptedCard/index.js +5 -1
  15. package/dist/es/components/GooglePay/index.js +1 -0
  16. package/dist/es/components/GrabPay/index.js +34 -40
  17. package/dist/es/components/GuideCard/index.js +6 -1
  18. package/dist/es/components/LinePay/index.js +34 -40
  19. package/dist/es/components/MayBankQRPay/index.js +35 -41
  20. package/dist/es/components/NinePay/index.js +34 -40
  21. package/dist/es/components/SecuredFieldsProvider/index.js +23 -7
  22. package/dist/es/components/SecuredIframe/index.js +36 -59
  23. package/dist/es/components/Sepa/index.js +17 -21
  24. package/dist/es/components/ShopeePay/index.js +34 -40
  25. package/dist/es/components/TNGWallet/index.js +34 -40
  26. package/dist/es/components/ThreeDS/index.js +32 -7
  27. package/dist/es/components/WechatPay/index.js +19 -24
  28. package/dist/es/components/business/QRCodeModal/QRCodeModal.js +6 -6
  29. package/dist/es/components/index.js +5 -0
  30. package/dist/es/components/internal/Form/FormItem.js +1 -1
  31. package/dist/es/components/internal/Form/util.js +1 -1
  32. package/dist/es/components/internal/Select/SelectMenu.js +2 -2
  33. package/dist/es/components/internal/icons/IconError.js +7 -4
  34. package/dist/es/components/internal/icons/IconOpayWallet.js +71 -0
  35. package/dist/es/components/internal/icons/IconPagaWallet.js +141 -0
  36. package/dist/es/components/internal/icons/IconPaymaya.js +42 -86
  37. package/dist/es/components/internal/icons/IconPicPay.js +49 -0
  38. package/dist/es/components/internal/icons/IconPix.js +75 -0
  39. package/dist/es/components/internal/icons/IconVietqr.js +45 -0
  40. package/dist/es/components/internal/icons/IconVietqrComplete.js +49 -0
  41. package/dist/es/components/wallets/GCash/GCash.js +20 -25
  42. package/dist/es/components/wallets/OpayWallet/OpayWallet.js +346 -0
  43. package/dist/es/components/wallets/OpayWallet/index.js +1 -0
  44. package/dist/es/components/wallets/OpayWallet/opay-wallet.js +1 -0
  45. package/dist/es/components/wallets/OpayWallet/type.js +1 -0
  46. package/dist/es/components/wallets/PagaWallet/PagaWallet.js +346 -0
  47. package/dist/es/components/wallets/PagaWallet/index.js +1 -0
  48. package/dist/es/components/wallets/PagaWallet/paga-wallet.js +1 -0
  49. package/dist/es/components/wallets/PagaWallet/type.js +1 -0
  50. package/dist/es/components/wallets/Paymaya/Paymaya.js +34 -40
  51. package/dist/es/components/wallets/PicPay/PicPay.js +346 -0
  52. package/dist/es/components/wallets/PicPay/index.js +1 -0
  53. package/dist/es/components/wallets/PicPay/pic-pay.js +1 -0
  54. package/dist/es/components/wallets/PicPay/type.js +1 -0
  55. package/dist/es/components/wallets/Pix/Pix.js +346 -0
  56. package/dist/es/components/wallets/Pix/index.js +1 -0
  57. package/dist/es/components/wallets/Pix/pix2.js +1 -0
  58. package/dist/es/components/wallets/Pix/type.js +1 -0
  59. package/dist/es/components/wallets/Vietqr/Vietqr.js +380 -0
  60. package/dist/es/components/wallets/Vietqr/index.js +1 -0
  61. package/dist/es/components/wallets/Vietqr/type.js +1 -0
  62. package/dist/es/components/wallets/Vietqr/vietqr2.js +1 -0
  63. package/dist/es/components/wallets/Zalopay/Zalopay.js +17 -21
  64. package/dist/es/components/wallets/index.js +8 -0
  65. package/dist/es/constant.js +32 -2
  66. package/dist/es/core/checkout.js +24 -1
  67. package/dist/es/core/create.js +1 -1
  68. package/dist/es/core/session.js +2 -23
  69. package/dist/es/core/theme.js +65 -0
  70. package/dist/es/core.js +34 -34
  71. package/dist/es/i18n/locales/de-DE.js +8 -2
  72. package/dist/es/i18n/locales/en-GB.js +8 -2
  73. package/dist/es/i18n/locales/es-ES.js +8 -2
  74. package/dist/es/i18n/locales/fr-FR.js +8 -2
  75. package/dist/es/i18n/locales/ja-JP.js +8 -2
  76. package/dist/es/i18n/locales/ko-KR.js +8 -2
  77. package/dist/es/i18n/locales/nl-NL.js +8 -2
  78. package/dist/es/i18n/locales/pt-PT.js +8 -2
  79. package/dist/es/i18n/locales/ru-RU.js +8 -2
  80. package/dist/es/i18n/locales/zh-CN.js +10 -4
  81. package/dist/es/i18n/locales/zh-HK.js +10 -4
  82. package/dist/es/i18n/locales/zh-TW.js +10 -4
  83. package/dist/es/index.js +17 -5
  84. package/dist/es/style.css +1 -1
  85. package/dist/es/utils/format.js +0 -5
  86. package/dist/es/utils/object.js +31 -1
  87. package/dist/es/utils/string.js +10 -0
  88. package/dist/es/utils/system-info/is-ua-webview.js +14 -12
  89. package/dist/es/utils/theme.js +7 -0
  90. package/dist/style.css +1 -1
  91. package/dist/types/api/modules/get-browser-params.d.ts +1 -0
  92. package/dist/types/api/modules/index.d.ts +5 -0
  93. package/dist/types/api/modules/opay-wallet/index.d.ts +4 -0
  94. package/dist/types/api/modules/paga-wallet/index.d.ts +4 -0
  95. package/dist/types/api/modules/pic-pay/index.d.ts +4 -0
  96. package/dist/types/api/modules/pix/index.d.ts +4 -0
  97. package/dist/types/api/modules/vietqr/index.d.ts +4 -0
  98. package/dist/types/components/DropIn/type.d.ts +3 -2
  99. package/dist/types/components/SecuredFieldsProvider/type.d.ts +5 -0
  100. package/dist/types/components/SecuredIframe/HiddenIframe.d.ts +3 -1
  101. package/dist/types/components/ThreeDS/components/ThreeDSAuth/type.d.ts +2 -0
  102. package/dist/types/components/business/QRCodeModal/type.d.ts +2 -0
  103. package/dist/types/components/index.d.ts +1 -3
  104. package/dist/types/components/internal/Loading/Loading.d.ts +1 -0
  105. package/dist/types/components/internal/Select/SelectMenu.d.ts +1 -1
  106. package/dist/types/components/internal/icons/IconOpayWallet.d.ts +2 -0
  107. package/dist/types/components/internal/icons/IconPagaWallet.d.ts +2 -0
  108. package/dist/types/components/internal/icons/IconPicPay.d.ts +2 -0
  109. package/dist/types/components/internal/icons/IconPix.d.ts +2 -0
  110. package/dist/types/components/internal/icons/IconVietqr.d.ts +2 -0
  111. package/dist/types/components/internal/icons/IconVietqrComplete.d.ts +2 -0
  112. package/dist/types/components/internal/icons/index.d.ts +6 -0
  113. package/dist/types/components/wallets/OpayWallet/OpayWallet.d.ts +10 -0
  114. package/dist/types/components/wallets/OpayWallet/index.d.ts +2 -0
  115. package/dist/types/components/wallets/OpayWallet/type.d.ts +40 -0
  116. package/dist/types/components/wallets/PagaWallet/PagaWallet.d.ts +10 -0
  117. package/dist/types/components/wallets/PagaWallet/index.d.ts +2 -0
  118. package/dist/types/components/wallets/PagaWallet/type.d.ts +40 -0
  119. package/dist/types/components/wallets/PicPay/PicPay.d.ts +10 -0
  120. package/dist/types/components/wallets/PicPay/index.d.ts +2 -0
  121. package/dist/types/components/wallets/PicPay/type.d.ts +40 -0
  122. package/dist/types/components/wallets/Pix/Pix.d.ts +10 -0
  123. package/dist/types/components/wallets/Pix/index.d.ts +2 -0
  124. package/dist/types/components/wallets/Pix/type.d.ts +40 -0
  125. package/dist/types/components/wallets/Vietqr/Vietqr.d.ts +10 -0
  126. package/dist/types/components/wallets/Vietqr/index.d.ts +2 -0
  127. package/dist/types/components/wallets/Vietqr/type.d.ts +39 -0
  128. package/dist/types/components/wallets/index.d.ts +8 -0
  129. package/dist/types/components/wallets/type.d.ts +9 -0
  130. package/dist/types/constant.d.ts +11 -1
  131. package/dist/types/core/checkout.d.ts +4 -0
  132. package/dist/types/core/index.d.ts +1 -0
  133. package/dist/types/core/session.d.ts +1 -11
  134. package/dist/types/core/theme.d.ts +7 -0
  135. package/dist/types/i18n/locales/de-DE.d.ts +6 -0
  136. package/dist/types/i18n/locales/en-GB.d.ts +6 -0
  137. package/dist/types/i18n/locales/es-ES.d.ts +6 -0
  138. package/dist/types/i18n/locales/fr-FR.d.ts +6 -0
  139. package/dist/types/i18n/locales/ja-JP.d.ts +6 -0
  140. package/dist/types/i18n/locales/ko-KR.d.ts +6 -0
  141. package/dist/types/i18n/locales/nl-NL.d.ts +6 -0
  142. package/dist/types/i18n/locales/pt-PT.d.ts +6 -0
  143. package/dist/types/i18n/locales/ru-RU.d.ts +6 -0
  144. package/dist/types/i18n/locales/zh-CN.d.ts +6 -0
  145. package/dist/types/i18n/locales/zh-HK.d.ts +6 -0
  146. package/dist/types/i18n/locales/zh-TW.d.ts +6 -0
  147. package/dist/types/types/message.d.ts +29 -25
  148. package/dist/types/utils/index.d.ts +3 -2
  149. package/dist/types/utils/object.d.ts +7 -0
  150. package/dist/types/utils/string.d.ts +1 -0
  151. package/dist/types/utils/style.d.ts +1 -1
  152. package/dist/types/utils/system-info/is-ua-webview.d.ts +1 -1
  153. package/dist/types/utils/theme.d.ts +4 -0
  154. package/package.json +67 -67
  155. package/dist/es/utils/deep-freeze.js +0 -13
  156. package/dist/es/utils/obj.js +0 -22
  157. package/dist/types/utils/deep-freeze.d.ts +0 -1
  158. package/dist/types/utils/obj.d.ts +0 -6
@@ -21,6 +21,8 @@ var EFieldType = /* @__PURE__ */ ((EFieldType2) => {
21
21
  const SECURED_FILED_ATTR = "data-sf";
22
22
  const SECURED_IFRAME_CLASS_NAME = "secured-iframe";
23
23
  const HIDDEN_IFRAME_NAME = "hidden-pay-iframe";
24
+ const FIELD_IFRAME_NAME = "field-pay-iframe";
25
+ const THREE_DS_IFRAME_NAME = "three-ds-iframe";
24
26
  const getFieldElements = (rootNode) => {
25
27
  return rootNode ? Array.prototype.slice.call(rootNode.querySelectorAll(`[${SECURED_FILED_ATTR}]`)) : [];
26
28
  };
@@ -35,11 +37,12 @@ class SecuredField {
35
37
  }
36
38
  /** 初始化表单区域iframe */
37
39
  init() {
38
- const { iframeSrc, iframeClassName, fieldNode } = this.config;
40
+ const { iframeSrc, iframeClassName, fieldNode, iframeName } = this.config;
39
41
  const iframeEl = createIframe(iframeSrc);
40
42
  iframeEl.width = "100%";
41
43
  iframeEl.height = "100%";
42
44
  iframeEl.style.border = "none";
45
+ iframeEl.name = iframeName;
43
46
  fieldNode.appendChild(iframeEl);
44
47
  const iframe = fieldNode.querySelector(`.${iframeClassName}`);
45
48
  if (!iframe) {
@@ -51,10 +54,12 @@ class SecuredField {
51
54
  /** 表单区域iframe加载回调 */
52
55
  onFieldIframeLoad() {
53
56
  this.iframeWindow = this.iframe.contentWindow;
54
- const { fieldType, placeholder, style, hiddenIframeName, supportedCardBrands } = this.config;
57
+ const { fieldType, placeholder, style, hiddenIframeName, supportedCardBrands, checkoutId } = this.config;
55
58
  const data = {
56
59
  action: MessageAction.INIT,
60
+ checkoutId,
57
61
  config: {
62
+ checkoutId,
58
63
  fieldType,
59
64
  placeholder,
60
65
  style,
@@ -68,12 +73,13 @@ class SecuredField {
68
73
  }
69
74
  }
70
75
  const SecuredFieldsProvider = w((props, ref) => {
71
- const { sessionMode, i18n, targetElement } = props;
76
+ const { sessionMode, i18n, targetElement, checkoutId } = props;
72
77
  const rootNodeRef = A(null);
73
78
  const hiddenIframe = A(null);
74
79
  const payment = (formData, extraParams) => {
75
80
  const data = {
76
81
  action: MessageAction.PAYMENT,
82
+ checkoutId,
77
83
  formData,
78
84
  extraParams,
79
85
  locale: props.i18n.locale
@@ -102,7 +108,8 @@ const SecuredFieldsProvider = w((props, ref) => {
102
108
  validate: () => {
103
109
  Object.values(securedFieldMap.current).forEach((field) => {
104
110
  const data = {
105
- action: MessageAction.VALIDATE
111
+ action: MessageAction.VALIDATE,
112
+ checkoutId
106
113
  };
107
114
  postMessageToIframe(data, field.iframe.contentWindow, cdnOrigin);
108
115
  });
@@ -135,7 +142,7 @@ const SecuredFieldsProvider = w((props, ref) => {
135
142
  };
136
143
  const initHiddenIframe = async () => {
137
144
  const iframeEl = createIframe(`${cdnUrl}/secured-iframe.html`);
138
- iframeEl.name = `${HIDDEN_IFRAME_NAME}-${Date.now()}`;
145
+ iframeEl.name = `${HIDDEN_IFRAME_NAME}-${checkoutId}-${Date.now()}`;
139
146
  iframeEl.width = "0";
140
147
  iframeEl.height = "0";
141
148
  iframeEl.style.border = "none";
@@ -143,6 +150,7 @@ const SecuredFieldsProvider = w((props, ref) => {
143
150
  const data = {
144
151
  action: MessageAction.INIT,
145
152
  hidden: true,
153
+ checkoutId,
146
154
  apiUrl,
147
155
  cdnUrl,
148
156
  apiPrefix
@@ -161,6 +169,7 @@ const SecuredFieldsProvider = w((props, ref) => {
161
169
  hiddenIframeName: hiddenIframe.current.name,
162
170
  rootNode: rootNodeRef.current,
163
171
  iframeSrc: `${cdnUrl}/secured-iframe.html`,
172
+ iframeName: `${FIELD_IFRAME_NAME}-${checkoutId}-${Date.now()}`,
164
173
  iframeClassName: SECURED_IFRAME_CLASS_NAME,
165
174
  fieldType,
166
175
  placeholder: securedFieldPlaceholderMap[fieldType],
@@ -171,7 +180,8 @@ const SecuredFieldsProvider = w((props, ref) => {
171
180
  onAfterPayment: props.onAfterPayment,
172
181
  onPaymentError: props.onPaymentError,
173
182
  onPaymentTimeout: props.onPaymentTimeout,
174
- onValidStatusChanged: props.onValidStatusChanged
183
+ onValidStatusChanged: props.onValidStatusChanged,
184
+ checkoutId
175
185
  });
176
186
  });
177
187
  };
@@ -185,6 +195,10 @@ const SecuredFieldsProvider = w((props, ref) => {
185
195
  if (!Reflect.has(feedbackData, "action")) {
186
196
  return;
187
197
  }
198
+ console.log(feedbackData, checkoutId);
199
+ if (feedbackData.checkoutId !== checkoutId) {
200
+ return;
201
+ }
188
202
  switch (feedbackData.action) {
189
203
  case MessageAction.FOCUS:
190
204
  (_a = props.onFocus) == null ? void 0 : _a.call(props, feedbackData);
@@ -228,8 +242,10 @@ const SecuredFieldsProvider = w((props, ref) => {
228
242
  });
229
243
  export {
230
244
  EFieldType,
245
+ FIELD_IFRAME_NAME,
231
246
  HIDDEN_IFRAME_NAME,
232
247
  SECURED_FILED_ATTR,
233
248
  SECURED_IFRAME_CLASS_NAME,
234
- SecuredFieldsProvider
249
+ SecuredFieldsProvider,
250
+ THREE_DS_IFRAME_NAME
235
251
  };
@@ -192,6 +192,7 @@ const useSecuredInput = () => {
192
192
  };
193
193
  const inputClassNameMap = generateClassNameMap("input");
194
194
  const FieldIframe = (props) => {
195
+ const { checkoutId } = props;
195
196
  const hiddenIframe = window.parent.frames[props.hiddenIframeName];
196
197
  const inputRef = A(null);
197
198
  const { initSecuredInput, getConfigByFieldType, getCurrCardBrand, cardBin, value, brand } = useSecuredInput();
@@ -277,11 +278,15 @@ const FieldIframe = (props) => {
277
278
  }, []);
278
279
  const onReceiveMessage = (event) => {
279
280
  const { data } = event;
280
- const parsedData = safeParse(data);
281
- if (!Reflect.has(parsedData, "action")) {
281
+ const feedbackData = safeParse(data);
282
+ if (!Reflect.has(feedbackData, "action")) {
282
283
  return;
283
284
  }
284
- if (parsedData.action === MessageAction.VALIDATE) {
285
+ console.log(feedbackData, checkoutId);
286
+ if (feedbackData.checkoutId !== checkoutId) {
287
+ return;
288
+ }
289
+ if (feedbackData.action === MessageAction.VALIDATE) {
285
290
  try {
286
291
  const inputConfig = getConfigByFieldType();
287
292
  inputConfig.validator();
@@ -317,6 +322,7 @@ const FieldIframe = (props) => {
317
322
  var _a;
318
323
  const data = {
319
324
  action: MessageAction.BIN_VALUE,
325
+ checkoutId,
320
326
  binValue,
321
327
  fieldType: props.fieldType,
322
328
  brand: (_a = getCurrCardBrand(binValue)) == null ? void 0 : _a.code
@@ -326,6 +332,7 @@ const FieldIframe = (props) => {
326
332
  const sendBrandMessage = (brand2) => {
327
333
  const data = {
328
334
  action: MessageAction.BRAND,
335
+ checkoutId,
329
336
  brand: brand2,
330
337
  fieldType: props.fieldType
331
338
  };
@@ -334,6 +341,7 @@ const FieldIframe = (props) => {
334
341
  const sendFocusMessage = (focus) => {
335
342
  const data = {
336
343
  action: MessageAction.FOCUS,
344
+ checkoutId,
337
345
  focus,
338
346
  fieldType: props.fieldType
339
347
  };
@@ -357,7 +365,8 @@ const FieldIframe = (props) => {
357
365
  action: MessageAction.VALID_STATUS_CHANGED,
358
366
  status,
359
367
  errorTip: err == null ? void 0 : err.message,
360
- fieldType: props.fieldType
368
+ fieldType: props.fieldType,
369
+ checkoutId
361
370
  };
362
371
  postMessageToIframe(validData, window.parent);
363
372
  if (status !== "success") {
@@ -369,14 +378,16 @@ const FieldIframe = (props) => {
369
378
  const validWithValueData = {
370
379
  action: MessageAction.VALID_WITH_VALUE,
371
380
  value: value.current,
372
- fieldType: props.fieldType
381
+ fieldType: props.fieldType,
382
+ checkoutId
373
383
  };
374
384
  postMessageToIframe(validWithValueData, hiddenIframe, cdnOrigin);
375
385
  };
376
386
  const sendActivatedMessage = () => {
377
387
  const data = {
378
388
  action: MessageAction.ACTIVATED,
379
- fieldType: props.fieldType
389
+ fieldType: props.fieldType,
390
+ checkoutId
380
391
  };
381
392
  postMessageToIframe(data, window.parent);
382
393
  };
@@ -384,6 +395,7 @@ const FieldIframe = (props) => {
384
395
  const data = {
385
396
  action: MessageAction.VALIDATED,
386
397
  fieldType: props.fieldType,
398
+ checkoutId,
387
399
  status
388
400
  };
389
401
  postMessageToIframe(data, window.parent);
@@ -399,7 +411,7 @@ const FieldIframe = (props) => {
399
411
  }
400
412
  );
401
413
  };
402
- const HiddenIframe = () => {
414
+ const HiddenIframe = ({ checkoutId }) => {
403
415
  const formData = {
404
416
  expYear: "",
405
417
  expMonth: "",
@@ -409,59 +421,34 @@ const HiddenIframe = () => {
409
421
  const onReceiveMessage = async (event) => {
410
422
  const { data } = event;
411
423
  const parsedData = safeParse(data);
412
- console.log(parsedData);
413
424
  if (!Reflect.has(parsedData, "action")) {
414
425
  return;
415
426
  }
427
+ console.log(parsedData, checkoutId);
428
+ if (parsedData.checkoutId !== checkoutId) {
429
+ return;
430
+ }
416
431
  if (parsedData.action === MessageAction.VALID_WITH_VALUE) {
417
432
  const feedbackData = parsedData;
418
433
  switch (feedbackData.fieldType) {
419
434
  case EFieldType.CVV: {
420
435
  formData.cvv = feedbackData.value;
421
- setMessageList([
422
- ...messageList,
423
- {
424
- name: "CVV",
425
- label: `收到值:${feedbackData.value}`
426
- }
427
- ]);
428
436
  break;
429
437
  }
430
438
  case EFieldType.CARD_NUMBER: {
431
439
  formData.cardNo = trimAll(feedbackData.value);
432
- setMessageList([
433
- ...messageList,
434
- {
435
- name: "卡号",
436
- label: `收到值:${feedbackData.value}`
437
- }
438
- ]);
439
440
  break;
440
441
  }
441
442
  case EFieldType.EXPIRE_DATE: {
442
443
  const [expMonth, expYear] = feedbackData.value.split("/");
443
444
  formData.expMonth = expMonth;
444
445
  formData.expYear = `20${expYear}`;
445
- setMessageList([
446
- ...messageList,
447
- {
448
- name: "卡有效期",
449
- label: `收到值:${feedbackData.value}`
450
- }
451
- ]);
452
446
  break;
453
447
  }
454
448
  }
455
449
  } else if (parsedData.action === MessageAction.PAYMENT) {
456
450
  const feedbackData = parsedData;
457
451
  pay(feedbackData.formData, feedbackData.locale, feedbackData.extraParams);
458
- setMessageList([
459
- ...messageList,
460
- {
461
- name: "表单组件",
462
- label: `进行支付,${JSON.stringify(formData || {})}`
463
- }
464
- ]);
465
452
  } else if (parsedData.action === MessageAction.ENCRYPT_CARD) {
466
453
  const feedbackData = parsedData;
467
454
  try {
@@ -471,8 +458,6 @@ const HiddenIframe = () => {
471
458
  console.log("error", error);
472
459
  sendCardEncryptionFailedMessage(error);
473
460
  }
474
- } else if (parsedData.action === MessageAction.DEBUG_MODE) {
475
- console.log("hidden iframe 开启测试模式");
476
461
  }
477
462
  };
478
463
  y(() => {
@@ -501,6 +486,7 @@ const HiddenIframe = () => {
501
486
  const sendAfterPaymentMessage = (response) => {
502
487
  const data = {
503
488
  action: MessageAction.AFTER_PAYMENT,
489
+ checkoutId,
504
490
  response
505
491
  };
506
492
  postMessageToIframe(data, window.parent);
@@ -508,6 +494,7 @@ const HiddenIframe = () => {
508
494
  const sendPaymentErrorMessage = (error) => {
509
495
  const data = {
510
496
  action: MessageAction.PAYMENT_ERROR,
497
+ checkoutId,
511
498
  error: {
512
499
  message: error.message,
513
500
  code: error.code
@@ -517,19 +504,22 @@ const HiddenIframe = () => {
517
504
  };
518
505
  const sendPaymentTimeoutMessage = () => {
519
506
  const data = {
520
- action: MessageAction.PAYMENT_TIMEOUT
507
+ action: MessageAction.PAYMENT_TIMEOUT,
508
+ checkoutId
521
509
  };
522
510
  postMessageToIframe(data, window.parent);
523
511
  };
524
512
  const sendHiddenIframeReadyMessage = () => {
525
513
  const data = {
526
- action: MessageAction.HIDDEN_IFRAME_READY
514
+ action: MessageAction.HIDDEN_IFRAME_READY,
515
+ checkoutId
527
516
  };
528
517
  postMessageToIframe(data, window.parent);
529
518
  };
530
519
  const sendCardEncryptedMessage = (encryptedInfo) => {
531
520
  const data = {
532
521
  action: MessageAction.CARD_ENCRYPTED,
522
+ checkoutId,
533
523
  encryptedInfo
534
524
  };
535
525
  postMessageToIframe(data, window.parent);
@@ -537,6 +527,7 @@ const HiddenIframe = () => {
537
527
  const sendCardEncryptionFailedMessage = (error) => {
538
528
  const data = {
539
529
  action: MessageAction.CARD_ENCRYPTION_FAILED,
530
+ checkoutId,
540
531
  error
541
532
  };
542
533
  postMessageToIframe(data, window.parent);
@@ -544,36 +535,22 @@ const HiddenIframe = () => {
544
535
  y(() => {
545
536
  sendHiddenIframeReadyMessage();
546
537
  }, []);
547
- const [messageList, setMessageList] = h([]);
548
- const messageListRef = A(null);
549
- y(() => {
550
- if (messageListRef.current) {
551
- messageListRef.current.scrollTop = messageListRef.current.scrollHeight;
552
- }
553
- }, [messageList]);
554
- return /* @__PURE__ */ u(b, { children: /* @__PURE__ */ u("div", { style: "width: 100%; height: 100%; overflow-y: auto", ref: messageListRef, children: messageList.map((message) => /* @__PURE__ */ u("div", { style: { fontSize: "18px", marginBottom: "4px" }, children: [
555
- /* @__PURE__ */ u("span", { style: { color: "#4f43df" }, children: [
556
- "[",
557
- message.name,
558
- "]"
559
- ] }),
560
- /* @__PURE__ */ u("span", { children: [
561
- ": ",
562
- message.label
563
- ] })
564
- ] })) }) });
538
+ return /* @__PURE__ */ u(b, {});
565
539
  };
566
540
  const SecuredIframe = () => {
567
541
  const [fieldIframeConfig, setFieldIframeConfig] = h();
568
542
  const [hidden, setHidden] = h(false);
569
543
  const [hasInit, setHasInit] = h(false);
544
+ const checkoutId = A("");
570
545
  const onReceiveMessage = (event) => {
571
546
  const { data } = event;
572
547
  const feedbackData = safeParse(data);
573
548
  if (!Reflect.has(feedbackData, "action")) {
574
549
  return;
575
550
  }
551
+ console.log(feedbackData, checkoutId.current);
576
552
  if (feedbackData.action === MessageAction.INIT) {
553
+ checkoutId.current = feedbackData.checkoutId;
577
554
  setHidden(feedbackData.hidden);
578
555
  setFieldIframeConfig(feedbackData.config);
579
556
  if (feedbackData.apiUrl) {
@@ -591,7 +568,7 @@ const SecuredIframe = () => {
591
568
  return;
592
569
  };
593
570
  window.addEventListener("message", onReceiveMessage);
594
- return /* @__PURE__ */ u(b, { children: hasInit && (hidden ? /* @__PURE__ */ u(HiddenIframe, {}) : /* @__PURE__ */ u(FieldIframe, { ...fieldIframeConfig })) });
571
+ return /* @__PURE__ */ u(b, { children: hasInit && (hidden ? /* @__PURE__ */ u(HiddenIframe, { checkoutId: checkoutId.current }) : /* @__PURE__ */ u(FieldIframe, { ...fieldIframeConfig, checkoutId: checkoutId.current })) });
595
572
  };
596
573
  export {
597
574
  SecuredIframe
@@ -3,7 +3,7 @@ import { useBEM } from "../../hooks/useBEM.js";
3
3
  import { CoreContext } from "../../core/context.js";
4
4
  import "../../utils/card-brand/brands.js";
5
5
  import "../../utils/system-info/get-browser-info.js";
6
- import { cssVarPrefix, normalizedClass, formatAmount, trimAll } from "../../utils/format.js";
6
+ import { normalizedClass, formatAmount, trimAll } from "../../utils/format.js";
7
7
  import { formatPaymentResult } from "../../utils/payment.js";
8
8
  import { isTimeoutError } from "../../api/http.js";
9
9
  import { getBrowserParams } from "../../api/modules/get-browser-params.js";
@@ -25,7 +25,7 @@ import { AccountNameField } from "../AccountNameField/index.js";
25
25
  const { bem } = useBEM("sepa");
26
26
  const fieldClassNames = bem("field");
27
27
  const Sepa = w((props, ref) => {
28
- var _a, _b, _c, _d, _e, _f, _g, _h;
28
+ var _a, _b;
29
29
  const { session, core } = props;
30
30
  const addressCore = core.getAddressCore();
31
31
  let emailState = createEmailCore();
@@ -53,13 +53,6 @@ const Sepa = w((props, ref) => {
53
53
  const disabledEmail = A(false);
54
54
  const [requiredBill, setRequiredBill] = h(false);
55
55
  const [isCheckoutEnabled, setIsCheckoutEnabled] = h(false);
56
- const formStyle = {
57
- [cssVarPrefix("button-bg-color")]: (_a = session == null ? void 0 : session.colors) == null ? void 0 : _a.primary,
58
- [cssVarPrefix("button-bg-color-hover")]: (_b = session == null ? void 0 : session.colors) == null ? void 0 : _b.primaryHover,
59
- [cssVarPrefix("button-bg-color-active")]: (_c = session == null ? void 0 : session.colors) == null ? void 0 : _c.primaryActive,
60
- [cssVarPrefix("button-text-color")]: (_e = (_d = session == null ? void 0 : session.checkout) == null ? void 0 : _d.theme) == null ? void 0 : _e.payButtonTextColor,
61
- [cssVarPrefix("input-color")]: (_f = session == null ? void 0 : session.colors) == null ? void 0 : _f.primary
62
- };
63
56
  F(ref, () => ({
64
57
  updateAddress: () => {
65
58
  var _a2;
@@ -79,10 +72,13 @@ const Sepa = w((props, ref) => {
79
72
  const processOnSuccess = (res) => {
80
73
  var _a2, _b2;
81
74
  setSubmitButtonStatus("success");
82
- (_b2 = props.onSuccess) == null ? void 0 : _b2.call(props, formatPaymentResult({
83
- ...res,
84
- returnUrl: (_a2 = session == null ? void 0 : session.checkout) == null ? void 0 : _a2.returnUrl
85
- }));
75
+ (_b2 = props.onSuccess) == null ? void 0 : _b2.call(
76
+ props,
77
+ formatPaymentResult({
78
+ ...res,
79
+ returnUrl: (_a2 = session == null ? void 0 : session.checkout) == null ? void 0 : _a2.returnUrl
80
+ })
81
+ );
86
82
  };
87
83
  y(() => {
88
84
  session.ready().then(() => {
@@ -185,7 +181,7 @@ const Sepa = w((props, ref) => {
185
181
  };
186
182
  };
187
183
  async function pay(search = false, timeout) {
188
- var _a2, _b2, _c2, _d2, _e2;
184
+ var _a2, _b2, _c, _d, _e;
189
185
  try {
190
186
  const requestOptions = { locale: i18n.locale, timeout };
191
187
  let res = null;
@@ -201,7 +197,7 @@ const Sepa = w((props, ref) => {
201
197
  requestOptions
202
198
  );
203
199
  } else {
204
- const extraParams = (_d2 = (_c2 = core.config)._getExtraParams) == null ? void 0 : _d2.call(_c2, "payment", PaymentMethod.SEPA_DEBIT);
200
+ const extraParams = (_d = (_c = core.config)._getExtraParams) == null ? void 0 : _d.call(_c, "payment", PaymentMethod.SEPA_DEBIT);
205
201
  res = await sepaPay(await getPaymentParams(), extraParams, requestOptions);
206
202
  }
207
203
  return processAfterPayment(res, search);
@@ -216,14 +212,14 @@ const Sepa = w((props, ref) => {
216
212
  } else {
217
213
  const message = error.i18nKey ? i18n.get(error.i18nKey) : error.message;
218
214
  setErrorMsg(message);
219
- (_e2 = props.onError) == null ? void 0 : _e2.call(props, new PayKKaError("API_ERROR", message, { code: error.code, cause: error }));
215
+ (_e = props.onError) == null ? void 0 : _e.call(props, new PayKKaError("API_ERROR", message, { code: error.code, cause: error }));
220
216
  setSubmitButtonStatus("unSubmit");
221
217
  return { end: true };
222
218
  }
223
219
  }
224
220
  }
225
221
  const processAfterPayment = (res, search = false) => {
226
- var _a2, _b2, _c2;
222
+ var _a2, _b2, _c;
227
223
  const { status, orderStatus, errorMessage, errorCode, sessionId } = res;
228
224
  sessionId && (session.sessionId = sessionId);
229
225
  if (status === "PROCESSING") {
@@ -253,7 +249,7 @@ const Sepa = w((props, ref) => {
253
249
  return { end: true };
254
250
  } else if (status === "EXPIRED") {
255
251
  setSubmitButtonStatus("unSubmit");
256
- (_c2 = props.onExpired) == null ? void 0 : _c2.call(props);
252
+ (_c = props.onExpired) == null ? void 0 : _c.call(props);
257
253
  return { end: true };
258
254
  }
259
255
  setSubmitButtonStatus("unSubmit");
@@ -267,7 +263,7 @@ const Sepa = w((props, ref) => {
267
263
  session,
268
264
  core
269
265
  },
270
- children: sessionReady && isCheckoutEnabled && i18n.ready.value && /* @__PURE__ */ u(Form, { form, ref: setFormRef, onFormChange: (form2) => setForm(form2), children: /* @__PURE__ */ u("div", { className: normalizedClass(COMMON_CLASS_NAME, bem()), style: formStyle, children: [
266
+ children: sessionReady && isCheckoutEnabled && i18n.ready.value && /* @__PURE__ */ u("div", { className: core.theme.className, children: /* @__PURE__ */ u(Form, { form, ref: setFormRef, onFormChange: (form2) => setForm(form2), children: /* @__PURE__ */ u("div", { className: normalizedClass(COMMON_CLASS_NAME, bem()), children: [
271
267
  /* @__PURE__ */ u("div", { className: fieldClassNames, children: /* @__PURE__ */ u(
272
268
  EmailField,
273
269
  {
@@ -283,13 +279,13 @@ const Sepa = w((props, ref) => {
283
279
  {
284
280
  ref: addressFieldRef,
285
281
  value: form.address,
286
- country: ((_g = session == null ? void 0 : session.checkout) == null ? void 0 : _g.country) || ((_h = session == null ? void 0 : session.checkout) == null ? void 0 : _h.bill.country),
282
+ country: ((_a = session == null ? void 0 : session.checkout) == null ? void 0 : _a.country) || ((_b = session == null ? void 0 : session.checkout) == null ? void 0 : _b.bill.country),
287
283
  onAddressChange: (value) => setForm(Object.assign(form, { address: value }))
288
284
  }
289
285
  ) }),
290
286
  !!errorMsg && /* @__PURE__ */ u(Info, { content: errorMsg, style: { marginTop: "12px" } }),
291
287
  Button()
292
- ] }) })
288
+ ] }) }) })
293
289
  }
294
290
  );
295
291
  });