Files
shaguabijia-app-server/docs/integrations
guke 7a2b7cb8ed 功能:阿里云号码认证短信 provider + sms.py 拆为可切换 provider 包
现有 sms.py(极光自管码)升级为 app/integrations/sms/ 包:
  - base   : SmsError + provider 无关的 mock_verify
  - jiguang: 原极光自管码逻辑逐字迁入,行为零改动(git 识别为 sms.py 的 rename)
  - aliyun : 新增阿里云 dypns 号码认证(Mode A:阿里云生成+下发+校验,核验免费)
  - __init__: 按 SMS_PROVIDER 每次调用路由的分派器(默认 jiguang,可秒切回退)

关键决策:
  - Mode A:发码 SendSmsVerifyCode(##code## 占位)、校验 CheckSmsVerifyCode(PASS/UNKNOWN);
    本服务不再存码 → 消除极光路径「内存存码、多 worker 不共享」技术债。
  - 防爆破与极光一致:aliyun 保留 per-phone 失败计数(SMS_MAX_VERIFY_ATTEMPTS),达上限本地作废,
    避免两 provider 行为不同致排查困惑(此为 aliyun 路径唯一本地态)。
  - 校验降级:阿里云接口异常 → verify_code 抛 SmsError(503),auth 两处 try/except 透出 503(非误报 400)。
  - 官方 SDK alibabacloud_dypnsapi20170525;SDK 交互隔离在 _call_send/_call_check(惰性 import + 惰性建
    client),单测 monkeypatch 不触真网络。

测试:test_sms_aliyun(17)+ test_sms_dispatch(3)全绿;test_auth 内部访问 retarget 到 jiguang.*。
配置:SMS_PROVIDER + ALIYUN_SMS_*(见 .env.example);文档 docs/integrations/sms.md + aliyun 接口参考。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-25 23:51:30 +08:00
..

集成层(integrations)文档 — 索引

本目录记录 app/integrations/ 下各第三方 SDK / 外部服务的集成内部实现:签名、加解密、协议细节、配置项、踩坑。 与 docs/api/ 的区别:docs/api/ 描述对外 HTTP 接口契约(入参/出参/错误码);本目录描述接口背后调外部服务的重逻辑

架构约定

  • app/api/v1/ 接口层只放很轻的东西:解析请求 → 调 repositories/integration → 组装响应 + HTTP 错误码映射。
  • 集成 SDK 的重逻辑(签名/验签/加解密/外部 HTTP 调用)一律放 app/integrations/。换签名方案、换供应商只动这一层,api 层不受影响。
  • 集成模块统一从 app.core.config.settings 读配置;密钥/证书懒加载(文件缺失不在 import 时炸进程,只在真正调用时抛各自的 XxxError)。

集成清单

模块 文件 用途 关联 API 文档
极光 jiguang app/integrations/jiguang.py 一键登录服务端核验 + RSA 解密手机号 auth-jverify-login
短信 sms app/integrations/sms.py 验证码发送 / 校验(当前 mock auth-sms-send · auth-sms-login
美团 meituan app/integrations/meituan.py CPS 券查询 / 换推广链 meituan-coupons · meituan-feed · meituan-referral-link
穿山甲 pangle app/integrations/pangle.py 激励视频发奖回调验签 ad-pangle-callback
微信支付 wxpay app/integrations/wxpay.py 商家转账到零钱(提现)+ code 换 openid(绑定) wallet-withdraw

详情