收款播报收不到消息排查
现象
收款播报 APP 激活成功(或激活时报错),收款成功后手机不播报、不打印;或设备时而在线时而掉线、偶发漏播报。
原因
播报消息由平台经 MQTT over WebSocket(wss) 长连接推送到手机,链路是:
收款成功 → 平台 → 消息服务(Artemis 61614)→ wss 域名(外层网关/负载均衡)→ 手机 APP激活成功只说明手机与平台 API 之间畅通;上面这条消息管道任何一环不通,播报都不会到达,而 APP 侧往往只表现为"安静地收不到",没有明确报错。九成问题出在管道未打通或配置不一致。
排查顺序
从平台侧往手机侧逐环检查:
- 平台 MQTT 配置是否已填:管理端「系统管理 → 系统配置 → 平台配置 → MQTT 接入」三项(接入地址 / 接入账号 / 接入密码)是否都已填写保存。未填写时激活下发的接入地址为空,手机根本无处可连;
- 接入地址是否正确:地址须为
wss://开头的完整域名(如wss://mqtt.example.com),与面板「网关管理 → MQTT 接入」绑定的接入域名(或自建反代域名)一致;改过平台配置的,已激活设备要重新激活一次才用新地址; - 订阅主题形态是否正确:激活响应里下发的
topic必须是斜杠形式daxpay/device/audio/{设备号}。若仍是点号daxpay.device.audio.{设备号},说明设备未重新激活或后端仍是旧版本;点号订阅在 Artemis 2.33+ 会落到转义单段地址,不命中daxpay.device.#权限段,订阅会被拒(SUBACK 0x80)。不要用「放宽#段」绕过,应按手动部署的主题契约核对; - 消息服务是否就绪:面板用户看「Artemis MQTT 接入」状态卡是否全绿(含 61614 接入端口);自建用户对照手动部署片段逐项核对——尤其
security-setting权限是否列全、61616 是否已把 MQTT 摘除; - 证书是否有效:
wss://需要域名的 HTTPS 证书有效且与访问域名匹配,证书过期或域名不符会导致连接被手机系统拒绝; - 账号密码是否一致:平台配置的接入账号密码必须与 broker 侧
app-device账号一致;改过 broker 侧密码的,平台侧要同步修改并重新激活设备; - 是否套了 CDN:接入域名经多数 CDN 代理会因长连接超时被掐断,表现为频繁掉线、漏播报——接入域名应单独解析到源站,或经支持 WebSocket 长连接的外层网关终结 HTTPS;
- 应用开关与订单来源:设备归属应用的「语音播报」「小票打印」开关是否开启(两端应用管理中配置);线上 API / 易支付来源的订单默认不播不印,属设计行为;
- 设备状态:商户端「收款设备」页设备是否启用、是否显示在线(长期离线说明手机被系统清理或管道断开,先重新打开 APP)。
处置
- 面板用户:状态卡未全绿就点一次「一键应用配置」;域名 / 证书 / CDN 按网关管理 - MQTT 接入核对;
- 自建用户:按手动部署补齐配置并重启 Artemis;反代层确认 WebSocket 升级头与空闲超时(不小于心跳间隔的两倍);
- 配置改动后:在 APP 里重新激活设备,再验证。
自查
不发起真实收款也能验证整条管道:运营端或商户端设备行的「试播」入口会推送一条测试语音——能听到说明管道与开关全部正常,收款不播时再回到第 8 步查订单来源与开关;试播也收不到,则是第 1~7 步的管道问题。