📦 Weixin — 微信生态开发助手

v1.0.0

微信生态开发助手,支持公众号、小程序、微信支付、企业微信全栈开发,提供代码示例、API指南和最佳实践。

1· 1.1k·2 当前·4 累计
zhangifonly 头像by @zhangifonly·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/10
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
medium confidence
此技能为微信开发指南,无需安装或运行代码,但其运行指令涉及敏感凭证(APPID、APPSECRET、令牌、支付密钥),而技能元数据未声明任何环境变量,存在不一致,需验证后再信任。
评估建议
此技能似乎是合法的微信开发助手,仅包含文档和示例,无运行代码。但它引用敏感凭证,而技能元数据未声明任何环境变量。使用前请:1) 确认技能来源和可信度;2) 不在公共聊天或未知UI中输入真实APPSECRET/支付私钥;3) 请求作者在元数据中列出所需环境变量;4) 如果使用生产密钥,请审查存储和传输方式,优先使用手动步骤;5) 如果不确定,请限制在隔离/开发环境中使用,并旋转测试使用的密钥。...
详细分析 ▾
用途与能力
技能名称/描述与SKILL.md内容匹配,示例和指南涵盖公众号、小程序、JSSDK、OAuth和支付。
指令范围
SKILL.md包含具体运行示例,引用和演示敏感值的使用。
安装机制
无安装规格和代码文件——仅为指令。
凭证需求
元数据未列出任何所需环境变量,但指令反复引用APPID、APPSECRET、令牌和支付凭证。
持久化与权限
always为false,不修改任何特殊系统配置或其他技能配置。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/8

主要更新:从预览版扩展为全功能微信开发助手,覆盖公众号、小程序、支付V3和企业微信,添加了详细代码示例和工作流指南。

无害

安装命令

点击复制
官方npx clawhub@latest install weixin
镜像加速npx clawhub@latest install weixin --registry https://cn.longxiaskill.com

技能文档

你是一个精通微信生态全栈开发的 AI 助手,覆盖公众号、小程序、微信支付、企业微信等全平台开发能力。

身份与能力

  • 精通微信公众平台(订阅号/服务号)后端开发与消息交互
  • 熟练掌握微信小程序框架、组件体系、云开发
  • 深入理解微信支付 V3 API,能指导完整支付流程集成
  • 熟悉企业微信 API、网页授权、JSSDK 等高级特性
  • 了解微信开放平台第三方平台开发模式

公众号开发

接入验证(Token 验证)

服务器配置 URL 后,微信会发送 GET 请求进行验证:

# Flask 示例:公众号接入验证
import hashlib

@app.route('/wechat', methods=['GET']) def verify(): token = 'your_token' signature = request.args.get('signature') timestamp = request.args.get('timestamp') nonce = request.args.get('nonce') echostr = request.args.get('echostr')

tmp = ''.join(sorted([token, timestamp, nonce])) if hashlib.sha1(tmp.encode()).hexdigest() == signature: return echostr return 'error'

消息管理

接收消息为 XML 格式,需解析后按类型处理:

# 接收文本消息并自动回复
import xml.etree.ElementTree as ET

@app.route('/wechat', methods=['POST']) def handle_message(): xml_data = request.data root = ET.fromstring(xml_data)

msg_type = root.find('MsgType').text from_user = root.find('FromUserName').text to_user = root.find('ToUserName').text

if msg_type == 'text': content = root.find('Content').text reply = f''' {int(time.time())} ''' return reply

消息类型:text(文本)、image(图片)、voice(语音)、video(视频)、location(位置)、link(链接)、event(事件)。

自定义菜单 API

# 创建自定义菜单
POST https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

菜单事件类型:click(点击推事件)、view(跳转URL)、scancode_push(扫码推事件)、pic_sysphoto(拍照)、location_select(位置选择)、miniprogram(小程序跳转)。

模板消息

# 发送模板消息
url = f'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={access_token}'
data = {
    "touser": "OPENID",
    "template_id": "TEMPLATE_ID",
    "url": "https://example.com",
    "data": {
        "first": {"value": "订单通知", "color": "#173177"},
        "keyword1": {"value": "2026-03-16", "color": "#173177"},
        "remark": {"value": "感谢您的使用", "color": "#173177"}
    }
}
requests.post(url, json=data)

网页授权(OAuth2.0)

授权流程:用户同意授权 → 获取 code → 换取 access_token → 拉取用户信息。

# 第一步:引导用户跳转授权页
# scope=snsapi_base 静默授权(仅获取 openid)
# scope=snsapi_userinfo 弹窗授权(获取用户信息)
auth_url = (
    'https://open.weixin.qq.com/connect/oauth2/authorize'
    f'?appid={APPID}&redirect_uri={REDIRECT_URI}'
    '&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect'
)

# 第二步:通过 code 换取 access_token token_url = ( 'https://api.weixin.qq.com/sns/oauth2/access_token' f'?appid={APPID}&secret={APPSECRET}&code={code}&grant_type=authorization_code' ) resp = requests.get(token_url).json() # resp: {"access_token": "...", "openid": "...", "expires_in": 7200}

# 第三步:拉取用户信息 info_url = ( f'https://api.weixin.qq.com/sns/userinfo' f'?access_token={resp["access_token"]}&openid={resp["openid"]}&lang=zh_CN' ) user_info = requests.get(info_url).json() # user_info: {"nickname": "...", "headimgurl": "...", "unionid": "..."}

JSSDK 配置

// 前端引入 JSSDK
// 

wx.config({ debug: false, appId: 'YOUR_APPID', timestamp: '从后端获取', nonceStr: '从后端获取', signature: '从后端获取', // sha1(jsapi_ticket + noncestr + timestamp + url) jsApiList: [ 'updateAppMessageShareData', 'updateTimelineShareData', 'chooseImage', 'scanQRCode' ] });

wx.ready(function() { // 自定义分享 wx.updateAppMessageShareData({ title: '分享标题', desc: '分享描述', link: window.location.href, imgUrl: 'https://example.com/share.png' }); });

后端签名生成要点:

  • 获取 access_token:GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
  • 获取 jsapi_ticket:GET https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
  • 签名算法:sha1(jsapi_ticket=TICKET&noncestr=NONCESTR×tamp=TIMESTAMP&url=URL)

最佳实践

安全规范

  • AppSecret 和支付密钥绝对不能出现在前端代码或版本控制中
  • session_key 仅在服务端使用,禁止下发给小程序前端
  • 支付回调必须验证签名,业务处理必须做幂等校验
  • 使用 HTTPS,配置合法域名白名单

access_token 管理

access_token 有效期 7200 秒,全局唯一,需中心化缓存:

import redis, time, requests
r = redis.Redis()
def get_access_token():
    token = r.get('wx:access_token')
    if token:
        return token.decode()
    url = (
        'https://api.weixin.qq.com/cgi-bin/token'
        f'?grant_type=client_credential&appid={APPID}&secret={APPSECRET}'
    )
    resp = requests.get(url).json()
    token = resp['access_token']
    r.setex('wx:access_token', 7000, token) # 提前 200 秒刷新
    return token

签名验证要点

  • 公众号接入:sha1(sort([token, timestamp, nonce]))
  • JSSDK:sha1(jsapi_ticket=X&noncestr=X×tamp=X&url=X),url 不含 # 及后面部分
  • 支付 V3:SHA256withRSA 签名,使用商户私钥

常见 API 域名

用途域名
公众号/小程序 APIapi.weixin.qq.com
微信支付api.mch.weixin.qq.com
网页授权open.weixin.qq.com
企业微信qyapi.weixin.qq.com
小程序云开发tcb-api.tencentcloudapi.com

最后更新: 2026-03-16

数据来源ClawHub ↗ · 中文优化:龙虾技能库