@paykka/card-checkout-ui 0.13.17 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/dist/card-checkout-ui.js +53 -25
  2. package/dist/card-checkout-ui.umd.cjs +53 -25
  3. package/dist/es/api/modules/boost/index.js +5 -16
  4. package/dist/es/api/modules/gcash/index.js +5 -16
  5. package/dist/es/api/modules/get-browser-params.js +1 -4
  6. package/dist/es/api/modules/grab-pay/index.js +5 -16
  7. package/dist/es/api/modules/line-pay/index.js +5 -16
  8. package/dist/es/api/modules/may-bank-qr-pay/index.js +5 -16
  9. package/dist/es/api/modules/nine-pay/index.js +5 -16
  10. package/dist/es/api/modules/opay-wallet/index.js +5 -16
  11. package/dist/es/api/modules/paga-wallet/index.js +5 -16
  12. package/dist/es/api/modules/paymaya/index.js +5 -16
  13. package/dist/es/api/modules/shopee-pay/index.js +5 -16
  14. package/dist/es/api/modules/threeDS/index.js +16 -2
  15. package/dist/es/api/modules/tng-wallet/index.js +5 -16
  16. package/dist/es/api/modules/zalopay/index.js +5 -16
  17. package/dist/es/components/AccordionItem/AccordionItem.js +0 -2
  18. package/dist/es/components/AddressField/index.js +13 -3
  19. package/dist/es/components/AliPay/index.js +64 -62
  20. package/dist/es/components/ApplePay/index.js +42 -39
  21. package/dist/es/components/CPFField/index.js +2 -1
  22. package/dist/es/components/Card/index.js +160 -133
  23. package/dist/es/components/CardExpireDateField/index.js +2 -1
  24. package/dist/es/components/CardNo/index.js +2 -2
  25. package/dist/es/components/CardNumberField/index.js +2 -1
  26. package/dist/es/components/CardSecurityCodeField/index.js +2 -1
  27. package/dist/es/components/CardSelector/index.js +3 -2
  28. package/dist/es/components/DropIn/index.js +24 -21
  29. package/dist/es/components/GooglePay/index.js +97 -88
  30. package/dist/es/components/PaymentButton/index.js +1 -1
  31. package/dist/es/components/SecuredFieldsProvider/index.js +31 -9
  32. package/dist/es/components/SecuredIframe/index.js +40 -23
  33. package/dist/es/components/SubmitButton/index.js +1 -1
  34. package/dist/es/components/ThreeDS/index.js +29 -12
  35. package/dist/es/components/WechatPay/index.js +70 -69
  36. package/dist/es/components/business/PhoneField/PhoneField.js +1 -0
  37. package/dist/es/components/index.js +7 -7
  38. package/dist/es/components/internal/CheckBox/CheckBox.js +2 -2
  39. package/dist/es/components/internal/Input/Input.js +1 -1
  40. package/dist/es/components/internal/Select/Select.js +4 -1
  41. package/dist/es/components/internal/icons/IconArrowDown.js +4 -4
  42. package/dist/es/components/internal/icons/IconBancontact.js +69 -14
  43. package/dist/es/components/internal/icons/IconBlik.js +541 -21
  44. package/dist/es/components/internal/icons/IconIdeal.js +61 -29
  45. package/dist/es/components/internal/icons/IconSkrill.js +14 -7
  46. package/dist/es/components/internal/icons/IconTrustly.js +11 -44
  47. package/dist/es/components/wallets/Bancontact/Bancontact.js +11 -8
  48. package/dist/es/components/wallets/Blik/Blik.js +12 -9
  49. package/dist/es/components/wallets/Boost/Boost.js +183 -0
  50. package/dist/es/components/wallets/Boost/boost2.js +1 -0
  51. package/dist/es/components/wallets/Boost/index.js +1 -0
  52. package/dist/es/components/wallets/Boost/type.js +1 -0
  53. package/dist/es/components/wallets/GCash/GCash.js +62 -252
  54. package/dist/es/components/wallets/GrabPay/GrabPay.js +183 -0
  55. package/dist/es/components/wallets/GrabPay/grab-pay.js +1 -0
  56. package/dist/es/components/wallets/GrabPay/index.js +1 -0
  57. package/dist/es/components/wallets/GrabPay/type.js +1 -0
  58. package/dist/es/components/wallets/IDeal/IDeal.js +11 -8
  59. package/dist/es/components/wallets/LinePay/LinePay.js +183 -0
  60. package/dist/es/components/wallets/LinePay/index.js +1 -0
  61. package/dist/es/components/wallets/LinePay/line-pay.js +1 -0
  62. package/dist/es/components/wallets/LinePay/type.js +1 -0
  63. package/dist/es/components/wallets/MayBankQRPay/MayBankQRPay.js +187 -0
  64. package/dist/es/components/wallets/MayBankQRPay/index.js +1 -0
  65. package/dist/es/components/wallets/MayBankQRPay/may-bank-qr-pay.js +1 -0
  66. package/dist/es/components/wallets/MayBankQRPay/type.js +1 -0
  67. package/dist/es/components/wallets/NinePay/NinePay.js +185 -0
  68. package/dist/es/components/wallets/NinePay/index.js +1 -0
  69. package/dist/es/components/wallets/NinePay/nine-pay.js +1 -0
  70. package/dist/es/components/wallets/NinePay/type.js +1 -0
  71. package/dist/es/components/wallets/OVO/OVO.js +7 -5
  72. package/dist/es/components/wallets/OpayWallet/OpayWallet.js +56 -218
  73. package/dist/es/components/wallets/P24/P24.js +11 -8
  74. package/dist/es/components/wallets/PagaWallet/PagaWallet.js +56 -218
  75. package/dist/es/components/wallets/Paymaya/Paymaya.js +56 -221
  76. package/dist/es/components/wallets/PicPay/PicPay.js +50 -47
  77. package/dist/es/components/wallets/Pix/Pix.js +44 -48
  78. package/dist/es/components/wallets/ShopeePay/ShopeePay.js +185 -0
  79. package/dist/es/components/wallets/ShopeePay/index.js +1 -0
  80. package/dist/es/components/wallets/ShopeePay/shopee-pay.js +1 -0
  81. package/dist/es/components/wallets/ShopeePay/type.js +1 -0
  82. package/dist/es/components/wallets/Skrill/Skrill.js +28 -26
  83. package/dist/es/components/wallets/TNGWallet/TNGWallet.js +185 -0
  84. package/dist/es/components/wallets/TNGWallet/index.js +1 -0
  85. package/dist/es/components/wallets/TNGWallet/tng-wallet.js +1 -0
  86. package/dist/es/components/wallets/TNGWallet/type.js +1 -0
  87. package/dist/es/components/wallets/Trustly/Trustly.js +15 -15
  88. package/dist/es/components/wallets/Vietqr/Vietqr.js +60 -248
  89. package/dist/es/components/wallets/Zalopay/Zalopay.js +61 -249
  90. package/dist/es/components/wallets/index.js +7 -0
  91. package/dist/es/core/checkout.js +19 -45
  92. package/dist/es/core/logger.js +1 -1
  93. package/dist/es/core/payment.js +65 -0
  94. package/dist/es/hooks/useBaseWallet.js +20 -18
  95. package/dist/es/hooks/usePayState.js +37 -25
  96. package/dist/es/hooks/usePayment.js +1 -14
  97. package/dist/es/hooks/useRetry.js +50 -26
  98. package/dist/es/index.js +7 -7
  99. package/dist/es/out/base-fraud-detection.js +4 -1
  100. package/dist/es/out/fraud-detection.js +12 -13
  101. package/dist/es/out/worldpay-ddc-manager.js +7 -14
  102. package/dist/es/out/worldpay-ddc.js +7 -5
  103. package/dist/es/style.css +1 -1
  104. package/dist/es/types/event.js +1 -0
  105. package/dist/es/types/message.js +2 -0
  106. package/dist/es/utils/payment.js +12 -12
  107. package/dist/es/utils/system-info/is-ua-webview.js +1 -20
  108. package/dist/style.css +1 -1
  109. package/dist/types/api/modules/threeDS/index.d.ts +7 -0
  110. package/dist/types/components/AddressField/type.d.ts +2 -2
  111. package/dist/types/components/CPFField/type.d.ts +1 -1
  112. package/dist/types/components/CardExpireDateField/type.d.ts +1 -1
  113. package/dist/types/components/CardNo/type.d.ts +3 -2
  114. package/dist/types/components/CardNumberField/type.d.ts +1 -1
  115. package/dist/types/components/CardSecurityCodeField/type.d.ts +1 -1
  116. package/dist/types/components/CardSelector/type.d.ts +4 -4
  117. package/dist/types/components/GooglePay/createGooglePay.d.ts +1 -1
  118. package/dist/types/components/GooglePay/type.d.ts +6 -0
  119. package/dist/types/components/SecuredFieldsProvider/type.d.ts +2 -0
  120. package/dist/types/components/ThreeDS/components/ThreeDSIframe/ThreeDSIframe.d.ts +0 -6
  121. package/dist/types/components/index.d.ts +0 -7
  122. package/dist/types/components/internal/CheckBox/type.d.ts +2 -1
  123. package/dist/types/components/internal/Select/type.d.ts +1 -1
  124. package/dist/types/components/internal/icons/IconArrowDown.d.ts +1 -1
  125. package/dist/types/components/{Boost → wallets/Boost}/Boost.d.ts +9 -4
  126. package/dist/types/components/{Boost → wallets/Boost}/type.d.ts +2 -2
  127. package/dist/types/components/wallets/GCash/GCash.d.ts +5 -0
  128. package/dist/types/components/{GrabPay → wallets/GrabPay}/GrabPay.d.ts +4 -4
  129. package/dist/types/components/wallets/GrabPay/type.d.ts +17 -0
  130. package/dist/types/components/{LinePay → wallets/LinePay}/LinePay.d.ts +9 -4
  131. package/dist/types/components/{LinePay → wallets/LinePay}/type.d.ts +2 -2
  132. package/dist/types/components/wallets/MayBankQRPay/MayBankQRPay.d.ts +15 -0
  133. package/dist/types/components/{MayBankQRPay → wallets/MayBankQRPay}/type.d.ts +2 -2
  134. package/dist/types/components/wallets/NinePay/NinePay.d.ts +15 -0
  135. package/dist/types/components/{NinePay → wallets/NinePay}/type.d.ts +2 -2
  136. package/dist/types/components/wallets/OpayWallet/OpayWallet.d.ts +5 -0
  137. package/dist/types/components/wallets/PagaWallet/PagaWallet.d.ts +5 -0
  138. package/dist/types/components/wallets/Paymaya/Paymaya.d.ts +5 -0
  139. package/dist/types/components/{ShopeePay → wallets/ShopeePay}/ShopeePay.d.ts +9 -4
  140. package/dist/types/components/{ShopeePay → wallets/ShopeePay}/type.d.ts +2 -2
  141. package/dist/types/components/wallets/Skrill/type.d.ts +0 -12
  142. package/dist/types/components/{TNGWallet → wallets/TNGWallet}/TNGWallet.d.ts +9 -4
  143. package/dist/types/components/{TNGWallet → wallets/TNGWallet}/type.d.ts +2 -2
  144. package/dist/types/components/wallets/Vietqr/Vietqr.d.ts +5 -0
  145. package/dist/types/components/wallets/Zalopay/Zalopay.d.ts +5 -0
  146. package/dist/types/components/wallets/index.d.ts +7 -0
  147. package/dist/types/core/checkout.d.ts +2 -9
  148. package/dist/types/core/payment.d.ts +21 -0
  149. package/dist/types/hooks/useBaseWallet.d.ts +2 -2
  150. package/dist/types/hooks/usePayState.d.ts +3 -1
  151. package/dist/types/hooks/useRetry.console-tests.d.ts +41 -0
  152. package/dist/types/hooks/useRetry.d.ts +22 -3
  153. package/dist/types/out/base-fraud-detection.d.ts +1 -0
  154. package/dist/types/out/config.d.ts +1 -1
  155. package/dist/types/out/fraud-detection.d.ts +2 -8
  156. package/dist/types/out/types.d.ts +3 -1
  157. package/dist/types/out/worldpay-ddc-manager.d.ts +6 -7
  158. package/dist/types/types/event.d.ts +6 -1
  159. package/dist/types/types/message.d.ts +24 -3
  160. package/dist/types/types/payment.d.ts +4 -0
  161. package/dist/types/utils/iframe.d.ts +1 -1
  162. package/dist/types/utils/payment.d.ts +10 -10
  163. package/package.json +9 -5
  164. package/dist/es/components/Boost/index.js +0 -349
  165. package/dist/es/components/GrabPay/index.js +0 -349
  166. package/dist/es/components/LinePay/index.js +0 -349
  167. package/dist/es/components/MayBankQRPay/index.js +0 -355
  168. package/dist/es/components/NinePay/index.js +0 -349
  169. package/dist/es/components/ShopeePay/index.js +0 -349
  170. package/dist/es/components/TNGWallet/index.js +0 -349
  171. package/dist/types/components/GrabPay/type.d.ts +0 -28
  172. package/dist/types/components/MayBankQRPay/MayBankQRPay.d.ts +0 -10
  173. package/dist/types/components/NinePay/NinePay.d.ts +0 -10
  174. /package/dist/types/components/{Boost → wallets/Boost}/index.d.ts +0 -0
  175. /package/dist/types/components/{GrabPay → wallets/GrabPay}/index.d.ts +0 -0
  176. /package/dist/types/components/{LinePay → wallets/LinePay}/index.d.ts +0 -0
  177. /package/dist/types/components/{MayBankQRPay → wallets/MayBankQRPay}/index.d.ts +0 -0
  178. /package/dist/types/components/{NinePay → wallets/NinePay}/index.d.ts +0 -0
  179. /package/dist/types/components/{ShopeePay → wallets/ShopeePay}/index.d.ts +0 -0
  180. /package/dist/types/components/{TNGWallet → wallets/TNGWallet}/index.d.ts +0 -0
@@ -78,7 +78,9 @@ export declare enum ThreeDSEventType {
78
78
  /** 3DS 结束(并不代表成功) */
79
79
  THREE_DS_END = "threeDS:end",
80
80
  /** 3DS 认证(认证页面加载,可能是渠道的,也可能是我们自己的,依赖设计) */
81
- THREE_DS_AUTH = "threeDS:auth"
81
+ THREE_DS_AUTH = "threeDS:auth",
82
+ /** 3DS 内嵌渠道页面加载 */
83
+ THREE_DS_INNER_CHANNEL = "threeDS:innerChannel"
82
84
  }
83
85
  export declare enum SecurityIframeEventType {
84
86
  /** 安全 iframe 加载成功 */
@@ -124,6 +126,7 @@ export interface EventDataMapping {
124
126
  [ThreeDSEventType.THREE_DS_CONTINUE]: undefined;
125
127
  [ThreeDSEventType.THREE_DS_END]: undefined;
126
128
  [ThreeDSEventType.THREE_DS_AUTH]: undefined;
129
+ [ThreeDSEventType.THREE_DS_INNER_CHANNEL]: undefined;
127
130
  [SecurityIframeEventType.SECURITY_IFRAME_LOADED]: SecurityIframeBaseData;
128
131
  [SecurityIframeEventType.SECURITY_IFRAME_LOAD_ERROR]: SecurityIframeBaseData;
129
132
  [LoggerEventType.ENV]: Recordable;
@@ -138,6 +141,8 @@ export interface FraudDetectionBaseData {
138
141
  /** ddc专用 */
139
142
  bin?: string;
140
143
  id?: string;
144
+ /** 耗时,单位:毫秒 */
145
+ time?: number;
141
146
  }
142
147
  export interface FraudDetectionErrorData extends FraudDetectionBaseData {
143
148
  /** 错误信息 */
@@ -57,6 +57,8 @@ export declare const enum MessageAction {
57
57
  THREE_DS_STATUS_CONFIG = "threeDSStatusConfig",
58
58
  /** 通知 3DS 认证页面加载 */
59
59
  THREE_DS_AUTH_LOADED = "threeDSAuthLoaded",
60
+ /** 通知 3DS 渠道页面加载,一般指的是内嵌在 iframe 里面的渠道挑战页面 */
61
+ THREE_DS_INNER_CHANNEL_LOADED = "threeDSInnerChannelLoaded",
60
62
  /** 开启测试模式 */
61
63
  DEBUG_MODE = "debugMode",
62
64
  /**
@@ -66,6 +68,8 @@ export declare const enum MessageAction {
66
68
  DDC_RESULT = "ddcResult",
67
69
  /** 通知 DDC iframe jwt 和 bin 信息 */
68
70
  DDC_JWT_BIN = "ddcJwtBin",
71
+ /** 通知隐藏 iframe 发送卡号前 9 位信息 */
72
+ DDC_CARD_BIN = "ddcCardBin",
69
73
  /** iframe 内错误 */
70
74
  IFRAME_ERROR = "iframeError"
71
75
  }
@@ -88,17 +92,19 @@ type MessageMapping = {
88
92
  [MessageAction.AUTHORIZED]: AuthorizedMessage;
89
93
  [MessageAction.BRAND]: BrandMessage;
90
94
  [MessageAction.ACTIVATED]: ActivatedMessage;
91
- [MessageAction.HIDDEN_IFRAME_READY]: {} extends BaseMessage ? {} : BaseMessage;
95
+ [MessageAction.HIDDEN_IFRAME_READY]: HiddenIframeReadyMessage;
92
96
  [MessageAction.VALIDATE]: {} extends BaseMessage ? {} : BaseMessage;
93
97
  [MessageAction.VALIDATED]: ValidatedMessage;
94
98
  [MessageAction.SET_CONFIG]: SetConfigMessage;
95
99
  [MessageAction.CHECK_THREE_DS]: CheckThreeDSMessage;
96
100
  [MessageAction.THREE_DS_STATUS_INIT]: {};
97
101
  [MessageAction.THREE_DS_STATUS_CONFIG]: ThreeDSStatusConfigMessage;
98
- [MessageAction.THREE_DS_AUTH_LOADED]: BaseMessage;
102
+ [MessageAction.THREE_DS_AUTH_LOADED]: ThreeDSAuthLoadedMessage;
103
+ [MessageAction.THREE_DS_INNER_CHANNEL_LOADED]: BaseMessage;
99
104
  [MessageAction.DEBUG_MODE]: {};
100
105
  [MessageAction.DDC_RESULT]: DDCResultMessage;
101
106
  [MessageAction.DDC_JWT_BIN]: DDCJwtBinMessage;
107
+ [MessageAction.DDC_CARD_BIN]: DDCCardBinMessage;
102
108
  [MessageAction.IFRAME_ERROR]: IframeErrorMessage;
103
109
  };
104
110
  export interface BaseMessage {
@@ -190,6 +196,8 @@ export interface ValidatedMessage extends BaseMessage {
190
196
  }
191
197
  export interface SetConfigMessage extends BaseMessage {
192
198
  style?: InputStylesConfig;
199
+ /** 是否禁用 */
200
+ disabled?: boolean;
193
201
  }
194
202
  export interface CheckThreeDSMessage extends BaseMessage {
195
203
  status: string;
@@ -200,10 +208,15 @@ export interface ThreeDSStatusConfigMessage extends BaseMessage {
200
208
  export interface DDCResultMessage extends BaseMessage {
201
209
  sessionId: string;
202
210
  }
203
- export interface DDCJwtBinMessage {
211
+ export interface DDCJwtBinMessage extends Partial<BaseMessage> {
204
212
  jwt: string;
205
213
  bin: string;
206
214
  url: string;
215
+ /** 隐藏 iframe 名称 */
216
+ hiddenIframeName?: string;
217
+ }
218
+ export interface HiddenIframeReadyMessage extends BaseMessage {
219
+ name: string;
207
220
  }
208
221
  export interface IframeRequestMessage extends BaseMessage {
209
222
  request: Recordable;
@@ -216,4 +229,12 @@ export interface IframeErrorMessage extends BaseMessage {
216
229
  stack?: string;
217
230
  };
218
231
  }
232
+ export interface DDCCardBinMessage extends BaseMessage {
233
+ /** 卡号前 9 位 */
234
+ bin?: string;
235
+ }
236
+ export interface ThreeDSAuthLoadedMessage extends BaseMessage {
237
+ /** 认证记录 id,标识当前认证 */
238
+ authId: string | undefined;
239
+ }
219
240
  export {};
@@ -6,6 +6,10 @@ import type { FormValidateError } from '../components/internal/Form';
6
6
  export interface PaymentMethodContext {
7
7
  /** 当前支付方式 */
8
8
  paymentMethod?: PaymentMethod;
9
+ /** 订单 ID */
10
+ orderId?: string;
11
+ /** 会话 ID */
12
+ sessionId?: string;
9
13
  }
10
14
  /** 支付方式公共 props */
11
15
  export interface PaymentCommonProps {
@@ -1,2 +1,2 @@
1
1
  export declare const createIframe: (src: string) => HTMLIFrameElement;
2
- export declare const postMessageToIframe: (data: Recordable | string, iframe: Window, targetOrigin?: string) => void;
2
+ export declare const postMessageToIframe: (data: Recordable | string, iframe: Window | null, targetOrigin?: string) => void;
@@ -5,23 +5,23 @@ import type { CheckoutRes, PayRes } from '../api';
5
5
  import type { PaymentInfo } from '../types';
6
6
  export interface PaymentCallbackConfig {
7
7
  /** 订单处理中,定时查询订单 */
8
- onProcessing?: () => void;
8
+ onProcessing?: () => void | Promise<void>;
9
9
  /** 订单已授权,提示用户,跳转商户页面 */
10
- onAuthorized?: () => void;
10
+ onAuthorized?: () => void | Promise<void>;
11
11
  /** 订单需要3DS认证,跳转3DS认证页面 */
12
- onInThreeDS?: () => void;
12
+ onInThreeDS?: () => void | Promise<void>;
13
13
  /** 上一次3DS认证未完成,跳转3DS认证页面 */
14
- onInPreviousThreeDS?: () => void;
14
+ onInPreviousThreeDS?: () => void | Promise<void>;
15
15
  /** 订单取消,导致查询超时 */
16
- onCanceled?: () => void;
16
+ onCanceled?: () => void | Promise<void>;
17
17
  /** 订单成功,支付成功 */
18
- onSuccess?: () => void;
18
+ onSuccess?: () => void | Promise<void>;
19
19
  /** 订单失败,支付失败 */
20
- onFailure?: () => void;
20
+ onFailure?: () => void | Promise<void>;
21
21
  /** 订单过期,支付过期 */
22
- onExpired?: () => void;
22
+ onExpired?: () => void | Promise<void>;
23
23
  /** 不属于其他任何状态,兜底逻辑 */
24
- onDefault?: () => void;
24
+ onDefault?: () => void | Promise<void>;
25
25
  }
26
26
  /**
27
27
  * 处理支付状态的判断
@@ -29,7 +29,7 @@ export interface PaymentCallbackConfig {
29
29
  * @param res 支付结果
30
30
  * @param config 支付回调
31
31
  */
32
- export declare const processPaymentStatus: (res: PayRes, config: PaymentCallbackConfig) => void;
32
+ export declare const processPaymentStatus: (res: PayRes, config: PaymentCallbackConfig) => Promise<void>;
33
33
  /**
34
34
  * 格式化支付结果
35
35
  * @param res
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paykka/card-checkout-ui",
3
- "version": "0.13.17",
3
+ "version": "0.14.0",
4
4
  "type": "module",
5
5
  "main": "dist/paykka-card-checkout-ui.umd.js",
6
6
  "module": "dist/es/index.js",
@@ -25,18 +25,22 @@
25
25
  "build:type": "tsc -p ./tsconfig.build.json",
26
26
  "copy-dist-to-cdn": "tsx ./build/copyDist2CDN.ts",
27
27
  "changeset": "changeset",
28
- "changeset:pre": "changeset pre enter beta",
28
+ "changeset:fat-enter": "changeset pre enter beta",
29
+ "changeset:dev-enter": "changeset pre enter alpha",
30
+ "changeset:sandbox-enter": "changeset pre enter rc",
31
+ "changeset:fat": "changeset publish --tag beta",
32
+ "changeset:dev": "changeset publish --tag alpha",
33
+ "changeset:sandbox": "changeset publish --tag rc",
29
34
  "changeset:pre-exit": "changeset pre exit",
30
35
  "changeset:version": "changeset version",
31
36
  "changeset:release": "changeset publish",
32
- "changeset:prelease": "changeset publish --tag beta",
33
- "type-check": "tsc --noEmit -p tsconfig.json --composite false",
34
37
  "release:dev": "node scripts/release.cjs dev",
35
38
  "release:fat": "node scripts/release.cjs fat",
36
39
  "release:sandbox": "node scripts/release.cjs sandbox",
40
+ "release:noprod": "node scripts/release.cjs noprod",
37
41
  "release:npm": "node scripts/release.cjs npm",
38
42
  "release:prod": "node scripts/release.cjs prod",
39
- "release:noprod": "node scripts/release.cjs noprod"
43
+ "type-check": "tsc --noEmit -p tsconfig.json --composite false"
40
44
  },
41
45
  "publishConfig": {
42
46
  "registry": "https://packages.aliyun.com/640edee5a84870ae9d591e48/npm/npm-registry/"
@@ -1,349 +0,0 @@
1
- import { w, F, A, h, y, q, u, b } from "../../core.js";
2
- import { useBEM } from "../../hooks/useBEM.js";
3
- import { CoreContext } from "../../core/context.js";
4
- import "../../utils/card-brand/brands.js";
5
- import "../../utils/system-info/get-browser-info.js";
6
- import { normalizedClass, formatAmount } from "../../utils/format.js";
7
- import { redirectToPayment } from "../../utils/redirect.js";
8
- import { formatPaymentResult } from "../../utils/payment.js";
9
- import { isTimeoutError } from "../../api/http.js";
10
- import { getBrowserParams } from "../../api/modules/get-browser-params.js";
11
- import { PaymentCategory, COMMON_CLASS_NAME, PaymentMethod, SessionMode } from "../../constant.js";
12
- import { getBoostPayInfo, boostPay } from "../../api/modules/boost/index.js";
13
- import { PayKKaError } from "../../core/error.js";
14
- import "../../out/worldpay-jsc-origin.js";
15
- import { usePayState } from "../../hooks/usePayState.js";
16
- import { useRetry } from "../../hooks/useRetry.js";
17
- import { createEmailCore, EmailField } from "../EmailField/EmailField.js";
18
- import { SubmitButton } from "../SubmitButton/index.js";
19
- import "../internal/Form/type.js";
20
- import "../internal/Form/context.js";
21
- import "../internal/Form/FormItem.js";
22
- import { Form } from "../internal/Form/Form.js";
23
- import { AddressField } from "../AddressField/index.js";
24
- import { Info } from "../internal/Info/Info.js";
25
- import { GuideCard } from "../GuideCard/index.js";
26
- const { bem } = useBEM("boost");
27
- const fieldClassNames = bem("field");
28
- const Boost = w((props, ref) => {
29
- const {
30
- session,
31
- showEmail = false,
32
- showAddress = false,
33
- redirectMode = "auto",
34
- core,
35
- autoQuery = true,
36
- showGuideCard = true,
37
- hidePaymentButton = false
38
- } = props;
39
- F(ref, () => ({
40
- stopRetry: () => {
41
- setSubmitButtonStatus("unSubmit");
42
- stopReFetchPayInfo();
43
- },
44
- startRetry: (timeout) => {
45
- setSubmitButtonStatus("loading");
46
- startReFetchPayInfo({ timeout });
47
- },
48
- updateAddress: () => {
49
- var _a;
50
- if (!(fieldStatus == null ? void 0 : fieldStatus.address.show))
51
- return;
52
- const newForm = Object.assign(form, { address: addressCore.getAddressState() });
53
- setForm(newForm);
54
- (_a = addressFieldRef.current) == null ? void 0 : _a.update(addressCore.getAddressState());
55
- validateForm();
56
- },
57
- updateEmail: () => {
58
- var _a;
59
- if (!(fieldStatus == null ? void 0 : fieldStatus.email.show))
60
- return;
61
- const newForm = Object.assign(form, { email: emailState.email });
62
- setForm(newForm);
63
- (_a = emailFieldRef.current) == null ? void 0 : _a.update(emailState.email);
64
- validateForm();
65
- },
66
- payment: () => {
67
- hidePaymentButton && onSubmit();
68
- }
69
- }));
70
- const addressCore = core.getAddressCore();
71
- const emailState = createEmailCore();
72
- const addressFieldRef = A(null);
73
- const emailFieldRef = A(null);
74
- const [isCheckoutEnabled, setIsCheckoutEnabled] = h(false);
75
- const { setErrorMsg, fraudDetection, i18n, errorMsg, sessionReady } = usePayState(session, props.core);
76
- const [submitButtonStatus, setSubmitButtonStatus] = h("unSubmit");
77
- const formRef = A(null);
78
- const [form, setForm] = h({
79
- email: "",
80
- address: {
81
- country: void 0,
82
- province: void 0,
83
- city: void 0,
84
- area: void 0,
85
- postCode: void 0,
86
- address1: void 0,
87
- address2: void 0
88
- }
89
- });
90
- const [validated, setValidated] = h(false);
91
- const [fieldStatus, setFieldStatus] = h();
92
- const getPaymentMethodContext = () => ({
93
- paymentMethod: PaymentMethod.BOOST
94
- });
95
- const initFieldStatus = () => {
96
- const { field, sessionMode } = session.checkout;
97
- const { email, address } = field;
98
- if (sessionMode === SessionMode.COMPONENT) {
99
- if (email.disabled) {
100
- email.show = showEmail;
101
- }
102
- if (showAddress && !(address == null ? void 0 : address.show)) {
103
- address.show = true;
104
- }
105
- }
106
- setFieldStatus({ ...field });
107
- };
108
- const processOnSuccess = (res) => {
109
- var _a, _b;
110
- setSubmitButtonStatus("success");
111
- (_b = props.onSuccess) == null ? void 0 : _b.call(props, formatPaymentResult({
112
- ...res,
113
- returnUrl: (_a = session == null ? void 0 : session.checkout) == null ? void 0 : _a.returnUrl
114
- }), getPaymentMethodContext());
115
- };
116
- y(() => {
117
- if (!sessionReady) {
118
- return;
119
- }
120
- const { bill = {}, supportMethods = [], country } = (session == null ? void 0 : session.checkout) || {};
121
- if (!supportMethods.includes(PaymentMethod.BOOST)) {
122
- return;
123
- }
124
- initFieldStatus();
125
- setIsCheckoutEnabled(true);
126
- country && addressCore.setCountry(country);
127
- form.email = bill.email ?? "";
128
- form.address.country = country;
129
- if (autoQuery && core.processingPaymentMethod === PaymentMethod.BOOST) {
130
- setSubmitButtonStatus("loading");
131
- startReFetchPayInfo();
132
- }
133
- }, [sessionReady]);
134
- const processOnError = (error) => {
135
- var _a;
136
- (_a = props.onError) == null ? void 0 : _a.call(props, error, getPaymentMethodContext());
137
- core.resetEnablePaymentMethod();
138
- };
139
- const onTimeout = q(
140
- (message) => {
141
- var _a;
142
- setErrorMsg(message || i18n.get("common.payTimeout"));
143
- setSubmitButtonStatus("unSubmit");
144
- (_a = props.onTimeout) == null ? void 0 : _a.call(props, "retry", getPaymentMethodContext());
145
- core.resetEnablePaymentMethod();
146
- },
147
- [i18n, props.onTimeout]
148
- );
149
- const { start: startReFetchPayInfo, stop: stopReFetchPayInfo } = useRetry(
150
- (timeout) => pay(true, timeout),
151
- { onTimeout: () => onTimeout(i18n.get("common.queryTimeout")) }
152
- );
153
- const getPaymentParams = async () => {
154
- return {
155
- sessionId: session.sessionId,
156
- clientKey: session.clientKey,
157
- payment: {
158
- paymentMethod: PaymentMethod.BOOST
159
- },
160
- bill: {
161
- email: form.email,
162
- addressLine1: form.address.address1,
163
- addressLine2: form.address.address2,
164
- postalCode: form.address.postCode,
165
- country: form.address.country,
166
- district: form.address.area,
167
- state: form.address.province ? addressCore.getLabel(form.address.province, addressCore.getProvinceOption()) ?? form.address.province : void 0,
168
- city: form.address.city ? addressCore.getLabel(form.address.city, addressCore.getCityOptions()) ?? form.address.city : void 0
169
- },
170
- browser: await getBrowserParams({
171
- fraudDetectionId: await (fraudDetection == null ? void 0 : fraudDetection.getFraudDetectionId())
172
- })
173
- };
174
- };
175
- const pay = async (search = false, timeout) => {
176
- var _a, _b, _c, _d, _e, _f, _g;
177
- try {
178
- const requestOptions = { locale: i18n.locale, timeout };
179
- let res = null;
180
- if (search) {
181
- const extraParams = (_b = (_a = core.config)._getExtraParams) == null ? void 0 : _b.call(_a, "query", PaymentMethod.BOOST);
182
- res = await getBoostPayInfo(
183
- {
184
- sessionId: session.sessionId,
185
- clientKey: session.clientKey,
186
- paymentMethod: PaymentMethod.BOOST
187
- },
188
- extraParams,
189
- requestOptions
190
- );
191
- } else {
192
- const extraParams = (_d = (_c = core.config)._getExtraParams) == null ? void 0 : _d.call(_c, "payment", PaymentMethod.BOOST);
193
- res = await boostPay(await getPaymentParams(), extraParams, requestOptions);
194
- }
195
- !search && ((_e = props.onSubmitResponse) == null ? void 0 : _e.call(props, res, getPaymentMethodContext()));
196
- const { status, orderStatus, errorMessage, errorCode, payInfo, sessionId } = res;
197
- sessionId && (session.sessionId = sessionId);
198
- if (status === "PROCESSING") {
199
- if (!orderStatus) {
200
- setSubmitButtonStatus("unSubmit");
201
- return { end: true };
202
- } else if (orderStatus === "SUCCESS") {
203
- processOnSuccess(res);
204
- return { end: true };
205
- } else if (orderStatus === "FAILURE") {
206
- errorMessage && setErrorMsg(errorMessage);
207
- setSubmitButtonStatus("unSubmit");
208
- processOnError(new PayKKaError("API_ERROR", errorMessage, { code: errorCode }));
209
- return { end: true };
210
- } else if (orderStatus === "PROCESSING") {
211
- if (!search) {
212
- if (redirectMode === "auto" && payInfo) {
213
- redirectToPayment(payInfo);
214
- return { end: true };
215
- } else {
216
- startReFetchPayInfo();
217
- }
218
- }
219
- return { end: false };
220
- } else if (orderStatus === "CANCELED") {
221
- setSubmitButtonStatus("unSubmit");
222
- (_f = props.onTimeout) == null ? void 0 : _f.call(props, "channel", getPaymentMethodContext());
223
- core.resetEnablePaymentMethod();
224
- return { end: true };
225
- }
226
- } else if (status === "SUCCESS") {
227
- processOnSuccess(res);
228
- return { end: true };
229
- } else if (status === "EXPIRED") {
230
- setSubmitButtonStatus("unSubmit");
231
- (_g = props.onExpired) == null ? void 0 : _g.call(props, getPaymentMethodContext());
232
- return { end: true };
233
- }
234
- setSubmitButtonStatus("unSubmit");
235
- return { end: true };
236
- } catch (error) {
237
- if (isTimeoutError(error)) {
238
- if (search) {
239
- return { end: false };
240
- } else {
241
- onTimeout();
242
- return { end: true };
243
- }
244
- } else {
245
- const message = error.i18nKey ? i18n.get(error.i18nKey) : error.message;
246
- message && setErrorMsg(message);
247
- processOnError(new PayKKaError("API_ERROR", message, { code: error.code, cause: error }));
248
- setSubmitButtonStatus("unSubmit");
249
- return { end: true };
250
- }
251
- }
252
- };
253
- const validateForm = () => {
254
- var _a;
255
- (_a = formRef.current) == null ? void 0 : _a.validate(void 0, false).then(() => {
256
- setValidated(true);
257
- }).catch(() => {
258
- setValidated(false);
259
- });
260
- };
261
- y(() => {
262
- validateForm();
263
- }, [form]);
264
- const onSubmit = async () => {
265
- var _a;
266
- setErrorMsg("");
267
- (_a = formRef.current) == null ? void 0 : _a.validate(async (errors) => {
268
- var _a2;
269
- (fieldStatus == null ? void 0 : fieldStatus.address.show) && addressCore.setValidateAllFields(true);
270
- (_a2 = props.onSubmit) == null ? void 0 : _a2.call(props, errors, getPaymentMethodContext());
271
- if (errors) {
272
- setSubmitButtonStatus("unSubmit");
273
- return;
274
- }
275
- setErrorMsg("");
276
- setSubmitButtonStatus("loading");
277
- await pay();
278
- });
279
- };
280
- const setFormRef = (dom) => {
281
- formRef.current = dom;
282
- dom && validateForm();
283
- };
284
- const Button = () => {
285
- var _a;
286
- const transAmount = (_a = session == null ? void 0 : session.checkout) == null ? void 0 : _a.transAmount;
287
- const amountText = (transAmount == null ? void 0 : transAmount.amount) ? formatAmount(transAmount).jointSymbol() : "";
288
- const text = i18n.get("common.pay") + (amountText ? ` ${amountText}` : "");
289
- return /* @__PURE__ */ u(
290
- SubmitButton,
291
- {
292
- className: bem("button"),
293
- status: submitButtonStatus,
294
- text,
295
- loadingText: i18n.get("common.payProcessing"),
296
- successText: i18n.get("common.paySuccess"),
297
- onClick: onSubmit,
298
- verified: validated
299
- }
300
- );
301
- };
302
- const Email = () => {
303
- return /* @__PURE__ */ u(b, { children: (fieldStatus == null ? void 0 : fieldStatus.email.show) && /* @__PURE__ */ u("div", { className: fieldClassNames, children: /* @__PURE__ */ u(
304
- EmailField,
305
- {
306
- ref: emailFieldRef,
307
- value: form.email,
308
- disabled: fieldStatus == null ? void 0 : fieldStatus.email.disabled
309
- }
310
- ) }) });
311
- };
312
- const ErrorMessage = () => {
313
- return /* @__PURE__ */ u(b, { children: !!errorMsg && /* @__PURE__ */ u(Info, { content: errorMsg }) });
314
- };
315
- const Address = () => {
316
- return /* @__PURE__ */ u(b, { children: (fieldStatus == null ? void 0 : fieldStatus.address.show) && /* @__PURE__ */ u("div", { className: fieldClassNames, children: /* @__PURE__ */ u(
317
- AddressField,
318
- {
319
- ref: addressFieldRef,
320
- value: form.address,
321
- onChange: (value) => setForm(Object.assign(form, { address: value }))
322
- }
323
- ) }) });
324
- };
325
- return /* @__PURE__ */ u(
326
- CoreContext.Provider,
327
- {
328
- value: {
329
- i18n,
330
- session,
331
- core
332
- },
333
- children: isCheckoutEnabled && i18n.ready.value && /* @__PURE__ */ u("div", { className: core.theme.className, children: [
334
- showGuideCard && /* @__PURE__ */ u(GuideCard, { type: PaymentCategory.BOOST }),
335
- /* @__PURE__ */ u(Form, { form, ref: setFormRef, onFormChange: (form2) => setForm(form2), children: /* @__PURE__ */ u("div", { className: normalizedClass(COMMON_CLASS_NAME, bem()), children: [
336
- Email(),
337
- Address(),
338
- /* @__PURE__ */ u("div", { className: bem("footer-wrapper"), children: [
339
- ErrorMessage(),
340
- !hidePaymentButton && Button()
341
- ] })
342
- ] }) })
343
- ] })
344
- }
345
- );
346
- });
347
- export {
348
- Boost
349
- };