esign_config.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import os
  2. from pathlib import Path
  3. APP_ENV = os.getenv("APP_ENV", "dev")
  4. ROOT_DIR = Path(__file__).resolve().parents[3]
  5. ENV_FILE = ROOT_DIR / f".env.{APP_ENV}"
  6. def _load_env_file(path: Path) -> None:
  7. if not path.exists():
  8. return
  9. for raw_line in path.read_text(encoding="utf-8").splitlines():
  10. line = raw_line.strip()
  11. if not line or line.startswith("#") or "=" not in line:
  12. continue
  13. key, value = line.split("=", 1)
  14. key = key.strip()
  15. if not key or key in os.environ:
  16. continue
  17. os.environ[key] = value.strip().strip("\"'")
  18. _load_env_file(ENV_FILE)
  19. def _required_env(name: str) -> str:
  20. value = os.getenv(name)
  21. if not value:
  22. raise RuntimeError(f"缺少 e签宝环境变量: {name}")
  23. return value
  24. class Config:
  25. def __init__(self):
  26. self.appId = _required_env("ESIGN_APP_ID")
  27. self.scert = _required_env("ESIGN_APP_SECRET")
  28. self.host = _required_env("ESIGN_HOST").rstrip("/")
  29. self.ordid = _required_env("ESIGN_ORG_ID")
  30. self.templates_map = {
  31. "store_agreement": _required_env("ESIGN_TEMPLATE_STORE_AGREEMENT"),
  32. "lawyer_agreement": _required_env("ESIGN_TEMPLATE_LAWYER_AGREEMENT"),
  33. "alipay_auth": _required_env("ESIGN_TEMPLATE_ALIPAY_AUTH"),
  34. "wechat_pay_commitment": _required_env("ESIGN_TEMPLATE_WECHAT_PAY_COMMITMENT"),
  35. }
  36. self.templates_id = self.templates_map["store_agreement"]
  37. self.template_file_names = {
  38. "store_agreement": _required_env("ESIGN_TEMPLATE_FILE_STORE_AGREEMENT"),
  39. "lawyer_agreement": _required_env("ESIGN_TEMPLATE_FILE_LAWYER_AGREEMENT"),
  40. "alipay_auth": _required_env("ESIGN_TEMPLATE_FILE_ALIPAY_AUTH"),
  41. "wechat_pay_commitment": _required_env("ESIGN_TEMPLATE_FILE_WECHAT_PAY_COMMITMENT"),
  42. }
  43. self.callback_url = _required_env("ESIGN_CALLBACK_URL")
  44. self.developer_callback_url = os.getenv("ESIGN_DEVELOPER_CALLBACK_URL", self.callback_url)
  45. self.redirect_url = os.getenv("ESIGN_REDIRECT_URL", "https://www.esign.cn/")