微信审核报告

站点微信能力全面审计报告

1. 总览

模块类型主要文件/目录功能概述
基础配置与令牌管理Banyan/Lib/Model/WeixinModel.class.php<br>Banyan/Lib/Net/Jssdk.class.php负责 access_token、jsapi_ticket、二维码、菜单、订阅状态等核心能力
消息推送与模板Banyan/Lib/Model/WeixinmsgModel.class.php<br>Banyan/Lib/Service/PushService.class.php支持旧版模板消息(已标记废弃)与新版订阅消息、批量推送、统计
OAuth/绑定Banyan/Lib/Action/Wap/CommonAction.class.php<br>Banyan/Lib/Model/ConnectModel判断是否在微信内,获取授权信息、绑定 openid、登录态托管
微信支付Banyan/Lib/Payment/weixin/<br>Banyan/Lib/Payment/WxPayPubHelper/JSAPI/扫码支付接口封装、异常处理、回调通知
互动活动Banyan/Lib/Action/Weixin/ 目录下 CardActionShakeActionRelayAction对应公众号活动(刮刮卡、砸金蛋、助力等),多数仍依赖旧版分享接口
WAP 分享脚手架新: static/default/wap/js/wechat-share.js<br>themes/default/Wap/public/footer_share.html统一 JS-SDK 初始化、菜单配置、成功/失败回调,兼容过往页面
位置/环境探测Public/js/locationService.js<br>themes/default/Wap/public/city_display.html判断是否在微信内、调用 wx.getLocation 获取定位
第三方产物/样例微信sdkphp/ 目录官方示例与说明,未与主站耦合

2. 现有能力详解

2.1 后端能力

  • WeixinModel

- 统一封装 access_token / jsapi_ticket 缓存、公众号菜单、自定义二维码、素材上传。

- 保留了 tmplmesg() 旧模板消息调用;文件中已标记 @deprecated,但仍存在调用入口(例如部分模型的资金提醒方法)。

- getTmplId() 方法参数错误($shop_id 未定义),为潜在 bug。

  • WeixinmsgModel

- 新增的 sendSubscribeNotice()batchSendSubscribeNotice() 已对接 message/subscribe/send

- 旧版 weixin_tmpl_life_subscribe()weixin_shop_news_push() 等仍保留,标记废弃但未移除调用方。

- 多个模板生成方法直接包含视图逻辑(调用 Wxmesg::order_message 等),后续可考虑抽离。

  • PushService

- 整合文章(新闻)、分类信息等推送,并通过 WeixinmsgModel 下发订阅消息。

- 仍有电话/SMS/邮件耦合逻辑,说明站内推送矩阵未完全解耦。

  • 支付模块

- Banyan/Lib/Payment/weixin/WxPay.JsApiPay.php 使用官方 SDK,回调异常会重定向到 user/info/wxpayexception

- WxPayPubHelper 提供扫码模式一短链接、统一下单等能力。

  • OAuth 与会话

- CommonAction::_initialize() 会在微信内判断登录态、自动触发 OAuth,由 Weixinconn / Connect 模型保存 state、open_id。

- 风险: 若微信 APPID 未配置,仍然会走 OAuth 分支,需在配置时谨慎校验。

2.2 前端能力

  • JS-SDK 初始化(整改前)

- 多数页面重复引用 http://res.wx.qq.com/open/js/jweixin-1.0.0.js 与本地 jweixin-1.6.0.js,存在重复加载与版本混用。

- 分享逻辑散落在 footer_share.html、各业务页 <script> 中,既有弃用的 wx.onMenuShare*,也有新 wx.update*,维护成本高。

- 分享结果回调直接调用页面函数(getShareIntegral()packet() 等),缺少统一兜底。

  • 整改后的统一模块

- 新增 wechat-share.js,负责:

- 自动填充分享标题/描述/链接,保证绝对 URL。

- 缺省时自动扫描页面首张大图作为封面。

- 兼容 updateTimelineShareData / updateAppMessageShareData 与旧版 onMenuShare*

- 提供 onWechatShareSuccess / onWechatShareCancel / onWechatShareError / onWechatShareReady 钩子。

- 默认集成 layer.msg 作为提示。

- footer_share.html 只负责注入签名和序列化后的分享配置,完全去除了业务逻辑。

- 新增 WechatShareService 统一构建分享配置,在 CommonAction 默认注入,业务可通过 $this->setWechatShare() 覆盖。

- 对新闻、分类信息、商家会员、用户收款等核心页面完成切换,保留原有成功回调(积分、红包等)。

  • 其他前端能力

- locationService.js 对微信环境进行 UA 判断,并使用 wx.getLocation

- 多个微信活动页(卡券、助力、摇一摇)仍使用旧分享接口,后续视业务需求升级。

2.3 目录与资产情况

  • 微信sdkphp/:官方示例及说明文档,可作为参考,但与主站无直接引用。
  • themes/default/Wap/不用的/:大量历史模板,保留旧版 JS-SDK 用法。
  • static/default/wap/js/jweixin-1.6.0.js:本地备份版本,当前主流程改为使用官方 CDN,可保留作为 fallback 或后续删除。

3. 已发现的老旧/冗余项

类别具体位置说明
JS-SDK 旧接口大量模板中的 wx.onMenuShareTimeline微信官方自 6.7.2 起标记弃用,已在主流程中替换,剩余多位于 不用的/ 或活动页
模板消息 APIWeixinModel::tmplmesg()WeixinmsgModel 内旧方法官方已停止新增模板消息,建议逐步找出调用并迁移至订阅消息
多份 JSSDK 类Banyan/Lib/Net/Jssdk.class.phpBanyan/Lib/Net/Jssdk.class22.phpBanyan/Lib/Payment/wxdw/Jssdk.php功能重复,部分版本调用错误(如 getTmplId Bug),后续可统一
样例/调试文件调试/微信sdkphp/仅用于排查或文档,生产流程未引用
jsapi_ticket 缓存Jssdk.class.php 写入根目录 jsapi_ticket.json需确保运行用户有写权限,同时注意权限/安全风险

4. 本次整改要点

  1. 前端统一分享模块

- 新增 WechatShareService + wechat-share.js,自动注入签名与分享配置。

- 更新 footer_share.html / footeruserfei.html / 相关业务页,去除重复 wx.config

- 分类信息(列表、详情)、新闻、商家会员、用户收款等主要入口已迁移至最新 API。

  1. 后端扩展
  • CommonAction 新增 $this->setWechatShare(),默认注入站点级分享信息。

- 针对新闻、分类信息、会员模块,分别配置个性化分享标题、封面与链接。

- WAP 端覆盖模块(含主要模版/控制器)

- 首页与公共组件:themes/default/Wap/public/footer_share.htmlfooternews.htmlfooteruserfei.htmlfooterweixin.html

- 新闻资讯:Banyan/Lib/Action/Wap/NewsAction.class.phpthemes/default/Wap/News/

- 分类信息:Banyan/Lib/Action/Wap/LifeAction.class.phpthemes/default/Wap/life/

- 会员/收款:Banyan/Lib/Action/Wap/HuiyuanAction.class.phpthemes/default/Wap/huiyuan/themes/default/Wap/userfei/

- 其他可复用模块:商城、外卖、活动等页面在引入 footer_share 后可直接继承统一分享逻辑。

  1. 回调兼容

- 分享成功仍触发原有 getShareIntegral()packet() 等业务逻辑。

- 未定义专用回调时,自动使用 layer.msg 给出提示。

5. 风险与后续建议

  1. 活动页与后台模板

themes/default/Weixin/ 及部分 API 工具页仍保留旧版分享写法,若后续启用,建议同样引入统一模块。

  1. 模板消息彻底迁移

坚持在 WeixinmsgModel 中删除所有旧模板消息的调用入口,确保不会再触发失效 API。

  1. JSSDK 多版本清理

可统一保留一个 Jssdk 类,并修复 getTmplId() 参数错误,避免后续调用出错。

  1. 缓存与权限

jsapi_ticket.json 默认写在网站根目录,建议确认 Windows 环境具有写入权限,或改为使用缓存驱动(如 FileCache)。

  1. 文档与运维

- 若采用 CDN 版本 jweixin-1.6.0.js,请在运维文档中说明网络要求,必要时保留本地 fallback。

- 分享配置中若需要拼接请求参数(如 fuid),请统一在后端通过 setWechatShare 生成。

6. 附录:关键文件清单

  • 后端

- Banyan/Lib/Model/WeixinModel.class.php

- Banyan/Lib/Model/WeixinmsgModel.class.php

- Banyan/Lib/Service/WechatShareService.class.php(新)

- Banyan/Lib/Action/Wap/CommonAction.class.php

- Banyan/Lib/Action/Wap/NewsAction.class.php

- Banyan/Lib/Action/Wap/LifeAction.class.php

- Banyan/Lib/Action/Wap/HuiyuanAction.class.php

  • 前端

- themes/default/Wap/public/footer_share.html

- themes/default/Wap/public/footeruserfei.html

- themes/default/Wap/life/detail.html

- themes/default/Wap/life/index.html

- static/default/wap/js/wechat-share.js

  • 参考/遗留

- 微信sdkphp/(官方示例)

- themes/default/Wap/不用的/(旧版模板)

- static/default/wap/js/jweixin-1.6.0.js(本地备份)


本报告覆盖了站点当前涉及的主要微信能力、已整改内容以及后续注意事项,可作为后续开发与运维的统一基线。若需继续迁移活动页或后台模块,可按本次方案复用 WechatShareService + wechat-share.js 的组合。***

copyright 2013-2113 www.baoanfuwu.cn All Rights Reserved 保安服务网版权所有
皖ICP备2021016109号-1