@alipay/ams-checkout 2.0.27 → 2.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ams-checkout.js +3 -3
- package/dist/ams-checkout.min.js +1 -1
- package/esm/config/index.js +1 -1
- package/esm/core/component/ckp/index.js +21 -1
- package/esm/core/component/element/modernElementController/adapter.js +3 -3
- package/esm/core/component/element/modernElementController/index.d.ts +6 -1
- package/esm/core/component/element/modernElementController/index.js +198 -136
- package/esm/modern/index.js +1 -1
- package/esm/modern/loadAntomTracker.d.ts +7 -0
- package/esm/modern/loadAntomTracker.js +64 -0
- package/esm/modern/tools.js +1 -1
- package/esm/tsdoc-metadata.json +1 -1
- package/esm/util/logger.js +1 -1
- package/esm/util/timezone.d.ts +1 -0
- package/esm/util/timezone.js +8 -0
- package/package.json +1 -1
- package/types.d.ts +393 -50
- package/types.untrimmed.d.ts +413 -47
package/types.untrimmed.d.ts
CHANGED
|
@@ -290,8 +290,10 @@ export declare interface AntomOpenModalConfig extends OpenModalParams {
|
|
|
290
290
|
export declare class AntomSDK extends BaseElementsFactory {
|
|
291
291
|
static version: string;
|
|
292
292
|
private stopModalMessageMonitor;
|
|
293
|
+
private readonly apiTracker;
|
|
293
294
|
constructor(config?: AntomSDKConfig);
|
|
294
295
|
protected canUseElements(): Array<ElementListItemType>;
|
|
296
|
+
init(): Promise<this>;
|
|
295
297
|
/**
|
|
296
298
|
* @description 更新配置
|
|
297
299
|
*/
|
|
@@ -313,19 +315,36 @@ export declare class AntomSDK extends BaseElementsFactory {
|
|
|
313
315
|
elements(): Elements;
|
|
314
316
|
createElement(elementType: 'payment', options?: PaymentAppConfig): PaymentElement;
|
|
315
317
|
createElement(elementType: 'vaulting', options?: VaultingAppConfig): VaultingElement;
|
|
316
|
-
createElement(elementType: 'CVV', options
|
|
318
|
+
createElement(elementType: 'CVV', options: CVVAppConfig): CVVElement;
|
|
317
319
|
createElement(elementType: 'express', options?: ExpressAppConfig): ExpressElement;
|
|
320
|
+
createElement(elementType: 'expressVaulting', options?: ExpressVaultingAppConfig): ExpressVaultingElement;
|
|
318
321
|
getElement(elementType: 'payment', options?: PaymentAppConfig): PaymentElement;
|
|
319
322
|
getElement(elementType: 'vaulting', options?: VaultingAppConfig): VaultingElement;
|
|
320
323
|
getElement(elementType: 'CVV', options?: CVVAppConfig): CVVElement;
|
|
321
324
|
getElement(elementType: 'express', options?: ExpressAppConfig): ExpressElement;
|
|
325
|
+
getElement(elementType: 'expressVaulting', options?: ExpressVaultingAppConfig): ExpressVaultingElement;
|
|
322
326
|
/**
|
|
323
327
|
* 从 elements 容器或直接传入的 MainElement 中提取指定类型的主元素
|
|
324
328
|
* @throws {AntomSDKError} 当无法找到有效的主元素时抛出错误
|
|
325
329
|
*/
|
|
326
330
|
private extractMainElement;
|
|
327
331
|
confirmCardSetup(options: ConfirmCardSetupOptions): Promise<SubmitResult>;
|
|
332
|
+
private runConfirmCardSetup;
|
|
328
333
|
confirmPayment(options: ConfirmPaymentOptions): Promise<SubmitResult>;
|
|
334
|
+
private runConfirmPayment;
|
|
335
|
+
/**
|
|
336
|
+
* 触发 Express Vaulting element 的 PayPal 绑卡提交流程。
|
|
337
|
+
*
|
|
338
|
+
* iframe 收到 OPENSDK@CONFIRM_VAULTING 后执行 submitPay + 单次 inquiry 兜底,
|
|
339
|
+
* 完成后通过 OPENSDK@CONFIRM_VAULTING_RESULT 回包,Promise resolve。
|
|
340
|
+
*
|
|
341
|
+
* @param options.elements 已挂载的 ExpressVaultingElement 或包含它的 Elements 实例
|
|
342
|
+
* @param options.redirect 跳转策略,默认 'always',透传给 iframe
|
|
343
|
+
*/
|
|
344
|
+
confirmVaulting(options: {
|
|
345
|
+
elements: BaseMainElement | BaseElements;
|
|
346
|
+
redirect?: 'always' | 'if_required';
|
|
347
|
+
}): Promise<ExpressVaultingResult>;
|
|
329
348
|
}
|
|
330
349
|
|
|
331
350
|
/**
|
|
@@ -385,9 +404,29 @@ export declare const AntomSDKErrorCodes: {
|
|
|
385
404
|
*/
|
|
386
405
|
readonly AMOUNT_VALUE_EMPTY: "AMOUNT_VALUE_EMPTY";
|
|
387
406
|
/**
|
|
388
|
-
* @description
|
|
407
|
+
* @description 金额格式非法(仅允许 ASCII 数字字符串)
|
|
389
408
|
*/
|
|
390
409
|
readonly AMOUNT_VALUE_INVALID: "AMOUNT_VALUE_INVALID";
|
|
410
|
+
/**
|
|
411
|
+
* @description Amount currency does not match the payment session currency
|
|
412
|
+
*/
|
|
413
|
+
readonly AMOUNT_CURRENCY_MISMATCH: "AMOUNT_CURRENCY_MISMATCH";
|
|
414
|
+
/**
|
|
415
|
+
* @description Amount currency is not supported
|
|
416
|
+
*/
|
|
417
|
+
readonly AMOUNT_CURRENCY_UNSUPPORTED: "AMOUNT_CURRENCY_UNSUPPORTED";
|
|
418
|
+
/**
|
|
419
|
+
* @description Amount currency precision is not supported
|
|
420
|
+
*/
|
|
421
|
+
readonly AMOUNT_PRECISION_UNSUPPORTED: "AMOUNT_PRECISION_UNSUPPORTED";
|
|
422
|
+
/**
|
|
423
|
+
* @description Amount conversion timed out
|
|
424
|
+
*/
|
|
425
|
+
readonly AMOUNT_RESOLVE_TIMEOUT: "AMOUNT_RESOLVE_TIMEOUT";
|
|
426
|
+
/**
|
|
427
|
+
* @description Amount conversion failed
|
|
428
|
+
*/
|
|
429
|
+
readonly AMOUNT_RESOLVE_FAILED: "AMOUNT_RESOLVE_FAILED";
|
|
391
430
|
readonly GENERATE_ELEMENT_KEY_FAILED: "GENERATE_ELEMENT_KEY_FAILED";
|
|
392
431
|
readonly ELEMENT_INIT_FAILED: "ELEMENT_INIT_FAILED";
|
|
393
432
|
readonly MOUNT_TIMEOUT: "MOUNT_TIMEOUT";
|
|
@@ -400,8 +439,8 @@ export declare const AntomSDKErrorCodes: {
|
|
|
400
439
|
readonly ELEMENT_DEFINE_ERROR: "ELEMENT_DEFINE_ERROR";
|
|
401
440
|
readonly ELEMENT_ALREADY_REGISTERED: "ELEMENT_ALREADY_REGISTERED";
|
|
402
441
|
readonly CANNOT_CREATE_SAME_ELEMENT_TWICE: "CANNOT_CREATE_SAME_ELEMENT_TWICE";
|
|
403
|
-
readonly GROUPS_ONLY_ONE_MAIN_ELEMENT: "GROUPS_ONLY_ONE_MAIN_ELEMENT";
|
|
404
|
-
readonly GROUPS_NOT_FOUND_MAIN_ELEMENT: "GROUPS_NOT_FOUND_MAIN_ELEMENT";
|
|
442
|
+
readonly GROUPS_ONLY_ONE_MAIN_ELEMENT: "GROUPS_ONLY_ONE_MAIN_ELEMENT"; /** @deprecated 传入 elements 时无需重复传递,且不会覆盖 Element 的会话。 */
|
|
443
|
+
readonly GROUPS_NOT_FOUND_MAIN_ELEMENT: "GROUPS_NOT_FOUND_MAIN_ELEMENT"; /** 无 UI 模式必填,仅用于创建内部 CVVElement。 */
|
|
405
444
|
readonly NOT_SUPPORT_ELEMENT: "NOT_SUPPORT_ELEMENT";
|
|
406
445
|
readonly NOT_SUPPORT_SUBMIT: "NOT_SUPPORT_SUBMIT";
|
|
407
446
|
readonly UPDATE_CONFIG_TIMEOUT: "UPDATE_CONFIG_TIMEOUT";
|
|
@@ -2524,18 +2563,22 @@ export declare interface ConfirmCardSetupOptions {
|
|
|
2524
2563
|
redirect?: 'always' | 'if_required';
|
|
2525
2564
|
}
|
|
2526
2565
|
|
|
2527
|
-
export declare
|
|
2528
|
-
sessionData: string;
|
|
2529
|
-
/**
|
|
2530
|
-
* @description 传入已挂载的 CVVElement / PaymentElement / Elements 实例,不传则使用无 UI 自动提交模式
|
|
2531
|
-
*/
|
|
2532
|
-
elements?: BaseMainElement | BaseElements;
|
|
2566
|
+
export declare type ConfirmPaymentOptions = PaymentSubmitParams & {
|
|
2533
2567
|
appearance?: CVVAppearance;
|
|
2534
2568
|
/**
|
|
2535
2569
|
* @description 集成用户自定义信息(如 cardHolderName)
|
|
2536
2570
|
*/
|
|
2537
2571
|
params?: Record<string, unknown>;
|
|
2538
|
-
}
|
|
2572
|
+
} & ({
|
|
2573
|
+
/** 已挂载的 Element;确认时使用其创建时绑定的会话。 */
|
|
2574
|
+
elements: BaseMainElement | BaseElements;
|
|
2575
|
+
/** @deprecated 传入 elements 时无需重复传递,且不会覆盖 Element 的会话。 */
|
|
2576
|
+
sessionData?: string;
|
|
2577
|
+
} | {
|
|
2578
|
+
elements?: undefined;
|
|
2579
|
+
/** 无 UI 模式必填,仅用于创建内部 CVVElement。 */
|
|
2580
|
+
sessionData: string;
|
|
2581
|
+
});
|
|
2539
2582
|
|
|
2540
2583
|
/**
|
|
2541
2584
|
* @description Connect流程参数
|
|
@@ -2676,9 +2719,9 @@ export declare interface CVVAppConfig extends BaseElementAppConfig {
|
|
|
2676
2719
|
/** CVV appearance configuration including optional alias-only Rules. */
|
|
2677
2720
|
appearance?: CVVAppearance;
|
|
2678
2721
|
/**
|
|
2679
|
-
* @description
|
|
2722
|
+
* @description 创建时必填的支付会话;不可通过 updateConfig 或 submit 替换
|
|
2680
2723
|
*/
|
|
2681
|
-
sessionData
|
|
2724
|
+
sessionData: string;
|
|
2682
2725
|
/**
|
|
2683
2726
|
* @internal sessionConfig 渲染数据,内部使用,无需用户传递
|
|
2684
2727
|
*/
|
|
@@ -2722,21 +2765,30 @@ export declare type CVVAppearanceProps = {
|
|
|
2722
2765
|
*/
|
|
2723
2766
|
export declare class CVVElement extends BaseMainElement<CVVElementConfig, CVVElementEvents> {
|
|
2724
2767
|
static elementType: string;
|
|
2768
|
+
private readonly sessionData;
|
|
2769
|
+
private readonly elementTracker;
|
|
2770
|
+
private _mountInProgress;
|
|
2771
|
+
private _destroyInProgress;
|
|
2725
2772
|
constructor(name: string, config: CVVElementConfig);
|
|
2726
2773
|
/**
|
|
2727
2774
|
* @internal
|
|
2728
2775
|
*/
|
|
2729
2776
|
setup(): Promise<Partial<CVVAppConfig> | undefined>;
|
|
2730
2777
|
/**
|
|
2731
|
-
*
|
|
2732
|
-
*
|
|
2778
|
+
* @internal Not supported by the public CVV integration API.
|
|
2779
|
+
* Updates appearance only, preserving the Rules clear semantics.
|
|
2780
|
+
* @param newConfig Appearance configuration patch.
|
|
2733
2781
|
* @returns The WebApp update acknowledgement.
|
|
2734
2782
|
*/
|
|
2735
|
-
updateConfig(newConfig:
|
|
2783
|
+
updateConfig(newConfig: Pick<CVVAppConfig, 'appearance'>): Promise<CVVElementEvents['OPENSDK@UPDATE_CONFIG_REPLY']>;
|
|
2736
2784
|
/**
|
|
2737
2785
|
* @internal
|
|
2738
2786
|
*/
|
|
2739
2787
|
submit(data?: CVVSubmitParams): Promise<SubmitResult>;
|
|
2788
|
+
mount(container: HTMLElement): Promise<void>;
|
|
2789
|
+
on<T extends keyof CVVElementEvents>(event: T, handler: (payload: CVVElementEvents[T]) => void): void;
|
|
2790
|
+
unmount(): void;
|
|
2791
|
+
destroy(): void;
|
|
2740
2792
|
protected focus(): void;
|
|
2741
2793
|
protected blur(): void;
|
|
2742
2794
|
protected clear(): void;
|
|
@@ -2747,20 +2799,10 @@ export declare class CVVElement extends BaseMainElement<CVVElementConfig, CVVEle
|
|
|
2747
2799
|
* @description CVV element config type
|
|
2748
2800
|
*/
|
|
2749
2801
|
export declare interface CVVElementConfig extends BaseElementConfig<CVVAppConfig> {
|
|
2802
|
+
appConfig: CVVAppConfig;
|
|
2750
2803
|
}
|
|
2751
2804
|
|
|
2752
|
-
export declare interface CVVElementEvents extends AntomBridgeEventMap<CVVAppConfig, CVVSubmitParams
|
|
2753
|
-
/**
|
|
2754
|
-
* @description Emitted event about form
|
|
2755
|
-
*/
|
|
2756
|
-
form: {
|
|
2757
|
-
errors?: Array<{
|
|
2758
|
-
field: string | number;
|
|
2759
|
-
message: string;
|
|
2760
|
-
currentValue: any;
|
|
2761
|
-
}>;
|
|
2762
|
-
message: string;
|
|
2763
|
-
};
|
|
2805
|
+
export declare interface CVVElementEvents extends AntomBridgeEventMap<CVVAppConfig, CVVSubmitParams & Pick<CVVAppConfig, 'sessionData'>> {
|
|
2764
2806
|
/**
|
|
2765
2807
|
* @description Emitted when the element is destroy
|
|
2766
2808
|
*/
|
|
@@ -2804,10 +2846,6 @@ export declare type CVVSubmitErrorCodes = 'NOT_FIND_MAINELEMENT' | 'SESSION_DATA
|
|
|
2804
2846
|
* @description CVV 支付提交参数
|
|
2805
2847
|
*/
|
|
2806
2848
|
export declare interface CVVSubmitParams {
|
|
2807
|
-
/**
|
|
2808
|
-
* 支付会话数据
|
|
2809
|
-
*/
|
|
2810
|
-
sessionData?: string;
|
|
2811
2849
|
/**
|
|
2812
2850
|
* 重定向策略
|
|
2813
2851
|
*/
|
|
@@ -3491,8 +3529,12 @@ declare interface ElementPluginChangeStates {
|
|
|
3491
3529
|
declare type ElementPluginNameEnum = 'SET_STATE' | 'PASSIVE_SET_STATE';
|
|
3492
3530
|
|
|
3493
3531
|
declare class Elements extends BaseElements {
|
|
3532
|
+
private readonly apiTracker;
|
|
3494
3533
|
protected canUseElements(): Array<ElementListItemType>;
|
|
3495
3534
|
constructor(config: BaseElementsConfig);
|
|
3535
|
+
init(): Promise<this>;
|
|
3536
|
+
updateConfig(config: Partial<BaseElementsConfig>): void;
|
|
3537
|
+
destroy(): void;
|
|
3496
3538
|
createElement(elementType: 'vaulting', options?: VaultingAppConfig): VaultingElement;
|
|
3497
3539
|
createElement(elementType: 'express', options?: ExpressAppConfig): ExpressElement;
|
|
3498
3540
|
getElement(elementType: 'vaulting', options?: VaultingAppConfig): VaultingElement;
|
|
@@ -3628,12 +3670,13 @@ export declare interface ExpressAppConfig extends BaseElementAppConfig {
|
|
|
3628
3670
|
/**
|
|
3629
3671
|
* Amount & Currency
|
|
3630
3672
|
*
|
|
3631
|
-
*
|
|
3632
|
-
*
|
|
3633
|
-
*
|
|
3673
|
+
* For Apple Pay and Google Pay, `value` is a positive ASCII digit string in
|
|
3674
|
+
* the payment session currency's minor unit; `currency` may be omitted.
|
|
3675
|
+
* For example, USD 10.99 is passed as `{ value: '1099' }`.
|
|
3676
|
+
* PayPal keeps its existing major-unit amount semantics and requires `currency`.
|
|
3634
3677
|
*/
|
|
3635
3678
|
amount?: {
|
|
3636
|
-
currency
|
|
3679
|
+
currency?: string;
|
|
3637
3680
|
value: string;
|
|
3638
3681
|
};
|
|
3639
3682
|
/** PayPal 配置 */
|
|
@@ -3709,6 +3752,17 @@ export declare interface ExpressClickEvent {
|
|
|
3709
3752
|
expressPaymentType: string;
|
|
3710
3753
|
}
|
|
3711
3754
|
|
|
3755
|
+
declare type ExpressCompletePaymentResult = {
|
|
3756
|
+
success: boolean;
|
|
3757
|
+
result?: any;
|
|
3758
|
+
error?: {
|
|
3759
|
+
code: string;
|
|
3760
|
+
message: string;
|
|
3761
|
+
};
|
|
3762
|
+
userCanceled3D?: boolean;
|
|
3763
|
+
status?: 'SUCCESS' | 'CANCELLED' | 'FAIL' | 'PROCESSING';
|
|
3764
|
+
};
|
|
3765
|
+
|
|
3712
3766
|
/** confirm 事件负载(统一终态,替代 approve) */
|
|
3713
3767
|
export declare interface ExpressConfirmData {
|
|
3714
3768
|
expressPaymentType: string;
|
|
@@ -3755,6 +3809,10 @@ export declare interface ExpressConfirmData {
|
|
|
3755
3809
|
*/
|
|
3756
3810
|
export declare class ExpressElement extends BaseMainElement<ExpressElementConfig, ExpressElementEvents> {
|
|
3757
3811
|
static elementType: string;
|
|
3812
|
+
private readonly elementTracker;
|
|
3813
|
+
private _mountInProgress;
|
|
3814
|
+
private _destroyInProgress;
|
|
3815
|
+
private _registeringInternalListeners;
|
|
3758
3816
|
/**
|
|
3759
3817
|
* Store all function-type callbacks locally, not involved in postMessage serialization
|
|
3760
3818
|
*/
|
|
@@ -3773,7 +3831,23 @@ export declare class ExpressElement extends BaseMainElement<ExpressElementConfig
|
|
|
3773
3831
|
private _localHandlers;
|
|
3774
3832
|
/** 支付流程进行中标志(click → confirm/error/cancel 之间) */
|
|
3775
3833
|
private _paymentInProgress;
|
|
3834
|
+
/**
|
|
3835
|
+
* confirm 窗口超时标志:iframe 在 20s onTimeout 发 error(MERCHANT_CONFIRM_TIMEOUT) 时置位,
|
|
3836
|
+
* completePayment 入口据此立即返失败(不发 COMPLETE_PAYMENT,不进 5min 兜底)。
|
|
3837
|
+
* 每新一轮 confirm 事件到达时复位(见 on() 重写)。
|
|
3838
|
+
*/
|
|
3839
|
+
private _confirmWindowTimedOut;
|
|
3840
|
+
/**
|
|
3841
|
+
* 是否已收到 iframe 业务层 ready 事件(app.tsx sendReady)。
|
|
3842
|
+
* 注意:与 host `status='ready'`(由 HANDSHAKE_ACK 触发,bridge.js:450 同步回发,与 amount 解析无关)不同。
|
|
3843
|
+
* 首屏 amount setupError 时 iframe 不发业务 ready → _readyReceived 保持 false,
|
|
3844
|
+
* 据此判别"首屏失败"以阻断后续 updateConfig。
|
|
3845
|
+
*/
|
|
3846
|
+
private _readyReceived;
|
|
3847
|
+
/** 首屏 setupError 致命标志:置位后 updateConfig 被 CHECKOUT_NOT_READY 阻断,只能 destroy 重开。 */
|
|
3848
|
+
private _setupFailed;
|
|
3776
3849
|
private _paypalOverlay;
|
|
3850
|
+
private _updateQueue;
|
|
3777
3851
|
constructor(name: string, config: ExpressElementConfig);
|
|
3778
3852
|
/**
|
|
3779
3853
|
* 重写 on:对 confirm 事件拦截,在商户回调执行前注入 paymentFailed()
|
|
@@ -3785,24 +3859,29 @@ export declare class ExpressElement extends BaseMainElement<ExpressElementConfig
|
|
|
3785
3859
|
*/
|
|
3786
3860
|
private _emit;
|
|
3787
3861
|
updateConfig(newConfig: ExpressAppConfig): Promise<ExpressElementEvents['OPENSDK@UPDATE_CONFIG_REPLY']>;
|
|
3862
|
+
private runUpdateConfig;
|
|
3863
|
+
private updateConfigTransaction;
|
|
3864
|
+
private updateAmountConfigWithSanitizedDebug;
|
|
3865
|
+
private getAmountValidationReason;
|
|
3866
|
+
/** iframe 业务 ready 事件到达:置 _readyReceived,后续运行时 error 不再视为首屏失败。
|
|
3867
|
+
* ready 是"本次首屏成功"的确实信号(首屏 setupError 时 iframe 不发 ready),
|
|
3868
|
+
* 故同时清掉 _setupFailed——unmount+remount 同实例二次首屏成功后可恢复 updateConfig。
|
|
3869
|
+
*/
|
|
3870
|
+
private _handleReady;
|
|
3871
|
+
/** iframe error 事件:若 business ready 未到达,视为首屏 setupError → 置 _setupFailed 阻断后续 updateConfig。 */
|
|
3872
|
+
private _handleError;
|
|
3788
3873
|
/**
|
|
3789
3874
|
* 商户在 confirm 回调内调用,触发实际支付提交。
|
|
3790
3875
|
* iframe 收到 OPENSDK@COMPLETE_PAYMENT 后执行 submitPay / polling 等,
|
|
3791
3876
|
* 完成后通过 OPENSDK@COMPLETE_PAYMENT_RESULT 回包,Promise resolve。
|
|
3792
3877
|
*/
|
|
3793
|
-
completePayment(redirect?: 'always' | 'if_required'): Promise<
|
|
3794
|
-
|
|
3795
|
-
result?: any;
|
|
3796
|
-
error?: {
|
|
3797
|
-
code: string;
|
|
3798
|
-
message: string;
|
|
3799
|
-
};
|
|
3800
|
-
/** 用户是否手动关闭 3D 弹窗(透传 webapp COMPLETE_PAYMENT_RESULT.userCanceled3D) */
|
|
3801
|
-
userCanceled3D?: boolean;
|
|
3802
|
-
status?: 'SUCCESS' | 'CANCELLED' | 'FAIL' | 'PROCESSING';
|
|
3803
|
-
}>;
|
|
3878
|
+
completePayment(redirect?: 'always' | 'if_required'): Promise<ExpressCompletePaymentResult>;
|
|
3879
|
+
private runCompletePayment;
|
|
3804
3880
|
setup(): Promise<Partial<ExpressAppConfig> | undefined>;
|
|
3805
3881
|
private registerInternalListeners;
|
|
3882
|
+
mount(container: HTMLElement): Promise<void>;
|
|
3883
|
+
unmount(): void;
|
|
3884
|
+
destroy(): void;
|
|
3806
3885
|
protected focus(): void;
|
|
3807
3886
|
protected blur(): void;
|
|
3808
3887
|
protected clear(): void;
|
|
@@ -3874,6 +3953,11 @@ export declare interface ExpressElementEvents extends AntomBridgeWithNativeEvent
|
|
|
3874
3953
|
'OPENSDK@GET_APPLE_PAY_TOKEN': {
|
|
3875
3954
|
requestId: string;
|
|
3876
3955
|
expressPaymentType: string;
|
|
3956
|
+
/** iframe 已转好的 major unit 金额(来自 resolvedAmount);host 委托 Apple Pay 消费,不再做 minor→major 转换。 */
|
|
3957
|
+
walletAmount?: {
|
|
3958
|
+
value: string;
|
|
3959
|
+
currency: string;
|
|
3960
|
+
};
|
|
3877
3961
|
};
|
|
3878
3962
|
/** host 完成 Apple Pay token 获取后回包给 iframe,submit/3DS/polling 均由 webapp 完成 */
|
|
3879
3963
|
'OPENSDK@GET_APPLE_PAY_TOKEN_REPLY': {
|
|
@@ -3906,6 +3990,201 @@ declare type ExpressSetupError = ErrorPayload & {
|
|
|
3906
3990
|
mulityLanguageMapping?: boolean;
|
|
3907
3991
|
};
|
|
3908
3992
|
|
|
3993
|
+
/**
|
|
3994
|
+
* @public
|
|
3995
|
+
* @description Express Vaulting element app config type
|
|
3996
|
+
*/
|
|
3997
|
+
export declare interface ExpressVaultingAppConfig extends BaseElementAppConfig {
|
|
3998
|
+
/**
|
|
3999
|
+
* @description payment sessionData,无法通过 updateConfig 更新
|
|
4000
|
+
*/
|
|
4001
|
+
sessionData?: string;
|
|
4002
|
+
/**
|
|
4003
|
+
* @description 开通的支付方式列表,本期固定为 ['PAYPAL_DIRECTDEBIT']
|
|
4004
|
+
*/
|
|
4005
|
+
paymentMethods?: string[];
|
|
4006
|
+
/** PayPal 按钮配置 */
|
|
4007
|
+
paypal?: ExpressVaultingPayPalConfig;
|
|
4008
|
+
/** PayPal 按钮文案类型 */
|
|
4009
|
+
buttonType?: {
|
|
4010
|
+
paypal?: 'paypal' | 'checkout' | 'buynow' | 'pay';
|
|
4011
|
+
};
|
|
4012
|
+
/** 按钮统一高度(px) */
|
|
4013
|
+
buttonHeight?: number;
|
|
4014
|
+
/** PayPal 按钮主题色 */
|
|
4015
|
+
buttonTheme?: {
|
|
4016
|
+
paypal?: 'gold' | 'blue' | 'silver' | 'white' | 'black';
|
|
4017
|
+
};
|
|
4018
|
+
}
|
|
4019
|
+
|
|
4020
|
+
/**
|
|
4021
|
+
* @public
|
|
4022
|
+
* @description cancel 事件负载
|
|
4023
|
+
*/
|
|
4024
|
+
export declare interface ExpressVaultingCancelEvent {
|
|
4025
|
+
paymentMethodType: ExpressVaultingMethod;
|
|
4026
|
+
data?: unknown;
|
|
4027
|
+
}
|
|
4028
|
+
|
|
4029
|
+
/**
|
|
4030
|
+
* @public
|
|
4031
|
+
* @description click 事件负载
|
|
4032
|
+
*/
|
|
4033
|
+
export declare interface ExpressVaultingClickEvent {
|
|
4034
|
+
paymentMethodType: ExpressVaultingMethod;
|
|
4035
|
+
}
|
|
4036
|
+
|
|
4037
|
+
/**
|
|
4038
|
+
* @public
|
|
4039
|
+
* @description confirm 事件负载(PayPal onApprove 成功后触发,商户可在回调中调 confirmVaulting)
|
|
4040
|
+
*/
|
|
4041
|
+
export declare interface ExpressVaultingConfirmEvent {
|
|
4042
|
+
paymentMethodType: ExpressVaultingMethod;
|
|
4043
|
+
payerInfo?: ExpressVaultingPayerInfo;
|
|
4044
|
+
}
|
|
4045
|
+
|
|
4046
|
+
/**
|
|
4047
|
+
* @public
|
|
4048
|
+
* @description Express Vaulting element - PayPal 绑卡 Element
|
|
4049
|
+
*
|
|
4050
|
+
* Host 侧只保留 Element 生命周期与 bridge 连接;PayPal 按钮渲染、Braintree SDK
|
|
4051
|
+
* 加载、submit/inquiry 都由 express_vaulting webapp 承接。
|
|
4052
|
+
*
|
|
4053
|
+
* setup 阶段调 sdkActionQuery 拿 paypalClientToken,握手时下发给 iframe(系分
|
|
4054
|
+
* 4.1 节 BR-007:client token 必须来自握手,iframe 不自调 sdkActionQuery)。
|
|
4055
|
+
*/
|
|
4056
|
+
export declare class ExpressVaultingElement extends BaseMainElement<ExpressVaultingElementConfig, ExpressVaultingElementEvents> {
|
|
4057
|
+
static elementType: string;
|
|
4058
|
+
/**
|
|
4059
|
+
* Host-side fullscreen overlay shown while the PayPal popup is open.
|
|
4060
|
+
*
|
|
4061
|
+
* PayPal Braintree vault flow renders its own popup + backdrop inside the
|
|
4062
|
+
* iframe body, so without a host overlay the backdrop only masks the tiny
|
|
4063
|
+
* button area. Mirrors ExpressElement: show on `click`, hide on
|
|
4064
|
+
* `confirm` / `cancel` / `error`.
|
|
4065
|
+
*/
|
|
4066
|
+
private _paypalOverlay;
|
|
4067
|
+
constructor(name: string, config: ExpressVaultingElementConfig);
|
|
4068
|
+
/**
|
|
4069
|
+
* @internal
|
|
4070
|
+
* 握手前调 sdkActionQuery 拿 paypalClientToken,连同按钮样式一起打包下发给 iframe。
|
|
4071
|
+
* 失败时以 setupError 形式返回,iframe 侧读取后透传 error 事件。
|
|
4072
|
+
*/
|
|
4073
|
+
setup(): Promise<Partial<ExpressVaultingAppConfig> | undefined>;
|
|
4074
|
+
/**
|
|
4075
|
+
* @internal
|
|
4076
|
+
* Host-side bridge listeners. Only the PayPal overlay lifecycle here —
|
|
4077
|
+
* show when the PayPal popup opens (click), hide when it closes
|
|
4078
|
+
* (confirm / cancel / error). Mirrors ExpressElement's overlay handling.
|
|
4079
|
+
*/
|
|
4080
|
+
private registerInternalListeners;
|
|
4081
|
+
protected focus(): void;
|
|
4082
|
+
protected blur(): void;
|
|
4083
|
+
protected clear(): void;
|
|
4084
|
+
/**
|
|
4085
|
+
* @internal
|
|
4086
|
+
* 由 SDK 容器(antom.ts.confirmVaulting)调用,向 iframe 发送 CONFIRM_VAULTING
|
|
4087
|
+
* 指令并等待 CONFIRM_VAULTING_RESULT 回包。iframe 侧执行 submitPay + 单次 inquiry
|
|
4088
|
+
* 兜底后回包终态结果。
|
|
4089
|
+
*/
|
|
4090
|
+
_confirmVaulting(redirect?: 'always' | 'if_required'): Promise<ExpressVaultingResult>;
|
|
4091
|
+
}
|
|
4092
|
+
|
|
4093
|
+
/**
|
|
4094
|
+
* @public
|
|
4095
|
+
* @description Express Vaulting element config type
|
|
4096
|
+
*/
|
|
4097
|
+
export declare interface ExpressVaultingElementConfig extends BaseElementConfig<ExpressVaultingAppConfig> {
|
|
4098
|
+
}
|
|
4099
|
+
|
|
4100
|
+
/**
|
|
4101
|
+
* @public
|
|
4102
|
+
* @description Express Vaulting element 事件类型
|
|
4103
|
+
*/
|
|
4104
|
+
export declare interface ExpressVaultingElementEvents extends AntomBridgeWithNativeEventMap<ExpressVaultingAppConfig> {
|
|
4105
|
+
ready: ExpressVaultingReadyEvent;
|
|
4106
|
+
click: ExpressVaultingClickEvent;
|
|
4107
|
+
confirm: ExpressVaultingConfirmEvent;
|
|
4108
|
+
cancel: ExpressVaultingCancelEvent;
|
|
4109
|
+
error: ExpressVaultingErrorEvent;
|
|
4110
|
+
'OPENSDK@CONFIRM_VAULTING': {
|
|
4111
|
+
requestId: string;
|
|
4112
|
+
redirect?: 'always' | 'if_required';
|
|
4113
|
+
};
|
|
4114
|
+
'OPENSDK@CONFIRM_VAULTING_RESULT': {
|
|
4115
|
+
requestId: string;
|
|
4116
|
+
result: ExpressVaultingResult;
|
|
4117
|
+
};
|
|
4118
|
+
}
|
|
4119
|
+
|
|
4120
|
+
/**
|
|
4121
|
+
* @public
|
|
4122
|
+
* @description error 事件负载
|
|
4123
|
+
*/
|
|
4124
|
+
export declare interface ExpressVaultingErrorEvent extends ErrorPayload<string> {
|
|
4125
|
+
paymentMethodType: ExpressVaultingMethod;
|
|
4126
|
+
}
|
|
4127
|
+
|
|
4128
|
+
/**
|
|
4129
|
+
* Supported express vaulting payment methods. All bridge event payloads carry
|
|
4130
|
+
* `paymentMethodType` — use this enum instead of硬编码 strings so adding a
|
|
4131
|
+
* new wallet only needs one entry here. Must match the iframe-side enum in
|
|
4132
|
+
* elements2/express_vaulting/interface.ts.
|
|
4133
|
+
*/
|
|
4134
|
+
declare enum ExpressVaultingMethod {
|
|
4135
|
+
PAYPAL_DIRECTDEBIT = "PAYPAL_DIRECTDEBIT"
|
|
4136
|
+
}
|
|
4137
|
+
|
|
4138
|
+
/**
|
|
4139
|
+
* @public
|
|
4140
|
+
* @description Braintree tokenizePayment 返回的 payer 信息,随 confirm 事件透传给商户
|
|
4141
|
+
*/
|
|
4142
|
+
export declare interface ExpressVaultingPayerInfo {
|
|
4143
|
+
payerId?: string;
|
|
4144
|
+
email?: string;
|
|
4145
|
+
firstName?: string;
|
|
4146
|
+
lastName?: string;
|
|
4147
|
+
countryCode?: string;
|
|
4148
|
+
phone?: string;
|
|
4149
|
+
}
|
|
4150
|
+
|
|
4151
|
+
/**
|
|
4152
|
+
* MERCHANT_CONFIRM_TIMEOUT is owned by the iframe side (mirrors express_element:
|
|
4153
|
+
* iframe starts a 20s timer on the `confirm` event and sends
|
|
4154
|
+
* `error(MERCHANT_CONFIRM_TIMEOUT)` if the merchant never calls confirmVaulting).
|
|
4155
|
+
* See elements2/express_vaulting/app.tsx + tools/error.ts.
|
|
4156
|
+
*/
|
|
4157
|
+
/**
|
|
4158
|
+
* @public
|
|
4159
|
+
* @description PayPal 按钮配置
|
|
4160
|
+
*/
|
|
4161
|
+
export declare interface ExpressVaultingPayPalConfig {
|
|
4162
|
+
/** 按钮形状 */
|
|
4163
|
+
buttonShape?: 'pill' | 'rect' | 'sharp';
|
|
4164
|
+
}
|
|
4165
|
+
|
|
4166
|
+
/**
|
|
4167
|
+
* @public
|
|
4168
|
+
* @description ready 事件负载
|
|
4169
|
+
*/
|
|
4170
|
+
export declare interface ExpressVaultingReadyEvent {
|
|
4171
|
+
availablePaymentMethods: Partial<Record<ExpressVaultingMethod, boolean>>;
|
|
4172
|
+
}
|
|
4173
|
+
|
|
4174
|
+
/**
|
|
4175
|
+
* @public
|
|
4176
|
+
* @description confirmVaulting 返回结果
|
|
4177
|
+
*/
|
|
4178
|
+
export declare interface ExpressVaultingResult {
|
|
4179
|
+
status: 'SUCCESS' | 'PROCESSING' | 'FAIL' | 'CANCELLED';
|
|
4180
|
+
paymentMethodId?: string;
|
|
4181
|
+
payerId?: string;
|
|
4182
|
+
error?: {
|
|
4183
|
+
code: string;
|
|
4184
|
+
message: string;
|
|
4185
|
+
};
|
|
4186
|
+
}
|
|
4187
|
+
|
|
3909
4188
|
declare interface ExpSupportBank {
|
|
3910
4189
|
/**
|
|
3911
4190
|
* @description 银行名称
|
|
@@ -3984,6 +4263,57 @@ declare interface FrontSupportIppBank {
|
|
|
3984
4263
|
logo?: Logo;
|
|
3985
4264
|
}
|
|
3986
4265
|
|
|
4266
|
+
/** host 回传 webapp 的 OPENSDK@GET_APPLE_PAY_TOKEN_REPLY 形态(result 对齐老链路 {token,billingContact,shippingContact})。 */
|
|
4267
|
+
declare interface GetApplePayTokenReply {
|
|
4268
|
+
success: boolean;
|
|
4269
|
+
result?: {
|
|
4270
|
+
token?: unknown;
|
|
4271
|
+
billingContact?: unknown;
|
|
4272
|
+
shippingContact?: unknown;
|
|
4273
|
+
} | {
|
|
4274
|
+
errorCode: string;
|
|
4275
|
+
};
|
|
4276
|
+
}
|
|
4277
|
+
|
|
4278
|
+
/** webapp 传来的 OPENSDK@GET_APPLE_PAY_TOKEN payload 形态。 */
|
|
4279
|
+
declare interface GetApplePayTokenRequest {
|
|
4280
|
+
paymentMethod?: {
|
|
4281
|
+
paymentMethodDetail?: {
|
|
4282
|
+
applePayProps?: {
|
|
4283
|
+
paymentRequest?: unknown;
|
|
4284
|
+
};
|
|
4285
|
+
};
|
|
4286
|
+
};
|
|
4287
|
+
shipping?: unknown;
|
|
4288
|
+
}
|
|
4289
|
+
|
|
4290
|
+
/** host 回传 webapp 的 OPENSDK@GET_GOOGLE_PAY_TOKEN_REPLY 形态。 */
|
|
4291
|
+
declare interface GetGooglePayTokenReply {
|
|
4292
|
+
success: boolean;
|
|
4293
|
+
result?: unknown;
|
|
4294
|
+
err?: {
|
|
4295
|
+
statusCode?: string;
|
|
4296
|
+
[key: string]: unknown;
|
|
4297
|
+
};
|
|
4298
|
+
}
|
|
4299
|
+
|
|
4300
|
+
/** webapp 传来的 OPENSDK@GET_GOOGLE_PAY_TOKEN payload 形态。 */
|
|
4301
|
+
declare interface GetGooglePayTokenRequest {
|
|
4302
|
+
actionName?: string;
|
|
4303
|
+
data?: {
|
|
4304
|
+
environment?: string;
|
|
4305
|
+
paymentRequest?: unknown;
|
|
4306
|
+
paymentMethod?: unknown;
|
|
4307
|
+
paymentMethodDetail?: {
|
|
4308
|
+
googlePayProps?: {
|
|
4309
|
+
environment?: string;
|
|
4310
|
+
paymentRequest?: unknown;
|
|
4311
|
+
};
|
|
4312
|
+
};
|
|
4313
|
+
[key: string]: unknown;
|
|
4314
|
+
};
|
|
4315
|
+
}
|
|
4316
|
+
|
|
3987
4317
|
declare type GetI18nQueryParam = string | {
|
|
3988
4318
|
/**
|
|
3989
4319
|
* 多语言文案的 key
|
|
@@ -7559,11 +7889,18 @@ export declare type PaymentAppearanceProps = {
|
|
|
7559
7889
|
export declare class PaymentElement extends BaseMainElement<PaymentElementConfig, PaymentElementEvents> {
|
|
7560
7890
|
static elementType: string;
|
|
7561
7891
|
private _paymentInProgress;
|
|
7892
|
+
private readonly paymentTracker;
|
|
7893
|
+
private _mountStartedAt;
|
|
7894
|
+
private _mountInProgress;
|
|
7895
|
+
private _mountPhase;
|
|
7896
|
+
private _destroyInProgress;
|
|
7897
|
+
private readonly walletLogger;
|
|
7562
7898
|
constructor(name: string, config: PaymentElementConfig);
|
|
7563
7899
|
/**
|
|
7564
7900
|
* @internal
|
|
7565
7901
|
*/
|
|
7566
7902
|
setup(): Promise<Partial<PaymentAppConfig> | undefined>;
|
|
7903
|
+
mount(container: HTMLElement): Promise<void>;
|
|
7567
7904
|
/**
|
|
7568
7905
|
* @description Update payment element configuration with amount validation and appearance Rules support
|
|
7569
7906
|
*/
|
|
@@ -7572,6 +7909,9 @@ export declare class PaymentElement extends BaseMainElement<PaymentElementConfig
|
|
|
7572
7909
|
* @internal
|
|
7573
7910
|
*/
|
|
7574
7911
|
submit(data?: PaymentSubmitParams): Promise<PaymentSubmitResult>;
|
|
7912
|
+
on<T extends keyof PaymentElementEvents>(event: T, handler: (payload: PaymentElementEvents[T]) => void): void;
|
|
7913
|
+
unmount(): void;
|
|
7914
|
+
destroy(): void;
|
|
7575
7915
|
protected focus(): void;
|
|
7576
7916
|
protected blur(): void;
|
|
7577
7917
|
protected clear(): void;
|
|
@@ -7587,6 +7927,25 @@ declare interface PaymentElementConfig extends BaseElementConfig<PaymentAppConfi
|
|
|
7587
7927
|
* @description Payment element events
|
|
7588
7928
|
*/
|
|
7589
7929
|
export declare interface PaymentElementEvents extends AntomBridgeWithNativeEventMap<PaymentAppConfig, PaymentSubmitParams, PaymentSubmitResult> {
|
|
7930
|
+
/**
|
|
7931
|
+
* webapp 委托 host(父 frame)拉起 Apple Pay 拿 token。
|
|
7932
|
+
* payload 结构对齐 ModernElementController.GetApplePayTokenRequest(放 paymentMethod/shipping)。
|
|
7933
|
+
*/
|
|
7934
|
+
'OPENSDK@GET_APPLE_PAY_TOKEN': GetApplePayTokenRequest;
|
|
7935
|
+
/** host 完成 Apple Pay token 获取后回包给 webapp */
|
|
7936
|
+
'OPENSDK@GET_APPLE_PAY_TOKEN_REPLY': GetApplePayTokenReply;
|
|
7937
|
+
/**
|
|
7938
|
+
* webapp 委托 host(父 frame)拉起 Google Pay 拿 token。
|
|
7939
|
+
* payload 结构对齐 ModernElementController.GetGooglePayTokenRequest(放 data.environment/paymentRequest)。
|
|
7940
|
+
*/
|
|
7941
|
+
'OPENSDK@GET_GOOGLE_PAY_TOKEN': GetGooglePayTokenRequest;
|
|
7942
|
+
/** host 完成 Google Pay token 获取后回包给 webapp */
|
|
7943
|
+
'OPENSDK@GET_GOOGLE_PAY_TOKEN_REPLY': GetGooglePayTokenReply;
|
|
7944
|
+
/** WebApp notifies the host when the selected payment method changes. */
|
|
7945
|
+
paymentMethodChanged: {
|
|
7946
|
+
type: string;
|
|
7947
|
+
name?: string;
|
|
7948
|
+
};
|
|
7590
7949
|
}
|
|
7591
7950
|
|
|
7592
7951
|
declare interface PaymentElementView {
|
|
@@ -25058,6 +25417,9 @@ export declare type VaultingAppearanceProps = {
|
|
|
25058
25417
|
*/
|
|
25059
25418
|
export declare class VaultingElement extends BaseMainElement<VaultingElementConfig, VaultingElementEvents> {
|
|
25060
25419
|
static elementType: string;
|
|
25420
|
+
private readonly elementTracker;
|
|
25421
|
+
private _mountInProgress;
|
|
25422
|
+
private _destroyInProgress;
|
|
25061
25423
|
constructor(name: string, config: VaultingElementConfig);
|
|
25062
25424
|
/**
|
|
25063
25425
|
* @internal
|
|
@@ -25073,6 +25435,10 @@ export declare class VaultingElement extends BaseMainElement<VaultingElementConf
|
|
|
25073
25435
|
* @internal
|
|
25074
25436
|
*/
|
|
25075
25437
|
submit(data?: VaultingSubmitParams): Promise<SubmitResult>;
|
|
25438
|
+
mount(container: HTMLElement): Promise<void>;
|
|
25439
|
+
on<T extends keyof VaultingElementEvents>(event: T, handler: (payload: VaultingElementEvents[T]) => void): void;
|
|
25440
|
+
unmount(): void;
|
|
25441
|
+
destroy(): void;
|
|
25076
25442
|
protected focus(): void;
|
|
25077
25443
|
protected blur(): void;
|
|
25078
25444
|
protected clear(): void;
|