Apple Pay 在 Safari 上点击没反应是怎么回事?

诸葛庆玲 阅读 3

我在网页里集成了 Apple Pay,用的是官方的 ApplePaySession API,在 iOS 模拟器和真机上测试时,点击支付按钮完全没反应,控制台也没报错。是不是我漏了什么配置?

我已经在 Apple Developer 后台启用了 Apple Pay,并且域名也通过了验证,前端代码大致是这样:

if (window.ApplePaySession && ApplePaySession.canMakePayments()) {
  const session = new ApplePaySession(3, {
    countryCode: 'US',
    currencyCode: 'USD',
    total: { label: 'My Store', amount: '10.00' },
    supportedNetworks: ['visa', 'masterCard', 'amex'],
    merchantCapabilities: ['supports3DS']
  });
  session.begin();
}

但点击后既不弹出支付界面,也没有任何错误提示,感觉像是被静默拦截了,这到底啥原因啊?

我来解答 赞 6 收藏
二维码
手机扫码查看
1 条解答
林莹🍀
你这问题八成是域名配置没到位。虽然你说在 Apple Developer 后台启用了 Apple Pay,但有个细节容易被忽略:除了域名验证,还得确保 apple-developer-merchantid-domain-association 文件正确放置在网站根目录。

另外检查下 merchant ID 配置,有时候后台设置好了,代码里用的 merchant ID 不对也会导致这种情况。记得在创建 ApplePaySession 时传入正确的 merchantIdentifier 参数。

const session = new ApplePaySession(3, {
countryCode: 'US',
currencyCode: 'USD',
total: { label: 'My Store', amount: '10.00' },
supportedNetworks: ['visa', 'masterCard', 'amex'],
merchantCapabilities: ['supports3DS'],
merchantIdentifier: 'merchant.com.yourdomain' // 确认这个ID正确
});
session.begin();


还有个常见问题是 HTTPS 配置不完整,确保整个支付流程都在安全连接下运行,连静态资源都要走 HTTPS,不然有些浏览器会直接静默失败。改一下这些配置应该就差不多了。
点赞
2026-03-31 12:04