f0bfd9dbbe
- TTS从小爱音箱云API改为本地IndexTTS2模型 - 新增飞书群Webhook推送 - 新增notify_all统一通知(企业微信+飞书) - 新增local_tts.py本地TTS封装模块 - 新增run.bat一键启动脚本 - 新增README.md项目说明 - 新增.gitignore排除敏感文件 - 更新CLAUDE.md文档
3.4 KiB
3.4 KiB
丰享订单监控项目
项目概述
自动监控丰享商家端(fs.szfx.com)的新订单,同时推送到企业微信、飞书群和本地TTS语音播报**。
文件说明
| 文件 | 用途 |
|---|---|
order_monitor.py |
主程序:监控订单 + 企业微信 + 飞书 + 本地TTS播报 |
push_latest_order.py |
单次获取最新订单并推送企业微信 |
fetch_orders.py |
复用 Cookie 获取订单数据(命令行) |
fengxiang_scraper.py |
首次登录获取 Cookie(Playwright 半自动) |
setup_xiaomi.py |
小米账号登录获取 serviceToken(Playwright) |
cookies.json |
丰享平台的登录 Cookie |
xiaomi_config.json |
小米账号和音箱配置 |
order_data.json |
订单数据样例 |
已逆向的 API
丰享平台
-
登录:
POST https://fspass.szfx.com/api/login- 参数:
uname(手机号),upass(密码Base64反转),ticket,randstr(腾讯验证码) - 登录后通过
https://fs.szfx.com/saasmerchant/setstoken设置 Cookie - Cookie 保存在浏览器中,主要:
USS,PTOKEN,CPTOKEN,STOKEN
- 参数:
-
订单列表:
POST https://fs.szfx.com/saasmerchant/pcweb/order/quickpayorder/list- Content-Type: application/json
- Body:
{"shopId": "20434543575189", "page": 1, "pageSize": 20} - 需要登录 Cookie,未登录返回
errno: 110003 - 返回:
{errno: 0, data: {total, list: [...], count}}
-
关键字段:
shopId:20434543575189(益选便利店)orderId: 订单号amountPayable: 实付金额(单位:分)allPrice: 订单金额(单位:分)shopName,city,companyName,workplaceName: 业务信息createTime,payTime,finishTime: 时间戳(秒)
本地 TTS(IndexTTS2)
- 使用本地部署的 IndexTTS2 模型,无需联网
- 模型路径:
E:\2025Code\python\IndexTT\index-tts\ - 语音样本:
examples/voice_01.wav - 封装模块:
local_tts.py - 调用方式:
_local_speak(text)→ 合成 WAV → 本地播放
企业微信 Webhook
- URL:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=644ab6d9-3b66-4166-88e9-5a8a89e3731d - 只能发消息,不能收消息
order_monitor.py 核心逻辑
- Playwright 打开浏览器,用户手动登录丰享平台
- 登录成功后,通过浏览器页面的
fetch()调用订单 API(复用浏览器会话,最自然) - 每次拉取最近 N 条订单,和上次最新订单号对比,找出所有新订单
- 新订单同时推送企业微信 + 飞书 + 本地TTS播报
- 高峰期(11-13点、17-19点)10-20秒轮询,闲时 30-60 秒
- 每 5 分钟刷新页面防 Session 过期
- Session 过期自动检测 → 通知企业微信 → 等待用户重新登录
消息格式
- 企业微信:
【丰享丰食】订单收款成功,收款24.00元 - 小爱音箱:
收到新订单,收款24元(口语化,整数不带小数点)
已安装的依赖
pip install playwright requests
playwright install chromium
注意事项
- 丰享登录有腾讯验证码 TCaptcha,无法纯接口绕过,必须用 Playwright 浏览器登录
- 小米 passToken 会过期,过期后需重新运行
setup_xiaomi.py登录 - Windows 终端输出中文会乱码,但实际发送的内容是正确的 UTF-8
- MiService 的
miaccount.py第 68 行已修改:self.password.encode()加了 None 检查(passToken 登录时 password 为 None)