You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apple Pay支付成功但兼容检查报undefined类型错误,求排查方案

Apple Pay支付成功但兼容性检查触发applePaySession.completeMerchantValidation undefined错误

已完成Apple Pay支付,但执行兼容性检查逻辑时抛出未捕获类型错误:undefined不是对象(计算'applePaySession.completeMerchantValidation'时)。支付流程正常,但兼容性校验环节出现异常,相关触发代码如下:

setCanDisplayApplePay() {
    var client = new window.usaepay.Client(this.publicKey);
    var applePayConfig = {
        targetDiv: 'apple-pay-compat-test',
        displayName: 'ApplePay',
        paymentRequest: {
            total: {
                label: this.name,
                amount: 0.01,
                type: 'final'
            },
            requiredBillingContactFields: [
                'postalAddress'
            ],
            requiredShippingContactFields: [
                'name',
                'phone',
                'email'
            ],
            countryCode: 'US',
            currencyCode: 'USD'
        }
    };
    var applePay = client.createApplePayEntry(applePayConfig);
    applePay.checkCompatibility().then((res) => {
        this.canDisplayApplePay = true;
    }).catch((err) => {
        this.canDisplayApplePay = false;
    });
},

可能的原因

  • usaepay SDK内部在兼容性检查流程中,尝试调用ApplePaySession实例的completeMerchantValidation方法,但此时会话实例未正确初始化或已被销毁
  • 测试环境下Apple Pay商户验证配置缺失,导致SDK无法创建有效会话对象
  • 页面中apple-pay-compat-test容器状态异常(如不存在、被隐藏),干扰SDK的环境检测逻辑

解决方案

  • 升级usaepay SDK至最新稳定版本,排查是否存在已知的兼容性检测bug
  • 在调用兼容性检查前,先手动校验Apple Pay环境,避免无效执行:
    setCanDisplayApplePay() {
        // 先确认浏览器支持Apple Pay
        if (!window.ApplePaySession || !window.ApplePaySession.canMakePayments()) {
            this.canDisplayApplePay = false;
            return;
        }
        
        var client = new window.usaepay.Client(this.publicKey);
        var applePayConfig = {
            targetDiv: 'apple-pay-compat-test',
            displayName: 'ApplePay',
            paymentRequest: {
                total: {
                    label: this.name,
                    amount: 0.01,
                    type: 'final'
                },
                requiredBillingContactFields: [
                    'postalAddress'
                ],
                requiredShippingContactFields: [
                    'name',
                    'phone',
                    'email'
                ],
                countryCode: 'US',
                currencyCode: 'USD'
            }
        };
        var applePay = client.createApplePayEntry(applePayConfig);
        applePay.checkCompatibility().then((res) => {
            this.canDisplayApplePay = true;
        }).catch((err) => {
            this.canDisplayApplePay = false;
        });
    },
    
  • 核对applePayConfig配置:确保displayName与Apple开发者后台配置的商户名称一致,paymentRequest内的countryCode、currencyCode符合业务区域要求
  • 确认页面中apple-pay-compat-test元素存在且未被CSS隐藏,SDK可能依赖该容器完成环境检测

内容的提问来源于stack exchange,提问作者Sarah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:33:40