DJStripe无法识别Stripe密钥及Webhook配置报错咨询
DJStripe 配置报错修复指南
触发的报错清单
项目启动时触发2项严重级别配置拦截:
djstripe.C001:未检索到可用Stripe API密钥,需补充STRIPE_TEST_SECRET_KEY和STRIPE_LIVE_SECRET_KEY配置djstripe.C006:DJSTRIPE_WEBHOOK_VALIDATION当前值为verify_signature,但未配置DJSTRIPE_WEBHOOK_SECRET,需补充对应webhook密钥或调整校验模式
原有配置的核心问题
现有Stripe相关配置代码如下:
STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY", "sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") STRIPE_PUBLIC_KEY = os.environ.get("STRIPE_PUBLIC_KEY", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") STRIPE_TEST_SECRET_KEY = "sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx STRIPE_TEST_PUBLIC_KEY = "pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
问题点拆解:
- 配置键名不匹配:DJStripe 2.0+版本不再检索通用
STRIPE_SECRET_KEY、STRIPE_PUBLIC_KEY键,强制按运行环境拆分识别STRIPE_LIVE_SECRET_KEY/STRIPE_TEST_SECRET_KEY两类独立密钥配置 - Python语法错误:
STRIPE_TEST_SECRET_KEY行末尾缺少闭合双引号,解析器会将后续多行代码识别为该字符串的一部分,导致配置无法正常加载 - 密钥模式错配:将
sk_live开头的生产密钥填入测试模式配置项,不符合DJStripe对测试密钥的格式校验规则
修复操作步骤
按要求修正settings.py中的配置项,参考正确写法:
import os # 生产模式密钥配置 STRIPE_LIVE_SECRET_KEY = os.environ.get("STRIPE_LIVE_SECRET_KEY", "sk_live_你的实际生产密钥值") STRIPE_LIVE_PUBLIC_KEY = os.environ.get("STRIPE_LIVE_PUBLIC_KEY", "你的实际生产公钥值") # 测试模式密钥配置(修正原有引号语法错误,填入正确格式的测试密钥) STRIPE_TEST_SECRET_KEY = os.environ.get("STRIPE_TEST_SECRET_KEY", "sk_test_你的实际测试密钥值") STRIPE_TEST_PUBLIC_KEY = os.environ.get("STRIPE_TEST_PUBLIC_KEY", "pk_test_你的实际测试公钥值") # Webhook校验报错二选一配置 # 选项1:开启签名校验模式时,补充对应webhook密钥 # DJSTRIPE_WEBHOOK_SECRET = os.environ.get("DJSTRIPE_WEBHOOK_SECRET", "whsec_你的webhook签名密钥值") # 选项2:开发阶段简化校验逻辑,不强制校验签名 # DJSTRIPE_WEBHOOK_VALIDATION = "retrieve_event"
验证注意事项
- 逐一检查所有配置项的字符串引号是否完全闭合,避免语法解析失效
- 严格按照密钥前缀匹配配置项:
sk_test_/pk_test_开头的密钥填入测试配置项,sk_live/pk_live开头的密钥填入生产配置项,禁止跨模式填值 - 如果使用环境变量注入配置,确保环境变量键名和DJStripe要求的配置键名完全一致,不要复用旧版本的
STRIPE_SECRET_KEY作为注入键
内容的提问来源于stack exchange,提问作者godtrianglefd
相关产品推荐
相关产品推荐

