STRIPE支付结账集成.NET Core 5 Razor项目后IIS部署支付页无法激活
Stripe Checkout IIS部署后无法激活问题排查方案
- 验证配置文件的密钥有效性:.NET Core 5 本地开发用的用户机密(
secrets.json)不会随发布包导出,部署到IIS后需要手动将Stripe公钥、私钥写入appsettings.Production.json,或者配置到IIS对应站点的环境变量中,密钥命名需和代码中读取的配置节点完全一致,例如Stripe:PublicKey、Stripe:SecretKey。 - 核对Stripe后台域名白名单:登录Stripe管理后台,在Checkout设置、Webhook设置中,必须将
https://MyWebSite.com添加到允许的域名列表,本地localhost的白名单规则仅测试模式生效,正式模式下未加入白名单的域名会被Stripe直接拦截请求。 - 检查IIS站点出站网络权限:Stripe API需要站点能发起HTTPS请求到Stripe官方接口,需确认服务器防火墙未拦截443端口的出站请求,同时IIS应用程序池的运行身份具备对外发起网络请求的权限,不要使用默认的受限系统身份运行应用池。
- 强制配置TLS版本:Stripe API要求请求必须使用TLS 1.2及以上版本,可在项目
Startup.cs的ConfigureServices方法最开头添加如下代码,避免系统默认TLS版本过低导致请求失败:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls13;
- 排查前端报错:部署后打开浏览器开发者工具的Console面板,若存在跨域错误,需在项目CORS配置中添加
https://js.stripe.com为允许源,同时确认前端加载Stripe.js的地址未被浏览器安全策略拦截。 - 核对Webhook配置:如果项目中使用了Stripe Webhook回调,需将Stripe后台的Webhook回调地址修改为正式域名对应的接口地址,同时将新的Webhook签名密钥更新到部署环境的配置中,签名密钥不匹配会直接中断支付流程。
内容的提问来源于stack exchange,提问作者Mark A
相关产品推荐
相关产品推荐

