网站通过Stripe集成Apple Pay遇错误,求解决方案
解决Stripe集成Apple Pay时的域名/卡检测错误
先确认ngrok域名在Stripe后台的注册与验证
- 登录Stripe后台,找到Apple Pay域名配置页,检查当前用的完整ngrok域名(比如
xxxxxx.ngrok.io,别加http/https前缀)有没有添加 - 加完域名后必须完成所有权验证:下载Stripe提供的
apple-developer-merchantid-domain-association文件,放到本地服务的/.well-known/目录下,确保通过https://xxxxxx.ngrok.io/.well-known/apple-developer-merchantid-domain-association能直接访问到该文件(返回200状态码,内容与下载文件一致) - 注意模式匹配:如果用的是测试密钥(publishable key以pk_test开头),要确保域名添加到测试环境的配置中,别误加到生产环境
检查测试卡的有效性
- 钱包里的测试卡必须用Stripe支持的Apple Pay测试卡,比如
4242 4242 4242 4242,有效期选未来任意日期,CVV随便填3位即可 - 确保MacBook已登录iCloud账户,且Safari隐私设置未阻止Apple Pay功能
修正代码里的变量错误
你的JS代码存在明显的变量名错误,会直接影响支付流程:
- 你把PaymentIntent的clientSecret存到了
paymentIntent变量里,但后续调用stripe.confirmCardPayment时用了未定义的clientSecret参数,这会导致流程中断。要么把变量名改成clientSecret,要么把调用时的参数替换为paymentIntent。
修正后的代码片段:
// 调整变量名更清晰 var clientSecret = document.getElementById('payment-form').getAttribute('data-stripe-paymentIntent'); // 后续调用使用正确的变量 let {error, paymentIntent} = await stripe.confirmCardPayment( clientSecret, { payment_method: e.paymentMethod.id, }, { handleActions: false, } );
确保用HTTPS访问
Apple Pay仅支持HTTPS协议,必须通过https://xxxxxx.ngrok.io访问网站,不能用HTTP地址——ngrok默认提供HTTPS地址,直接使用即可
最后清缓存重新测试
- 清除Safari的缓存和Cookie,重启浏览器
- 重新加载页面,检查控制台是否还存在错误
内容的提问来源于stack exchange,提问作者Shaho
相关产品推荐
相关产品推荐

