{"id":17093753,"url":"https://github.com/leeqvip/wechat-api","last_synced_at":"2025-04-12T22:44:46.770Z","repository":{"id":57066122,"uuid":"126315827","full_name":"leeqvip/wechat-api","owner":"leeqvip","description":"微信公众平台接口","archived":false,"fork":false,"pushed_at":"2018-05-08T03:12:38.000Z","size":26,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-12T22:44:40.843Z","etag":null,"topics":["wechat","wechat-api","wechat-official-account","wechat-sdk"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leeqvip.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-22T10:05:32.000Z","updated_at":"2025-02-18T08:32:01.000Z","dependencies_parsed_at":"2022-08-24T07:50:41.713Z","dependency_job_id":null,"html_url":"https://github.com/leeqvip/wechat-api","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeqvip%2Fwechat-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeqvip%2Fwechat-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeqvip%2Fwechat-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leeqvip%2Fwechat-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leeqvip","download_url":"https://codeload.github.com/leeqvip/wechat-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248643048,"owners_count":21138353,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["wechat","wechat-api","wechat-official-account","wechat-sdk"],"created_at":"2024-10-14T14:08:14.137Z","updated_at":"2025-04-12T22:44:46.749Z","avatar_url":"https://github.com/leeqvip.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wechat-api 微信公众平台接口\n\n\n[微信公众平台技术文档](https://mp.weixin.qq.com/wiki)\n\n### 安装\n\n```\ncomposer require techleeone/wechat-api\n```\n\n### 使用\n\n```php\n// 如果是使用支持composer自动加载的框架（比如thinkphp，laravel），则无需require。\nrequire_once dirname(__FILE__) . '/vendor/autoload.php';\n\n// 配置\n$config = [\n    'app_id' =\u003e 'wxef3bbdf4ed9439c5', // 开发者ID(AppID)\n    'secret' =\u003e '7294422104de6147d818a09f5b4587fa', // 开发者密码(AppSecret)\n    'token' =\u003e '598T8YDF1N1AS5FF45H4F', // 令牌(Token)\n    'debug' =\u003e true, // 是否为调试模式，调试模式会记录日志\n];\n\n// 获取示例\n$wechat = \\TechOne\\WechatApi\\Wechat::init($config);\n\n```\n\n### 响应微信发送的Token验证\n\n此处根据来自微信的请求类型，如为GET请求，会自动验证签名\n\n若确认此次GET请求来自微信服务器，原样返回echostr参数内容，则接入生效，否则接入失败。\n\n```php\n$wechat-\u003eaccess();\n```\n\n### 接收普通消息\u0026接收事件推送\n\n此处根据来自微信的请求类型，如为POST请求，则自动接收来自微信的普通消息或事件推送\n\n返回类型为：\n\nTechOne\\WechatApi\\Messages\\EventMessage\n\nTechOne\\WechatApi\\Messages\\ImageMessage\n\nTechOne\\WechatApi\\Messages\\LinkMessage\n\nTechOne\\WechatApi\\Messages\\LocationMessage\n\nTechOne\\WechatApi\\Messages\\ShortVideoMessage\n\nTechOne\\WechatApi\\Messages\\TextMessage\n\nTechOne\\WechatApi\\Messages\\VideoMessage\n\nTechOne\\WechatApi\\Messages\\VoiceMessage\n\n\n```php\n$message = $wechat-\u003eaccess();\n```\n\n### 被动回复用户消息\n\n#### 回复文本消息\n\n如果是收到的文本消息，且回复文本消息，则可在收到的消息上直接回复\n\n回复其他类型的消息，同理。\n\n```php\n$message = $wechat-\u003eaccess();   \n$message-\u003econtent = '我收到你发的文本消息啦';\n$message-\u003eresponse();\n```\n\n如果回复的消息类型和收到的消息类型不同，则需要初始化新的消息实例\n\n```php\n$message = $wechat-\u003eaccess();  \n$data = [\n    'ToUserName' =\u003e $message-\u003etoUserName,\n    'FromUserName' =\u003e $message-\u003efromUserName,\n    'MsgType' =\u003e 'text',\n    'Content' =\u003e '这是回复的内容',\n];\n$messageResponse = \\TechOne\\WechatApi\\Message::load($data);\n$messageResponse-\u003eresponse();\n```\n\n#### 回复图文消息\n#### 回复图片消息\n#### 回复语音消息\n#### 回复视频消息\n#### 回复图文消息\n\n```php\n$message = $wechat-\u003eaccess();  \n$data = [\n    'ToUserName' =\u003e $message-\u003etoUserName,\n    'FromUserName' =\u003e $message-\u003efromUserName,\n    'MsgType' =\u003e 'news',\n    'Articles' =\u003e [\n        [\n            'title' =\u003e '快速上手——我用scrapy写爬虫（一）',\n            'description' =\u003e 'python的爬虫框架也很多，诸如pyspider 和 scrapy',\n            'pic_url' =\u003e 'http://www.tech1024.cn/uploads/images/scrapy354.png',\n            'url' =\u003e 'http://www.tech1024.cn/original/2951.html',\n        ],\n        [\n            'title' =\u003e '保存数据到MySql数据库——我用scrapy写爬虫（二）',\n            'description' =\u003e '说了如何创建项目，并爬去网站内容，下面我们说一下如何保存爬去到的数据',\n            'pic_url' =\u003e 'http://www.tech1024.cn/uploads/images/scrapy354.png',\n            'url' =\u003e 'http://www.tech1024.cn/original/2959.html',\n        ],\n        [\n            'title' =\u003e 'scrapy爬取慕课网全部免费课程——我用scrapy写爬虫（三）',\n            'description' =\u003e '简单用scrapy写了一个小demo，本篇文章主要目标是完整用scrapy爬取，慕课网所有免费的课程、标题、图片、地址、学习人数、难度、方向、分类、时长、评分、评论数等。',\n            'pic_url' =\u003e 'http://www.tech1024.cn/uploads/images/scrapy354.png',\n            'url' =\u003e 'http://www.tech1024.cn/original/2965.html',\n        ],\n        [\n            'title' =\u003e '利用Flask和ECharts进行数据可视化——我用scrapy写爬虫（四）',\n            'description' =\u003e '我们对慕课网的课程进行了爬取，本文就对数据进行统计和可视化，让这些数据更直观的展现出来。',\n            'pic_url' =\u003e 'http://www.tech1024.cn/uploads/images/scrapy354.png',\n            'url' =\u003e 'http://www.tech1024.cn/original/2978.html',\n        ],\n    ],\n];\n$messageResponse = \\TechOne\\WechatApi\\Message::load($data);\n$messageResponse-\u003eresponse();\n```\n\n### 微信网页授权\n\n如果用户在微信客户端中访问第三方网页，公众号可以通过微信网页授权机制，来获取用户基本信息，进而实现业务逻辑。\n\n#### 微信网页授权\n\n```php\n// 该接口已经实现：\n// 第一步：用户同意授权，获取code\n// 第二步：通过code换取网页授权access_token\n// 可直接拉取用户信息\n$userinfo = $wechat-\u003eoauth2()-\u003euserinfo();\n```\n\n### 菜单管理\n\n#### 自定义菜单创建接口\n\n```php\n$data = [\n    \"button\" =\u003e [\n        [\n            \"type\" =\u003e \"view\",\n            \"name\" =\u003e \"百度一下\",\n            \"url\"  =\u003e \"https://www.baidu.com/\",\n        ],\n        [\n            \"type\" =\u003e \"view\",\n            \"name\" =\u003e \"导航\",\n            \"url\"  =\u003e \"http://hao.tech1024.cn/\",\n        ],\n        [\n            \"type\" =\u003e \"view\",\n            \"name\" =\u003e \"笔记\",\n            \"url\"  =\u003e \"http://www.tech1024.cn/\",\n        ],\n    ],\n];\n$wechat-\u003emenu()-\u003ecreate($data);\n```\n\n#### 自定义菜单查询接口\n\n```php\n$wechat-\u003emenu()-\u003eget();\n```\n\n#### 自定义菜单删除接口\n\n```php\n$wechat-\u003emenu()-\u003edelete();\n```\n\n### 用户管理\n\n#### 获取用户列表\n```php\n$nextOpenid = 'oeuHrwSsNAUXvLemeusYduRMFGE0'; // 下一个openid，不传从第一个开始\n$result     = $wechat-\u003euser()-\u003eget($nextOpenid);\n```\n\n#### 获取用户基本信息(UnionID机制)\n\n```php\n$openid = 'oeuHrwSsNAUXvLemeusYduRMFGE0';\n$result     = $wechat-\u003euser()-\u003einfo($openid);\n```\n\n#### 批量获取用户基本信息\n\n```php\n$openids = [\n    [\"openid\" =\u003e \"oeuHrwSsNAUXvLemeusYduRMFGE0\", \"lang\" =\u003e \"zh_CN\"],\n    [\"openid\" =\u003e \"oeuHrwTwAOT5GN6K1oPxJXyygwUU\"],\n];\n$result = $wechat-\u003euser()-\u003einfoBatchget($openids, 'zh_CN');\n```\n\n#### 设置用户备注名\n\n```php\n$openid = 'oeuHrwSsNAUXvLemeusYduRMFGE0';\n$remark = '二傻子1'; // 备注名\n$result = $wechat-\u003euser()-\u003eupdateremark($openid, $remark);\n```\n\n### 用户标签管理\n\n#### 创建标签\n\n```php\n$tagName = '北京'; // 标签名\n$result  = $wechat-\u003etags()-\u003ecreate($tagName);\n```\n\n#### 获取公众号已创建的标签\n\n```php\n$result = $wechat-\u003etags()-\u003eget();\n```\n\n#### 编辑标签\n\n```php\n$tagId = '101'; // 标签id\n$tagName = '福建'; // 要修改为的标签名\n$result     = $wechat-\u003etags()-\u003eupdate($tagId, $tagName);\n```\n\n#### 删除标签\n\n```php\n$tagId = '101'; // 标签id\n$result     = $wechat-\u003etags()-\u003edelete($tagId);\n```\n\n#### 获取标签下粉丝列表\n\n```php\n$tagId      = '100'; // 标签id\n$nextOpenid = 'oeuHrwSsNAUXvLemeusYduRMFGE0'; // 下一个openid 不传从第一个开始\n$result     = $wechat-\u003etags()-\u003euser($tagId);\n$result     = $wechat-\u003etags()-\u003euser($tagId, $nextOpenid);\n```\n\n#### 批量为用户打标签\n\n```php\n$tagId   = '102'; // 标签id\n$openids = [\n    \"oeuHrwSsNAUXvLemeusYduRMFGE0\",\n    \"oeuHrwTwAOT5GN6K1oPxJXyygwUU\",\n]; // 要修改标签的用户的openid\n$result = $wechat-\u003etags()-\u003ebatchtagging($tagId, $openids);\n```\n\n#### 批量为用户取消标签\n\n```php\n$tagId   = '102'; // 标签id\n$openids = [\n    \"oeuHrwSsNAUXvLemeusYduRMFGE0\",\n    \"oeuHrwTwAOT5GN6K1oPxJXyygwUU\",\n]; // 要取消标签的用户的openid\n$result = $wechat-\u003etags()-\u003ebatchuntagging($tagId, $openids);\n```\n\n#### 获取用户身上的标签列表\n\n```php\n$openid = \"oeuHrwSsNAUXvLemeusYduRMFGE0\";\n$result = $wechat-\u003etags()-\u003eidlist($openid);\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleeqvip%2Fwechat-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleeqvip%2Fwechat-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleeqvip%2Fwechat-api/lists"}