Files
AIclinicalresearch/backend/WECHAT_ENV_CONFIG.md
HaHafeng 36ce1bbcb2 feat(iit): Complete Day 3 - WeChat Work integration and URL verification
Summary:
- Implement WechatService (314 lines, push notifications)
- Implement WechatCallbackController (501 lines, async reply mode)
- Complete iit_quality_check Worker with WeChat notifications
- Configure WeChat routes (GET + POST /wechat/callback)
- Configure natapp tunnel for local development
- WeChat URL verification test passed

Technical Highlights:
- Async reply mode to avoid 5-second timeout
- Message encryption/decryption using @wecom/crypto
- Signature verification using getSignature
- natapp tunnel: https://iit.nat100.top
- Environment variables configuration completed

Technical Challenges Solved:
- Fix environment variable naming (WECHAT_CORP_SECRET)
- Fix @wecom/crypto import (createRequire for CommonJS)
- Fix decrypt function parameters (2 params, not 4)
- Fix Token character recognition (lowercase l vs digit 1)
- Regenerate EncodingAESKey (43 chars, correct format)
- Configure natapp for internal network penetration

Test Results:
- WeChat developer tool verification: PASSED
- Return status: request success
- HTTP 200, decrypted 23 characters correctly
- Backend logs: URL verification successful

Documentation:
- Add Day3 WeChat integration development record
- Update MVP development task list (Day 2-3 completed)
- Update module status guide (v1.2 -> v1.3)
- Overall completion: 35% -> 50%

Progress:
- Module completion: 35% -> 50%
- Day 3 development: COMPLETED
- Ready for end-to-end testing (REDCap -> WeChat)
2026-01-03 00:13:36 +08:00

4.8 KiB
Raw Blame History

企业微信环境变量配置说明

📋 必需的环境变量

backend/.env 文件中添加以下配置:

# ==========================================
# 企业微信配置
# ==========================================

# 企业微信基础配置(应用信息)
WECHAT_CORP_ID=ww6ab493470ab4f377
WECHAT_AGENT_ID=1000002
WECHAT_CORP_SECRET=AZIVxMtoLb0rEszXS81e4dBRl-I9kgTjygIS0cFfENU

# 企业微信回调配置(消息加解密)
WECHAT_TOKEN=oX1RBm1YnvMy2SbDLbvAdDd5Gq3oBGq
WECHAT_ENCODING_AES_KEY=zE4tcdBeekCHPUV015jCh9RVUydnCITINqSmCzg9xtO

📝 配置项说明

1. WECHAT_CORP_ID

  • 说明企业微信的企业ID
  • 获取方式:企业微信管理后台 → 我的企业 → 企业信息 → 企业ID
  • 当前值ww6ab493470ab4f377

2. WECHAT_AGENT_ID

  • 说明应用的AgentID
  • 获取方式:企业微信管理后台 → 应用管理 → IIT Manager Agent → AgentId
  • 当前值1000002
  • 应用名称IIT Manager Agent

3. WECHAT_CORP_SECRET

  • 说明应用的Secret用于获取access_token
  • 获取方式:企业微信管理后台 → 应用管理 → IIT Manager Agent → Secret
  • 当前值AZIVxMtoLb0rEszXS81e4dBRl-I9kgTjygIS0cFfENU
  • ⚠️ 安全提示Secret 非常重要,切勿泄露

4. WECHAT_TOKEN

  • 说明消息回调的Token用于验证签名
  • 获取方式:企业微信管理后台 → 应用管理 → IIT Manager Agent → 接收消息 → 点击"随机获取"
  • 当前值oXlRBm1YnvMy2SbDLbvAdDd5Gq3oBGq

5. WECHAT_ENCODING_AES_KEY

  • 说明消息加解密密钥43位字符
  • 获取方式:企业微信管理后台 → 应用管理 → IIT Manager Agent → 接收消息 → 点击"随机获取"
  • 当前值zE4tcdBeekCHPUV015jCh9RVUydnCITINqSmCzg9xtO

🔧 企业微信回调URL配置

本地开发natapp

回调URL: https://iit.nat100.top/api/v1/iit/wechat/callback
Token: oXlRBm1YnvMy2SbDLbvAdDd5Gq3oBGq
EncodingAESKey: zE4tcdBeekCHPUV015jCh9RVUydnCITINqSmCzg9xtO

生产环境SAE

回调URL: https://iit.xunzhengyixue.com/api/v1/iit/wechat/callback
Token: oXlRBm1YnvMy2SbDLbvAdDd5Gq3oBGq
EncodingAESKey: zE4tcdBeekCHPUV015jCh9RVUydnCITINqSmCzg9xtO

⚠️ 重要提示

  1. IP白名单(生产环境必需)

    • SAE NAT网关EIP182.92.176.14
    • 需要在企业微信后台配置为"企业可信IP"
    • 位置:企业微信管理后台 → 应用管理 → IIT Manager Agent → 企业可信IP
  2. natapp隧道(本地开发)

    • 确保natapp隧道正常运行http://iit.nat100.top
    • 后端服务监听:http://localhost:3001
  3. 环境变量加载

    • 修改 .env 文件后,需要重启后端服务
    • 验证方法:查看后端启动日志是否显示" 企业微信服务初始化成功"

🚀 验证配置

步骤1检查后端日志

启动后端服务后,应该看到:

✅ 企业微信服务初始化成功
✅ 企业微信回调控制器初始化成功
Registered route: GET /api/v1/iit/wechat/callback
Registered route: POST /api/v1/iit/wechat/callback

步骤2访问健康检查

curl https://iit.nat100.top/api/v1/iit/health

预期返回:

{
  "status": "ok",
  "module": "iit-manager",
  "version": "1.1.0",
  "timestamp": "2026-01-02T14:30:00.000Z"
}

步骤3保存企业微信回调配置

在企业微信后台点击"保存",如果配置正确:

  • 企业微信会发送GET请求验证URL
  • 后端会解密echostr并返回
  • 显示"保存成功"

📞 常见问题

Q1: 保存回调URL时提示"URL验证失败"

可能原因

  1. 后端服务未启动或无法访问
  2. natapp隧道未运行
  3. 环境变量配置错误Token或EncodingAESKey不匹配

解决方法

  1. 检查后端日志是否有错误
  2. 确认natapp状态http://iit.nat100.top/api/v1/iit/health
  3. 检查 .env 文件中的Token和EncodingAESKey

Q2: 收不到企业微信消息

可能原因

  1. 回调URL未保存成功
  2. 消息类型未勾选(文本消息、支付且退款通知等)
  3. 用户未关注应用

解决方法

  1. 确认回调URL已保存成功
  2. 检查"选择需要接收的消息事件类型"是否勾选了对应类型
  3. 用户在企业微信中打开应用

Q3: 发送消息提示"invalid user"

可能原因

  1. 用户UserID不存在
  2. 用户未在应用的可见范围内

解决方法

  1. 确认UserID正确企业微信后台查看
  2. 检查应用的可见范围设置

📚 相关文档