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

Ubuntu环境下Stripe支付功能故障排查与修复请求

解决Stripe POS系统Ubuntu部署后的HTTPS相关问题

核心问题

你遇到的两个报错本质是同一个原因:Stripe要求所有集成Stripe.js的页面必须通过HTTPS访问。Windows开发环境可能因为Stripe对本地HTTP的豁免规则(比如localhost)或者你用了开发工具的特殊配置,所以功能正常;但Ubuntu测试环境是正式服务器部署,HTTP环境下Stripe会直接阻断功能,同时触发跨域头的错误。

具体修改步骤

1. 给Ubuntu服务器配置HTTPS证书

最便捷的方式用Let's Encrypt的免费证书:

  • 安装Certbot(以Nginx为例,Apache换对应插件):
    sudo apt update && sudo apt install certbot python3-certbot-nginx
    
  • 生成并配置证书,替换成你的域名:
    sudo certbot --nginx -d your-pos-domain.com
    
    Certbot会自动修改Nginx配置,把所有HTTP请求重定向到HTTPS。

2. 修正前端Stripe脚本加载

确保HTML里加载Stripe.js的地址是HTTPS的,别用HTTP:

<!-- 替换原来的HTTP脚本地址 -->
<script src="https://js.stripe.com/v3/"></script>

同时检查后端Checkout View里返回的Stripe公钥是否对应环境(测试用测试公钥,生产用生产公钥),别硬编码HTTP相关的配置。

3. 修复跨域头配置

启用HTTPS后,给服务器加上正确的跨域头,避免浏览器忽略COOP规则:
在Nginx的server配置块里添加:

add_header Cross-Origin-Opener-Policy "same-origin";
add_header Cross-Origin-Embedder-Policy "require-corp";

然后重启Nginx生效:

sudo systemctl restart nginx

4. 本地Ubuntu测试的临时方案(无公网域名)

如果只是本地测试,没有正式域名,可以生成自签名证书:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

然后在Web服务器里配置使用这个证书,访问时在浏览器里手动信任该证书的安全例外,就能让Stripe正常工作。

验证效果

改完后用HTTPS地址访问你的POS系统:

  • 测试现金支付,确认找零金额正常显示;
  • 测试信用卡支付,确认卡号、有效期等输入框正常加载;
  • 打开浏览器控制台,确认不再出现HTTPS相关的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:15:54