@paykka/card-checkout-ui 0.11.6 → 0.13.2

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 (217) hide show
  1. package/dist/card-checkout-ui.js +19 -19
  2. package/dist/card-checkout-ui.umd.cjs +19 -19
  3. package/dist/es/_commonjsHelpers.js +82 -1
  4. package/dist/es/api/index.js +1 -0
  5. package/dist/es/api/modules/address/index.js +9 -9
  6. package/dist/es/api/modules/ali-pay/index.js +10 -49
  7. package/dist/es/api/modules/apple-pay/index.js +13 -59
  8. package/dist/es/api/modules/boost/index.js +8 -48
  9. package/dist/es/api/modules/card/index.js +10 -54
  10. package/dist/es/api/modules/checkout/index.js +11 -9
  11. package/dist/es/api/modules/checkout/map.js +25 -18
  12. package/dist/es/api/modules/encrypted-card/index.js +3 -2
  13. package/dist/es/api/modules/gcash/index.js +8 -48
  14. package/dist/es/api/modules/get-browser-params.js +4 -1
  15. package/dist/es/api/modules/google-pay/index.js +10 -56
  16. package/dist/es/api/modules/grab-pay/index.js +8 -48
  17. package/dist/es/api/modules/index.js +1 -0
  18. package/dist/es/api/modules/line-pay/index.js +8 -48
  19. package/dist/es/api/modules/map.js +17 -11
  20. package/dist/es/api/modules/may-bank-qr-pay/index.js +8 -48
  21. package/dist/es/api/modules/nine-pay/index.js +8 -48
  22. package/dist/es/api/modules/paymaya/index.js +8 -48
  23. package/dist/es/api/modules/risk/index.js +2 -1
  24. package/dist/es/api/modules/sepa/index.js +10 -51
  25. package/dist/es/api/modules/shopee-pay/index.js +8 -48
  26. package/dist/es/api/modules/threeDS/index.js +3 -0
  27. package/dist/es/api/modules/tng-wallet/index.js +8 -48
  28. package/dist/es/api/modules/wechat-pay/index.js +10 -51
  29. package/dist/es/api/modules/zalopay/index.js +16 -0
  30. package/dist/es/api/utils/index.js +59 -0
  31. package/dist/es/components/AddressField/index.js +37 -37
  32. package/dist/es/components/AliPay/index.js +158 -111
  33. package/dist/es/components/ApplePay/index.js +99 -67
  34. package/dist/es/components/Boost/index.js +91 -70
  35. package/dist/es/components/Card/index.js +114 -107
  36. package/dist/es/components/CardSelector/index.js +1 -1
  37. package/dist/es/components/DropIn/index.js +12 -4
  38. package/dist/es/components/EncryptedCard/index.js +6 -2
  39. package/dist/es/components/GooglePay/index.js +94 -60
  40. package/dist/es/components/GrabPay/index.js +91 -70
  41. package/dist/es/components/GuideCard/index.js +10 -7
  42. package/dist/es/components/LinePay/index.js +91 -70
  43. package/dist/es/components/MayBankQRPay/index.js +302 -275
  44. package/dist/es/components/NinePay/index.js +91 -70
  45. package/dist/es/components/SecuredFieldsProvider/index.js +26 -9
  46. package/dist/es/components/SecuredIframe/index.js +40 -61
  47. package/dist/es/components/Sepa/index.js +72 -53
  48. package/dist/es/components/ShopeePay/index.js +91 -70
  49. package/dist/es/components/SubmitButton/index.js +8 -7
  50. package/dist/es/components/TNGWallet/index.js +91 -70
  51. package/dist/es/components/ThreeDS/index.js +32 -7
  52. package/dist/es/components/WechatPay/index.js +151 -102
  53. package/dist/es/components/business/QRCodeModal/QRCodeModal.js +26 -6
  54. package/dist/es/components/index.js +1 -0
  55. package/dist/es/components/internal/Form/FormItem.js +1 -1
  56. package/dist/es/components/internal/Form/util.js +1 -1
  57. package/dist/es/components/internal/Modal/Modal.js +1 -1
  58. package/dist/es/components/internal/Select/Select.js +19 -8
  59. package/dist/es/components/internal/Select/SelectMenu.js +2 -2
  60. package/dist/es/components/internal/Select/SelectMenuItem.js +12 -4
  61. package/dist/es/components/internal/icons/IconError.js +7 -4
  62. package/dist/es/components/internal/icons/IconZalopay.js +47 -0
  63. package/dist/es/components/internal/icons/IconZalopayComplete.js +48 -0
  64. package/dist/es/components/wallets/GCash/GCash.js +80 -56
  65. package/dist/es/components/wallets/Paymaya/Paymaya.js +91 -70
  66. package/dist/es/components/wallets/Zalopay/Zalopay.js +381 -0
  67. package/dist/es/components/wallets/Zalopay/index.js +1 -0
  68. package/dist/es/components/wallets/Zalopay/type.js +1 -0
  69. package/dist/es/components/wallets/Zalopay/zalopay2.js +1 -0
  70. package/dist/es/config.js +5 -5
  71. package/dist/es/constant.js +8 -2
  72. package/dist/es/core/{Address.js → address.js} +8 -16
  73. package/dist/es/core/{PayKKaCheckout.js → checkout.js} +101 -27
  74. package/dist/es/core/create.js +1 -1
  75. package/dist/es/core/query.js +3 -2
  76. package/dist/es/core/{Session.js → session.js} +28 -32
  77. package/dist/es/core/theme.js +65 -0
  78. package/dist/es/core.js +0 -4
  79. package/dist/es/hooks/usePayment.js +14 -0
  80. package/dist/es/i18n/locales/de-DE.js +3 -1
  81. package/dist/es/i18n/locales/en-GB.js +3 -1
  82. package/dist/es/i18n/locales/es-ES.js +3 -1
  83. package/dist/es/i18n/locales/fr-FR.js +3 -1
  84. package/dist/es/i18n/locales/ja-JP.js +3 -1
  85. package/dist/es/i18n/locales/ko-KR.js +3 -1
  86. package/dist/es/i18n/locales/nl-NL.js +3 -1
  87. package/dist/es/i18n/locales/pt-PT.js +3 -1
  88. package/dist/es/i18n/locales/ru-RU.js +3 -1
  89. package/dist/es/i18n/locales/zh-CN.js +3 -1
  90. package/dist/es/i18n/locales/zh-HK.js +3 -1
  91. package/dist/es/i18n/locales/zh-TW.js +3 -1
  92. package/dist/es/index.js +21 -7
  93. package/dist/es/style.css +1 -1
  94. package/dist/es/types/index.js +7 -0
  95. package/dist/es/utils/colors.js +5 -1
  96. package/dist/es/utils/format.js +0 -5
  97. package/dist/es/utils/object.js +31 -1
  98. package/dist/es/utils/payment.js +82 -0
  99. package/dist/es/utils/redirect.js +4 -4
  100. package/dist/es/utils/string.js +10 -0
  101. package/dist/es/utils/system-info/is-ua-webview.js +14 -12
  102. package/dist/es/utils/theme.js +7 -0
  103. package/dist/style.css +1 -1
  104. package/dist/types/api/modules/address/index.d.ts +15 -6
  105. package/dist/types/api/modules/ali-pay/index.d.ts +3 -19
  106. package/dist/types/api/modules/apple-pay/index.d.ts +4 -14
  107. package/dist/types/api/modules/boost/index.d.ts +3 -23
  108. package/dist/types/api/modules/card/index.d.ts +3 -30
  109. package/dist/types/api/modules/checkout/index.d.ts +3 -3
  110. package/dist/types/api/modules/checkout/map.d.ts +3 -3
  111. package/dist/types/api/modules/checkout/type.d.ts +33 -4
  112. package/dist/types/api/modules/gcash/index.d.ts +3 -23
  113. package/dist/types/api/modules/get-browser-params.d.ts +1 -0
  114. package/dist/types/api/modules/google-pay/index.d.ts +3 -13
  115. package/dist/types/api/modules/grab-pay/index.d.ts +3 -23
  116. package/dist/types/api/modules/index.d.ts +1 -0
  117. package/dist/types/api/modules/line-pay/index.d.ts +3 -23
  118. package/dist/types/api/modules/map.d.ts +2 -2
  119. package/dist/types/api/modules/may-bank-qr-pay/index.d.ts +3 -23
  120. package/dist/types/api/modules/nine-pay/index.d.ts +3 -23
  121. package/dist/types/api/modules/paymaya/index.d.ts +3 -23
  122. package/dist/types/api/modules/sepa/index.d.ts +3 -24
  123. package/dist/types/api/modules/shopee-pay/index.d.ts +3 -23
  124. package/dist/types/api/modules/tng-wallet/index.d.ts +3 -23
  125. package/dist/types/api/modules/type.d.ts +74 -21
  126. package/dist/types/api/modules/wechat-pay/index.d.ts +3 -20
  127. package/dist/types/api/modules/zalopay/index.d.ts +4 -0
  128. package/dist/types/api/utils/index.d.ts +48 -0
  129. package/dist/types/components/AddressField/type.d.ts +3 -9
  130. package/dist/types/components/AliPay/AliPay.d.ts +6 -2
  131. package/dist/types/components/AliPay/type.d.ts +15 -2
  132. package/dist/types/components/ApplePay/ApplePay.d.ts +6 -2
  133. package/dist/types/components/ApplePay/type.d.ts +10 -14
  134. package/dist/types/components/ApplePay/utils.d.ts +1 -1
  135. package/dist/types/components/Boost/Boost.d.ts +6 -2
  136. package/dist/types/components/Boost/type.d.ts +2 -24
  137. package/dist/types/components/Card/Card.d.ts +6 -2
  138. package/dist/types/components/Card/type.d.ts +3 -43
  139. package/dist/types/components/DropIn/DropIn.d.ts +6 -2
  140. package/dist/types/components/DropIn/type.d.ts +4 -10
  141. package/dist/types/components/GooglePay/GooglePay.d.ts +6 -2
  142. package/dist/types/components/GooglePay/createGooglePay.d.ts +2 -1
  143. package/dist/types/components/GooglePay/type.d.ts +10 -26
  144. package/dist/types/components/GrabPay/GrabPay.d.ts +6 -2
  145. package/dist/types/components/GrabPay/type.d.ts +3 -25
  146. package/dist/types/components/LinePay/LinePay.d.ts +6 -2
  147. package/dist/types/components/LinePay/type.d.ts +3 -25
  148. package/dist/types/components/MayBankQRPay/MayBankQRPay.d.ts +6 -2
  149. package/dist/types/components/MayBankQRPay/type.d.ts +3 -25
  150. package/dist/types/components/NinePay/NinePay.d.ts +6 -2
  151. package/dist/types/components/NinePay/type.d.ts +3 -25
  152. package/dist/types/components/SecuredFieldsProvider/type.d.ts +5 -0
  153. package/dist/types/components/SecuredIframe/HiddenIframe.d.ts +3 -1
  154. package/dist/types/components/Sepa/Sepa.d.ts +6 -2
  155. package/dist/types/components/Sepa/type.d.ts +3 -2
  156. package/dist/types/components/ShopeePay/ShopeePay.d.ts +6 -2
  157. package/dist/types/components/ShopeePay/type.d.ts +3 -25
  158. package/dist/types/components/TNGWallet/TNGWallet.d.ts +6 -2
  159. package/dist/types/components/TNGWallet/type.d.ts +3 -25
  160. package/dist/types/components/ThreeDS/components/ThreeDSAuth/type.d.ts +2 -0
  161. package/dist/types/components/WechatPay/WechatPay.d.ts +6 -2
  162. package/dist/types/components/WechatPay/type.d.ts +15 -2
  163. package/dist/types/components/business/QRCodeModal/type.d.ts +2 -0
  164. package/dist/types/components/index.d.ts +1 -0
  165. package/dist/types/components/internal/Loading/Loading.d.ts +1 -0
  166. package/dist/types/components/internal/Select/SelectMenu.d.ts +1 -1
  167. package/dist/types/components/internal/icons/IconZalopay.d.ts +2 -0
  168. package/dist/types/components/internal/icons/IconZalopayComplete.d.ts +2 -0
  169. package/dist/types/components/internal/icons/index.d.ts +3 -0
  170. package/dist/types/components/wallets/GCash/GCash.d.ts +6 -2
  171. package/dist/types/components/wallets/GCash/type.d.ts +3 -35
  172. package/dist/types/components/wallets/Paymaya/Paymaya.d.ts +6 -2
  173. package/dist/types/components/wallets/Paymaya/type.d.ts +3 -25
  174. package/dist/types/components/wallets/Zalopay/Zalopay.d.ts +10 -0
  175. package/dist/types/components/wallets/Zalopay/index.d.ts +2 -0
  176. package/dist/types/components/wallets/Zalopay/type.d.ts +39 -0
  177. package/dist/types/config.d.ts +2 -4
  178. package/dist/types/constant.d.ts +3 -1
  179. package/dist/types/core/{Address.d.ts → address.d.ts} +23 -24
  180. package/dist/types/core/{PayKKaCheckout.d.ts → checkout.d.ts} +9 -3
  181. package/dist/types/core/context.d.ts +3 -2
  182. package/dist/types/core/index.d.ts +3 -2
  183. package/dist/types/core/query.d.ts +2 -2
  184. package/dist/types/core/session.d.ts +23 -0
  185. package/dist/types/core/theme.d.ts +7 -0
  186. package/dist/types/hooks/index.d.ts +1 -0
  187. package/dist/types/hooks/usePayment.d.ts +8 -0
  188. package/dist/types/i18n/locales/de-DE.d.ts +2 -0
  189. package/dist/types/i18n/locales/en-GB.d.ts +2 -0
  190. package/dist/types/i18n/locales/es-ES.d.ts +2 -0
  191. package/dist/types/i18n/locales/fr-FR.d.ts +2 -0
  192. package/dist/types/i18n/locales/ja-JP.d.ts +2 -0
  193. package/dist/types/i18n/locales/ko-KR.d.ts +2 -0
  194. package/dist/types/i18n/locales/nl-NL.d.ts +2 -0
  195. package/dist/types/i18n/locales/pt-PT.d.ts +2 -0
  196. package/dist/types/i18n/locales/ru-RU.d.ts +2 -0
  197. package/dist/types/i18n/locales/zh-CN.d.ts +2 -0
  198. package/dist/types/i18n/locales/zh-HK.d.ts +2 -0
  199. package/dist/types/i18n/locales/zh-TW.d.ts +2 -0
  200. package/dist/types/index.d.ts +2 -1
  201. package/dist/types/types/index.d.ts +70 -32
  202. package/dist/types/types/message.d.ts +30 -25
  203. package/dist/types/utils/card-brand/index.d.ts +3 -3
  204. package/dist/types/utils/colors.d.ts +1 -0
  205. package/dist/types/utils/index.d.ts +4 -2
  206. package/dist/types/utils/object.d.ts +7 -0
  207. package/dist/types/utils/payment.d.ts +37 -0
  208. package/dist/types/utils/string.d.ts +1 -0
  209. package/dist/types/utils/style.d.ts +1 -1
  210. package/dist/types/utils/system-info/is-ua-webview.d.ts +1 -1
  211. package/dist/types/utils/theme.d.ts +4 -0
  212. package/package.json +3 -3
  213. package/dist/es/utils/deep-freeze.js +0 -13
  214. package/dist/es/utils/obj.js +0 -22
  215. package/dist/types/core/Session.d.ts +0 -16
  216. package/dist/types/utils/deep-freeze.d.ts +0 -1
  217. package/dist/types/utils/obj.d.ts +0 -6
@@ -1,10 +1,12 @@
1
1
  import { w, h, y, q, u, b } from "../../core.js";
2
2
  import { isTimeoutError } from "../../api/http.js";
3
- import { SessionMode, PaymentMethod } from "../../constant.js";
4
3
  import "../../utils/card-brand/brands.js";
5
4
  import "../../utils/system-info/get-browser-info.js";
6
5
  import { parseE164, underscoreToUpperCamelCase } from "../../utils/format.js";
6
+ import { deepMerge } from "../../utils/object.js";
7
+ import { formatPaymentResult } from "../../utils/payment.js";
7
8
  import { getBrowserParams } from "../../api/modules/get-browser-params.js";
9
+ import { SessionMode, PaymentMethod } from "../../constant.js";
8
10
  import { getApplePayInfo, applePay, getMerchantSession } from "../../api/modules/apple-pay/index.js";
9
11
  import { useBEM } from "../../hooks/useBEM.js";
10
12
  import "../../core/context.js";
@@ -29,7 +31,7 @@ async function applePayEnv(id) {
29
31
  if (!id || !ApplePaySession)
30
32
  return false;
31
33
  if (!((_a = ApplePaySession.canMakePayments) == null ? void 0 : _a.call(ApplePaySession))) {
32
- return;
34
+ return false;
33
35
  }
34
36
  const capabilities = await ((_b = ApplePaySession.applePayCapabilities) == null ? void 0 : _b.call(ApplePaySession, id));
35
37
  if ([
@@ -42,21 +44,39 @@ async function applePayEnv(id) {
42
44
  return false;
43
45
  }
44
46
  const { bem } = useBEM("apple-pay");
47
+ const DEFAULT_APPLE_PAY_CONFIG = {
48
+ request: {
49
+ requiredBillingContactFields: ["name", "email"],
50
+ requiredShippingContactFields: ["email"]
51
+ },
52
+ button: {
53
+ buttonStyle: "black",
54
+ buttonType: "plain"
55
+ }
56
+ };
45
57
  const ApplePay = w((props) => {
46
- const { session, isDropIn } = props;
58
+ const { session, isDropIn, core, config } = props;
47
59
  let applePaySession;
48
60
  const { i18n, sessionReady, fraudDetection } = usePayState(session, props.core);
49
61
  const [errorMsg, setErrorMsg] = h("");
50
62
  const [showApplePay, setShowApplePay] = h(false);
51
- const getPaymentSuccessData = () => ({
52
- returnUrl: session == null ? void 0 : session.checkout.returnUrl
53
- });
63
+ const applePayConfig = deepMerge(DEFAULT_APPLE_PAY_CONFIG, config || {});
64
+ const processOnSuccess = (res) => {
65
+ var _a, _b;
66
+ (_b = props.onSuccess) == null ? void 0 : _b.call(
67
+ props,
68
+ formatPaymentResult({
69
+ ...res,
70
+ returnUrl: (_a = session == null ? void 0 : session.checkout) == null ? void 0 : _a.returnUrl
71
+ })
72
+ );
73
+ };
54
74
  y(() => {
55
- var _a, _b, _c;
75
+ var _a, _b;
56
76
  if (!sessionReady) {
57
77
  return;
58
78
  }
59
- const { status, paymentMethod = [], sessionMode } = (session == null ? void 0 : session.checkout) || {};
79
+ const { status, supportMethods = [], sessionMode } = (session == null ? void 0 : session.checkout) || {};
60
80
  if (sessionMode === SessionMode.DROP_IN && !isDropIn) {
61
81
  (_b = (_a = props.core.config).onInitError) == null ? void 0 : _b.call(
62
82
  _a,
@@ -64,20 +84,18 @@ const ApplePay = w((props) => {
64
84
  );
65
85
  return;
66
86
  }
67
- if (!paymentMethod.includes(PaymentMethod.APPLE_PAY)) {
87
+ if (!supportMethods.includes(PaymentMethod.APPLE_PAY)) {
68
88
  return;
69
89
  }
70
90
  loadApplePayJS(
71
91
  async () => {
72
- var _a2, _b2, _c2, _d;
92
+ var _a2, _b2, _c, _d, _e;
93
+ (_a2 = props.onLoad) == null ? void 0 : _a2.call(props, true);
73
94
  const envSupported = await applePayEnv(
74
- (_c2 = (_b2 = (_a2 = session == null ? void 0 : session.checkout) == null ? void 0 : _a2.channelParams) == null ? void 0 : _b2.applePay) == null ? void 0 : _c2.merchantIdentifier
95
+ (_d = (_c = (_b2 = session == null ? void 0 : session.checkout) == null ? void 0 : _b2.channelParams) == null ? void 0 : _c.applePay) == null ? void 0 : _d.merchantIdentifier
75
96
  );
76
- if (!envSupported) {
77
- return;
78
- }
79
- setShowApplePay(true);
80
- (_d = props.onLoad) == null ? void 0 : _d.call(props, true);
97
+ (_e = props.onCanUse) == null ? void 0 : _e.call(props, envSupported);
98
+ setShowApplePay(envSupported);
81
99
  },
82
100
  () => {
83
101
  var _a2;
@@ -86,7 +104,7 @@ const ApplePay = w((props) => {
86
104
  }
87
105
  );
88
106
  if (status === "SUCCESS") {
89
- (_c = props.onSuccess) == null ? void 0 : _c.call(props, getPaymentSuccessData());
107
+ processOnSuccess(session == null ? void 0 : session.checkout);
90
108
  }
91
109
  }, [sessionReady]);
92
110
  const onTimeout = q(
@@ -105,59 +123,72 @@ const ApplePay = w((props) => {
105
123
  const { start: startReFetchPayInfo } = useRetry((timeout) => pay(true, timeout), {
106
124
  onTimeout: () => onTimeout(i18n.get("common.queryTimeout"))
107
125
  });
126
+ const getPaymentParams = async (token, billingContact, shippingContact) => {
127
+ var _a, _b;
128
+ const phone = parseE164(billingContact == null ? void 0 : billingContact.phoneNumber);
129
+ return {
130
+ sessionId: session.sessionId,
131
+ clientKey: session.clientKey,
132
+ bill: {
133
+ firstName: billingContact == null ? void 0 : billingContact.familyName,
134
+ lastName: billingContact == null ? void 0 : billingContact.givenName,
135
+ addressLine1: (_a = billingContact == null ? void 0 : billingContact.addressLines) == null ? void 0 : _a[0],
136
+ addressLine2: (_b = billingContact == null ? void 0 : billingContact.addressLines) == null ? void 0 : _b[1],
137
+ state: billingContact == null ? void 0 : billingContact.administrativeArea,
138
+ city: billingContact == null ? void 0 : billingContact.locality,
139
+ postalCode: billingContact == null ? void 0 : billingContact.postalCode,
140
+ areaCode: phone == null ? void 0 : phone.areaCode,
141
+ phoneNumber: phone == null ? void 0 : phone.phoneNumber,
142
+ email: (billingContact == null ? void 0 : billingContact.emailAddress) || (shippingContact == null ? void 0 : shippingContact.emailAddress) || (session == null ? void 0 : session.checkout.bill.email),
143
+ country: billingContact == null ? void 0 : billingContact.countryCode
144
+ },
145
+ payment: {
146
+ paymentMethod: PaymentMethod.APPLE_PAY,
147
+ tokenData: JSON.stringify({ token })
148
+ },
149
+ browser: await getBrowserParams({
150
+ fraudDetectionId: await (fraudDetection == null ? void 0 : fraudDetection.getFraudDetectionId())
151
+ })
152
+ };
153
+ };
108
154
  async function pay(search = false, timeout, token, billingContact, shippingContact) {
109
- var _a, _b, _c, _d, _e, _f, _g;
155
+ var _a, _b, _c, _d, _e, _f, _g, _h;
110
156
  setErrorMsg("");
111
157
  try {
112
- const res = await (search ? getApplePayInfo(
113
- {
114
- sessionId: session.sessionId,
115
- clientKey: session.clientKey
116
- },
117
- { locale: i18n.locale, timeout }
118
- ) : async function() {
119
- var _a2, _b2;
120
- const phone = parseE164(billingContact == null ? void 0 : billingContact.phoneNumber);
121
- return applePay(
158
+ const requestOptions = { locale: i18n.locale, timeout };
159
+ let res = null;
160
+ if (search) {
161
+ const extraParams = (_b = (_a = core.config)._getExtraParams) == null ? void 0 : _b.call(_a, "query", PaymentMethod.APPLE_PAY);
162
+ res = await getApplePayInfo(
122
163
  {
123
164
  sessionId: session.sessionId,
124
165
  clientKey: session.clientKey,
125
- token: JSON.stringify({
126
- token
127
- }),
128
- bill: {
129
- firstName: billingContact == null ? void 0 : billingContact.familyName,
130
- lastName: billingContact == null ? void 0 : billingContact.givenName,
131
- addressLine1: (_a2 = billingContact == null ? void 0 : billingContact.addressLines) == null ? void 0 : _a2[0],
132
- addressLine2: (_b2 = billingContact == null ? void 0 : billingContact.addressLines) == null ? void 0 : _b2[1],
133
- state: billingContact == null ? void 0 : billingContact.administrativeArea,
134
- city: billingContact == null ? void 0 : billingContact.locality,
135
- postalCode: billingContact == null ? void 0 : billingContact.postalCode,
136
- areaCode: phone == null ? void 0 : phone.areaCode,
137
- phoneNumber: phone == null ? void 0 : phone.phoneNumber,
138
- email: (billingContact == null ? void 0 : billingContact.emailAddress) || (shippingContact == null ? void 0 : shippingContact.emailAddress) || (session == null ? void 0 : session.checkout.bill.email),
139
- country: billingContact == null ? void 0 : billingContact.countryCode
140
- },
141
- browser: await getBrowserParams({
142
- fraudDetectionId: await (fraudDetection == null ? void 0 : fraudDetection.getFraudDetectionId())
143
- })
166
+ paymentMethod: PaymentMethod.APPLE_PAY
144
167
  },
145
- props.core,
146
- { locale: i18n.locale }
168
+ extraParams,
169
+ requestOptions
170
+ );
171
+ } else {
172
+ const extraParams = (_d = (_c = core.config)._getExtraParams) == null ? void 0 : _d.call(_c, "payment", PaymentMethod.APPLE_PAY);
173
+ res = await applePay(
174
+ await getPaymentParams(token, billingContact, shippingContact),
175
+ extraParams,
176
+ requestOptions
147
177
  );
148
- }());
149
- const { status, orderStatus, errorMessage, errorCode } = res;
178
+ }
179
+ const { status, orderStatus, errorMessage, errorCode, sessionId } = res;
180
+ sessionId && (session.sessionId = sessionId);
150
181
  if (status === "PROCESSING") {
151
182
  if (orderStatus === "SUCCESS") {
152
183
  applePaySession.completePayment({ status: 0 });
153
- (_a = props.onSuccess) == null ? void 0 : _a.call(props, getPaymentSuccessData());
184
+ processOnSuccess(res);
154
185
  return { end: true };
155
186
  } else if (orderStatus === "PROCESSING") {
156
187
  !search && await startReFetchPayInfo();
157
188
  return { end: !search };
158
189
  } else if (orderStatus === "FAILURE") {
159
- setErrorMsg(errorMessage);
160
- (_b = props.onError) == null ? void 0 : _b.call(props, new PayKKaError("API_ERROR", errorMessage, { code: errorCode }));
190
+ errorMessage && setErrorMsg(errorMessage);
191
+ (_e = props.onError) == null ? void 0 : _e.call(props, new PayKKaError("API_ERROR", errorMessage, { code: errorCode }));
161
192
  applePaySession.completePayment({
162
193
  status: 1,
163
194
  errors: [new ApplePayError("unknown", void 0, errorMessage)]
@@ -165,7 +196,7 @@ const ApplePay = w((props) => {
165
196
  return { end: true };
166
197
  } else if (orderStatus === "AUTHORIZED") {
167
198
  applePaySession.completePayment({ status: 0 });
168
- (_c = props.onAuthorized) == null ? void 0 : _c.call(props);
199
+ (_f = props.onAuthorized) == null ? void 0 : _f.call(props);
169
200
  return { end: true };
170
201
  } else if (!orderStatus) {
171
202
  applePaySession.completePayment({
@@ -175,15 +206,15 @@ const ApplePay = w((props) => {
175
206
  return { end: true };
176
207
  }
177
208
  } else if (status === "SUCCESS") {
178
- (_d = props.onSuccess) == null ? void 0 : _d.call(props, getPaymentSuccessData());
209
+ processOnSuccess(res);
179
210
  applePaySession.completePayment({ status: 0 });
180
211
  return { end: true };
181
212
  } else if (status === "EXPIRED") {
182
- (_e = props.onExpired) == null ? void 0 : _e.call(props);
213
+ (_g = props.onExpired) == null ? void 0 : _g.call(props);
183
214
  applePaySession.abort();
184
215
  return { end: true };
185
216
  }
186
- (_f = props.onSuccess) == null ? void 0 : _f.call(props, getPaymentSuccessData());
217
+ processOnSuccess(res);
187
218
  return { end: true };
188
219
  } catch (error) {
189
220
  if (isTimeoutError(error)) {
@@ -195,8 +226,8 @@ const ApplePay = w((props) => {
195
226
  }
196
227
  } else {
197
228
  const message = error.i18nKey ? i18n.get(error.i18nKey) : error.message;
198
- setErrorMsg(message);
199
- (_g = props.onError) == null ? void 0 : _g.call(props, new PayKKaError("API_ERROR", message, { code: error.code, cause: error }));
229
+ message && setErrorMsg(message);
230
+ (_h = props.onError) == null ? void 0 : _h.call(props, new PayKKaError("API_ERROR", message, { code: error.code, cause: error }));
200
231
  applePaySession.completePayment({
201
232
  status: 1,
202
233
  errors: [new ApplePayError("unknown", void 0, message)]
@@ -206,15 +237,15 @@ const ApplePay = w((props) => {
206
237
  }
207
238
  }
208
239
  function onApplePayButtonClicked() {
209
- var _a, _b, _c, _d;
240
+ var _a, _b, _c, _d, _e, _f;
210
241
  (_a = props.onBtnClick) == null ? void 0 : _a.call(props);
211
242
  if (!ApplePaySession) {
212
243
  return;
213
244
  }
214
245
  const checkout = session == null ? void 0 : session.checkout;
215
246
  const { applePay: applePay2 } = (checkout == null ? void 0 : checkout.channelParams) ?? {};
216
- const requiredBillingContactFields = ["name", "email"];
217
- if (((_b = checkout == null ? void 0 : checkout.bill) == null ? void 0 : _b.billingAddressCollection) === "REQUIRED") {
247
+ const requiredBillingContactFields = ((_b = applePayConfig.request) == null ? void 0 : _b.requiredBillingContactFields) || [];
248
+ if (((_c = checkout == null ? void 0 : checkout.bill) == null ? void 0 : _c.billingAddressCollection) === "REQUIRED") {
218
249
  requiredBillingContactFields.push("postalAddress");
219
250
  }
220
251
  const request = {
@@ -224,10 +255,10 @@ const ApplePay = w((props) => {
224
255
  // 接口取:会员注册地址
225
256
  requiredBillingContactFields,
226
257
  // 接口取:required: "name", "postalAddress", "email"; 否则: "name", "email"
227
- requiredShippingContactFields: ["email"],
258
+ requiredShippingContactFields: (_d = applePayConfig.request) == null ? void 0 : _d.requiredShippingContactFields,
228
259
  currencyCode: (checkout == null ? void 0 : checkout.transAmount.currency) ?? "",
229
260
  // 接口取
230
- supportedNetworks: ((_d = (_c = applePay2 == null ? void 0 : applePay2.supportedNetworks) == null ? void 0 : _c.map) == null ? void 0 : _d.call(_c, (item) => underscoreToUpperCamelCase(item))) ?? [],
261
+ supportedNetworks: ((_f = (_e = applePay2 == null ? void 0 : applePay2.supportedNetworks) == null ? void 0 : _e.map) == null ? void 0 : _f.call(_e, (item) => underscoreToUpperCamelCase(item))) ?? [],
231
262
  // 接口获取
232
263
  total: {
233
264
  label: (checkout == null ? void 0 : checkout.theme.merchantName) ?? "",
@@ -264,12 +295,13 @@ const ApplePay = w((props) => {
264
295
  applePaySession.begin();
265
296
  }
266
297
  const Button = () => {
298
+ var _a, _b;
267
299
  return /* @__PURE__ */ u("div", { className: bem("button"), children: /* @__PURE__ */ u(
268
300
  "apple-pay-button",
269
301
  {
270
302
  id: "apple-pay-button",
271
- buttonstyle: "black",
272
- type: "plain",
303
+ buttonstyle: (_a = applePayConfig.button) == null ? void 0 : _a.buttonStyle,
304
+ type: (_b = applePayConfig.button) == null ? void 0 : _b.buttonType,
273
305
  onClick: onApplePayButtonClicked
274
306
  }
275
307
  ) });
@@ -3,18 +3,17 @@ 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 } from "../../utils/format.js";
6
+ import { normalizedClass, formatAmount } from "../../utils/format.js";
7
7
  import { redirectToPayment } from "../../utils/redirect.js";
8
+ import { formatPaymentResult } from "../../utils/payment.js";
8
9
  import { isTimeoutError } from "../../api/http.js";
9
- import { PaymentCategory, COMMON_CLASS_NAME, PaymentMethod, SessionMode } from "../../constant.js";
10
10
  import { getBrowserParams } from "../../api/modules/get-browser-params.js";
11
+ import { PaymentCategory, COMMON_CLASS_NAME, PaymentMethod, SessionMode } from "../../constant.js";
11
12
  import { getBoostPayInfo, boostPay } from "../../api/modules/boost/index.js";
12
13
  import { PayKKaError } from "../../core/error.js";
13
- import { hidePaymentButton } from "../../config.js";
14
14
  import { usePayState } from "../../hooks/usePayState.js";
15
15
  import { useRetry } from "../../hooks/useRetry.js";
16
16
  import { createEmailCore, EmailField } from "../EmailField/EmailField.js";
17
- import { createAddressCore } from "../../core/Address.js";
18
17
  import { SubmitButton } from "../SubmitButton/index.js";
19
18
  import "../internal/Form/type.js";
20
19
  import "../internal/Form/context.js";
@@ -26,7 +25,6 @@ import { GuideCard } from "../GuideCard/index.js";
26
25
  const { bem } = useBEM("boost");
27
26
  const fieldClassNames = bem("field");
28
27
  const Boost = w((props, ref) => {
29
- var _a, _b, _c, _d, _e, _f;
30
28
  const {
31
29
  session,
32
30
  showEmail = false,
@@ -34,7 +32,8 @@ const Boost = w((props, ref) => {
34
32
  redirectMode = "auto",
35
33
  core,
36
34
  autoQuery = true,
37
- showGuideCard = true
35
+ showGuideCard = true,
36
+ hidePaymentButton = false
38
37
  } = props;
39
38
  F(ref, () => ({
40
39
  stopRetry: () => {
@@ -46,26 +45,28 @@ const Boost = w((props, ref) => {
46
45
  startReFetchPayInfo({ timeout });
47
46
  },
48
47
  updateAddress: () => {
49
- var _a2;
48
+ var _a;
50
49
  if (!(fieldStatus == null ? void 0 : fieldStatus.address.show))
51
50
  return;
52
- setForm(Object.assign(form, { address: addressState.getAddressState() }));
53
- (_a2 = addressFieldRef.current) == null ? void 0 : _a2.update(addressState.getAddressState());
51
+ const newForm = Object.assign(form, { address: addressCore.getAddressState() });
52
+ setForm(newForm);
53
+ (_a = addressFieldRef.current) == null ? void 0 : _a.update(addressCore.getAddressState());
54
+ validateForm();
54
55
  },
55
56
  updateEmail: () => {
56
- var _a2;
57
+ var _a;
57
58
  if (!(fieldStatus == null ? void 0 : fieldStatus.email.show))
58
59
  return;
59
- setForm(Object.assign(form, { email: emailState.email }));
60
- form.email = emailState.email;
61
- (_a2 = emailFieldRef.current) == null ? void 0 : _a2.update(emailState.email);
60
+ const newForm = Object.assign(form, { email: emailState.email });
61
+ setForm(newForm);
62
+ (_a = emailFieldRef.current) == null ? void 0 : _a.update(emailState.email);
62
63
  validateForm();
63
64
  },
64
65
  payment: () => {
65
66
  hidePaymentButton && onSubmit();
66
67
  }
67
68
  }));
68
- const addressState = createAddressCore();
69
+ const addressCore = core.getAddressCore();
69
70
  const emailState = createEmailCore();
70
71
  const addressFieldRef = A(null);
71
72
  const emailFieldRef = A(null);
@@ -76,13 +77,13 @@ const Boost = w((props, ref) => {
76
77
  const [form, setForm] = h({
77
78
  email: "",
78
79
  address: {
79
- country: "",
80
- province: "",
81
- city: "",
82
- area: "",
83
- postCode: "",
84
- address1: "",
85
- address2: ""
80
+ country: void 0,
81
+ province: void 0,
82
+ city: void 0,
83
+ area: void 0,
84
+ postCode: void 0,
85
+ address1: void 0,
86
+ address2: void 0
86
87
  }
87
88
  });
88
89
  const [validated, setValidated] = h(false);
@@ -100,33 +101,43 @@ const Boost = w((props, ref) => {
100
101
  }
101
102
  setFieldStatus({ ...field });
102
103
  };
104
+ const processOnSuccess = (res) => {
105
+ var _a, _b;
106
+ setSubmitButtonStatus("success");
107
+ (_b = props.onSuccess) == null ? void 0 : _b.call(props, formatPaymentResult({
108
+ ...res,
109
+ returnUrl: (_a = session == null ? void 0 : session.checkout) == null ? void 0 : _a.returnUrl
110
+ }));
111
+ };
103
112
  y(() => {
104
113
  if (!sessionReady) {
105
114
  return;
106
115
  }
107
- const { bill = {}, paymentMethod = [] } = (session == null ? void 0 : session.checkout) || {};
108
- if (!paymentMethod.includes(PaymentMethod.BOOST)) {
116
+ const { bill = {}, supportMethods = [], country } = (session == null ? void 0 : session.checkout) || {};
117
+ if (!supportMethods.includes(PaymentMethod.BOOST)) {
109
118
  return;
110
119
  }
111
120
  initFieldStatus();
112
121
  setIsCheckoutEnabled(true);
122
+ country && addressCore.setCountry(country);
113
123
  form.email = bill.email ?? "";
124
+ form.address.country = country;
114
125
  if (autoQuery && core.processingPaymentMethod === PaymentMethod.BOOST) {
115
126
  setSubmitButtonStatus("loading");
116
127
  startReFetchPayInfo();
117
128
  }
118
129
  }, [sessionReady]);
119
130
  const processOnError = (error) => {
120
- var _a2;
121
- (_a2 = props.onError) == null ? void 0 : _a2.call(props, error);
131
+ var _a;
132
+ (_a = props.onError) == null ? void 0 : _a.call(props, error);
122
133
  core.resetEnablePaymentMethod();
123
134
  };
124
135
  const onTimeout = q(
125
136
  (message) => {
126
- var _a2;
137
+ var _a;
127
138
  setErrorMsg(message || i18n.get("common.payTimeout"));
128
139
  setSubmitButtonStatus("unSubmit");
129
- (_a2 = props.onTimeout) == null ? void 0 : _a2.call(props);
140
+ (_a = props.onTimeout) == null ? void 0 : _a.call(props);
130
141
  core.resetEnablePaymentMethod();
131
142
  },
132
143
  [i18n, props.onTimeout]
@@ -144,34 +155,49 @@ const Boost = w((props, ref) => {
144
155
  },
145
156
  bill: {
146
157
  email: form.email,
147
- ...form.address,
148
- province: addressState.getLabel(form.address.province, addressState.getProvinceOption()) ?? form.address.province,
149
- city: addressState.getLabel(form.address.city, addressState.getCityOptions()) ?? form.address.city
158
+ addressLine1: form.address.address1,
159
+ addressLine2: form.address.address2,
160
+ postalCode: form.address.postCode,
161
+ country: form.address.country,
162
+ district: form.address.area,
163
+ state: form.address.province ? addressCore.getLabel(form.address.province, addressCore.getProvinceOption()) ?? form.address.province : void 0,
164
+ city: form.address.city ? addressCore.getLabel(form.address.city, addressCore.getCityOptions()) ?? form.address.city : void 0
150
165
  },
151
166
  browser: await getBrowserParams()
152
167
  };
153
168
  };
154
169
  const pay = async (search = false, timeout) => {
155
- var _a2, _b2, _c2, _d2, _e2;
170
+ var _a, _b, _c, _d, _e, _f, _g;
156
171
  try {
157
- const paymentParams = await getPaymentParams();
158
172
  const requestOptions = { locale: i18n.locale, timeout };
159
- const res = search ? await getBoostPayInfo(
160
- { sessionId: session.sessionId, clientKey: session.clientKey },
161
- requestOptions
162
- ) : await boostPay(paymentParams, props.core, requestOptions);
163
- !search && ((_a2 = props.onSubmitResponse) == null ? void 0 : _a2.call(props, res));
164
- const { status, orderStatus, errorMessage, errorCode, payInfo } = res;
173
+ let res = null;
174
+ if (search) {
175
+ const extraParams = (_b = (_a = core.config)._getExtraParams) == null ? void 0 : _b.call(_a, "query", PaymentMethod.BOOST);
176
+ res = await getBoostPayInfo(
177
+ {
178
+ sessionId: session.sessionId,
179
+ clientKey: session.clientKey,
180
+ paymentMethod: PaymentMethod.BOOST
181
+ },
182
+ extraParams,
183
+ requestOptions
184
+ );
185
+ } else {
186
+ const extraParams = (_d = (_c = core.config)._getExtraParams) == null ? void 0 : _d.call(_c, "payment", PaymentMethod.BOOST);
187
+ res = await boostPay(await getPaymentParams(), extraParams, requestOptions);
188
+ }
189
+ !search && ((_e = props.onSubmitResponse) == null ? void 0 : _e.call(props, res));
190
+ const { status, orderStatus, errorMessage, errorCode, payInfo, sessionId } = res;
191
+ sessionId && (session.sessionId = sessionId);
165
192
  if (status === "PROCESSING") {
166
193
  if (!orderStatus) {
167
194
  setSubmitButtonStatus("unSubmit");
168
195
  return { end: true };
169
196
  } else if (orderStatus === "SUCCESS") {
170
- setSubmitButtonStatus("success");
171
- (_b2 = props.onSuccess) == null ? void 0 : _b2.call(props);
197
+ processOnSuccess(res);
172
198
  return { end: true };
173
199
  } else if (orderStatus === "FAILURE") {
174
- setErrorMsg(errorMessage);
200
+ errorMessage && setErrorMsg(errorMessage);
175
201
  setSubmitButtonStatus("unSubmit");
176
202
  processOnError(new PayKKaError("API_ERROR", errorMessage, { code: errorCode }));
177
203
  return { end: true };
@@ -187,17 +213,16 @@ const Boost = w((props, ref) => {
187
213
  return { end: false };
188
214
  } else if (orderStatus === "CANCELED") {
189
215
  setSubmitButtonStatus("unSubmit");
190
- (_c2 = props.onTimeout) == null ? void 0 : _c2.call(props);
216
+ (_f = props.onTimeout) == null ? void 0 : _f.call(props);
191
217
  core.resetEnablePaymentMethod();
192
218
  return { end: true };
193
219
  }
194
220
  } else if (status === "SUCCESS") {
195
- setSubmitButtonStatus("success");
196
- (_d2 = props.onSuccess) == null ? void 0 : _d2.call(props);
221
+ processOnSuccess(res);
197
222
  return { end: true };
198
223
  } else if (status === "EXPIRED") {
199
224
  setSubmitButtonStatus("unSubmit");
200
- (_e2 = props.onExpired) == null ? void 0 : _e2.call(props);
225
+ (_g = props.onExpired) == null ? void 0 : _g.call(props);
201
226
  return { end: true };
202
227
  }
203
228
  setSubmitButtonStatus("unSubmit");
@@ -212,7 +237,7 @@ const Boost = w((props, ref) => {
212
237
  }
213
238
  } else {
214
239
  const message = error.i18nKey ? i18n.get(error.i18nKey) : error.message;
215
- setErrorMsg(message);
240
+ message && setErrorMsg(message);
216
241
  processOnError(new PayKKaError("API_ERROR", message, { code: error.code, cause: error }));
217
242
  setSubmitButtonStatus("unSubmit");
218
243
  return { end: true };
@@ -220,8 +245,8 @@ const Boost = w((props, ref) => {
220
245
  }
221
246
  };
222
247
  const validateForm = () => {
223
- var _a2;
224
- (_a2 = formRef.current) == null ? void 0 : _a2.validate(void 0, false).then(() => {
248
+ var _a;
249
+ (_a = formRef.current) == null ? void 0 : _a.validate(void 0, false).then(() => {
225
250
  setValidated(true);
226
251
  }).catch(() => {
227
252
  setValidated(false);
@@ -231,12 +256,12 @@ const Boost = w((props, ref) => {
231
256
  validateForm();
232
257
  }, [form]);
233
258
  const onSubmit = async () => {
234
- var _a2;
259
+ var _a;
235
260
  setErrorMsg("");
236
- (_a2 = formRef.current) == null ? void 0 : _a2.validate(async (errors) => {
237
- var _a3;
238
- (fieldStatus == null ? void 0 : fieldStatus.address.show) && addressState.setValidateAllFields(true);
239
- (_a3 = props.onSubmit) == null ? void 0 : _a3.call(props, errors);
261
+ (_a = formRef.current) == null ? void 0 : _a.validate(async (errors) => {
262
+ var _a2;
263
+ (fieldStatus == null ? void 0 : fieldStatus.address.show) && addressCore.setValidateAllFields(true);
264
+ (_a2 = props.onSubmit) == null ? void 0 : _a2.call(props, errors);
240
265
  if (errors) {
241
266
  setSubmitButtonStatus("unSubmit");
242
267
  return;
@@ -251,8 +276,8 @@ const Boost = w((props, ref) => {
251
276
  dom && validateForm();
252
277
  };
253
278
  const Button = () => {
254
- var _a2;
255
- const transAmount = (_a2 = session == null ? void 0 : session.checkout) == null ? void 0 : _a2.transAmount;
279
+ var _a;
280
+ const transAmount = (_a = session == null ? void 0 : session.checkout) == null ? void 0 : _a.transAmount;
256
281
  const amountText = (transAmount == null ? void 0 : transAmount.amount) ? formatAmount(transAmount).jointSymbol() : "";
257
282
  const text = i18n.get("common.pay") + (amountText ? ` ${amountText}` : "");
258
283
  return /* @__PURE__ */ u(
@@ -278,24 +303,17 @@ const Boost = w((props, ref) => {
278
303
  }
279
304
  ) }) });
280
305
  };
281
- const formStyle = {
282
- [cssVarPrefix("button-bg-color")]: (_a = session == null ? void 0 : session.colors) == null ? void 0 : _a.primary,
283
- [cssVarPrefix("button-bg-color-hover")]: (_b = session == null ? void 0 : session.colors) == null ? void 0 : _b.primaryHover,
284
- [cssVarPrefix("button-bg-color-active")]: (_c = session == null ? void 0 : session.colors) == null ? void 0 : _c.primaryActive,
285
- [cssVarPrefix("button-text-color")]: (_e = (_d = session == null ? void 0 : session.checkout) == null ? void 0 : _d.theme) == null ? void 0 : _e.payButtonTextColor,
286
- [cssVarPrefix("input-color")]: (_f = session == null ? void 0 : session.colors) == null ? void 0 : _f.primary
287
- };
288
306
  const ErrorMessage = () => {
289
- return /* @__PURE__ */ u(b, { children: !!errorMsg && /* @__PURE__ */ u(Info, { content: errorMsg, style: { marginTop: "12px" } }) });
307
+ return /* @__PURE__ */ u(b, { children: !!errorMsg && /* @__PURE__ */ u(Info, { content: errorMsg }) });
290
308
  };
291
309
  const Address = () => {
292
- var _a2, _b2;
310
+ var _a, _b;
293
311
  return /* @__PURE__ */ u(b, { children: (fieldStatus == null ? void 0 : fieldStatus.address.show) && /* @__PURE__ */ u("div", { className: fieldClassNames, children: /* @__PURE__ */ u(
294
312
  AddressField,
295
313
  {
296
314
  ref: addressFieldRef,
297
315
  value: form.address,
298
- country: ((_a2 = session == null ? void 0 : session.checkout) == null ? void 0 : _a2.country) || ((_b2 = session == null ? void 0 : session.checkout) == null ? void 0 : _b2.bill.country),
316
+ 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),
299
317
  onAddressChange: (value) => setForm(Object.assign(form, { address: value }))
300
318
  }
301
319
  ) }) });
@@ -305,15 +323,18 @@ const Boost = w((props, ref) => {
305
323
  {
306
324
  value: {
307
325
  i18n,
308
- session
326
+ session,
327
+ core
309
328
  },
310
- children: isCheckoutEnabled && i18n.ready.value && /* @__PURE__ */ u(b, { children: [
329
+ children: isCheckoutEnabled && i18n.ready.value && /* @__PURE__ */ u("div", { className: core.theme.className, children: [
311
330
  showGuideCard && /* @__PURE__ */ u(GuideCard, { type: PaymentCategory.BOOST }),
312
- /* @__PURE__ */ u(Form, { form, ref: setFormRef, onFormChange: (form2) => setForm(form2), children: /* @__PURE__ */ u("div", { className: normalizedClass(COMMON_CLASS_NAME, bem()), style: formStyle, children: [
331
+ /* @__PURE__ */ u(Form, { form, ref: setFormRef, onFormChange: (form2) => setForm(form2), children: /* @__PURE__ */ u("div", { className: normalizedClass(COMMON_CLASS_NAME, bem()), children: [
313
332
  Email(),
314
333
  Address(),
315
- ErrorMessage(),
316
- !hidePaymentButton && Button()
334
+ /* @__PURE__ */ u("div", { className: bem("footer-wrapper"), children: [
335
+ ErrorMessage(),
336
+ !hidePaymentButton && Button()
337
+ ] })
317
338
  ] }) })
318
339
  ] })
319
340
  }