PHPackages                             xjtuwangke/wechat-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. xjtuwangke/wechat-sdk

ActiveLibrary[API Development](/categories/api)

xjtuwangke/wechat-sdk
=====================

wechat developer SDK.

038PHP

Since Jan 8Pushed 11y ago1 watchersCompare

[ Source](https://github.com/xjtuwangke/wechat-php-sdk)[ Packagist](https://packagist.org/packages/xjtuwangke/wechat-sdk)[ RSS](/packages/xjtuwangke-wechat-sdk/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

wechat-php-sdk
==============

[](#wechat-php-sdk)

Fork自
-----------------------------------------------------

[](#fork自httpsgithubcomdodgepuddingwechat-php-sdk)

微信公众平台php开发包,细化各项接口操作,支持链式调用,欢迎Fork此项目
weixin developer SDK.

使用详解
----

[](#使用详解)

使用前需先打开微信帐号的开发模式，详细步骤请查看微信公众平台接口使用说明：

微信支付接入文档： [https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/course2\_tmpl&amp;lang=zh\_CN](https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/course2_tmpl&lang=zh_CN)

1. wechat.class.php
    调用官方API，具有更灵活的消息分类响应方式，支持链式调用操作 ；

### 主要功能

[](#主要功能)

- 接入验证 （初级权限）
- 自动回复（文本、图片、语音、视频、音乐、图文）（初级权限）
- 菜单操作（查询、创建、删除）（菜单权限）
- 客服消息（文本、图片、语音、视频、音乐、图文）（认证权限）
- 二维码（创建临时、永久二维码，获取二维码URL）（认证权限）
- 分组操作（查询、创建、修改、移动用户到分组）（认证权限）
- 网页授权（基本授权，用户信息授权）（认证权限）
- 用户信息（查询用户基本信息、获取关注者列表）（认证权限）
- 媒体文件（上传、获取）（认证权限）
- 调用地址组件 （支付权限）
- 生成订单签名数据 （支付权限）
- 订单成功回调 （支付权限）
- 发货通知 （支付权限）
- 支付订单查询 （支付权限）

### 初始化动作

[](#初始化动作)

```
 $options = array(
	'token'=>'tokenaccesskey', //填写你设定的key
	'appid'=>'wxdk1234567890', //填写高级调用功能的app id, 请在微信开发模式后台查询
	'appsecret'=>'xxxxxxxxxxxxxxxxxxx', //填写高级调用功能的密钥
	'partnerid'=>'88888888', //财付通商户身份标识，支付权限专用，没有可不填
	'partnerkey'=>'', //财付通商户权限密钥Key，支付权限专用
	'paysignkey'=>'' //商户签名密钥Key，支付权限专用
	);
 $weObj = new Wechat($options); //创建实例对象
 //TODO：调用$weObj各实例方法
```

新增Auth高级权限类方法:

- checkAuth($appid,$appsecret) 此处传入公众后台高级接口提供的appid和appsecret, 函数将返回access\_token操作令牌
- createMenu($data) 创建菜单 $data菜单结构详见
- getMenu() 获取菜单
- deleteMenu() 删除菜单
- getMedia() 获取接收到的音频、视频媒体文件
- getQRCode($scene\_id,$type=0,$expire=1800) 获取推广二维码ticket字串
- getQRUrl($ticket) 获取二维码图片地址
- getUserList($next\_openid) 批量获取关注用户列表
- getUserInfo($openid) 获取关注者详细信息
- getGroup() 获取用户分组列表
- createGroup($name) 新增自定分组
- updateGroup($groupid,$name) 更改分组名称
- updateGroupMembers($groupid,$openid) 移动用户分组
- sendCustomMessage($data) 发送客服消息
- getOauthRedirect($callback,$state,$scope) 获取网页授权oAuth跳转地址
- getOauthAccessToken() 通过回调的code获取网页授权access\_token
- getOauthRefreshToken($refresh\_token) 通过refresh\_token对access\_token续期
- getOauthUserinfo($access\_token,$openid) 通过网页授权的access\_token获取用户资料
- getSignature($arrdata,'sha1') 生成签名字串
- generateNonceStr($length) 获取随机字串
- createPackage($out\_trade\_no,$body,$total\_fee,$notify\_url,$spbill\_create\_ip,$fee\_type=1,$bank\_type="WX",$input\_charset="UTF-8",$time\_start="",$time\_expire="",$transport\_fee="",$product\_fee="",$goods\_tag="",$attach="") 生成订单package字符串
- getPaySign($package, $timeStamp, $nonceStr) 支付签名(paySign)生成方法
- checkOrderSignature($orderxml='') 回调通知签名验证
- sendPayDeliverNotify($openid,$transid,$out\_trade\_no,$status=1,$msg='ok') 发货通知
- getPayOrder($out\_trade\_no) 查询订单信息
- getAddrSign($url, $timeStamp, $nonceStr, $user\_token='') 获取收货地址JS的签名

2. wechatext.class.php
    非官方扩展API，需要配置公众平台账户和密码，能实现对已关注用户的点对点微信，此方式不保证长期有效。
    类方法里提及的用户id在接口返回结构里表述为FakeId, 属同一概念, 在下面wechatauth类里则表示为Uin, 用户id对应的微信号必须通过getInfo()方法通过返回数组的Username值获取, 但非关注关系用户资料不能获取.
    调用下列方法前必须经过login()方法和checkValid()验证方法才能获得调用权限. 有的账户无法通过登陆可能因为要求提供验证码, 可以手动登陆后把获取到的cookie写进程序存放cookie的文件解决.
    程序使用了经过修改的snoopy兼容式HTTP类方法, 在类似BAE/SAE云服务器上可能不能正常运行, 因为云服务的curl方法是经过重写的, 某些header参数如网站来源参数不被支持.
    类主要方法:

- send($id,$content) 向某用户id发送微信文字信息
- sendNews($id,$msgid) 发送图文消息, 可通过getNewsList获取$msgid
- getUserList($page,$pagesize,$groupid) 获取用户信息
- getGroupList($page,$pagesize) 获取群组信息
- getNewsList($page,$pagesize) 获取图文信息列表
- uploadFile($filepath,$type) 上传附件,包括图片/音频/视频
- getFileList($type,$page,$pagesize) 获取素材库文件列表
- sendImage($id,$fid) 发送图片消息
- sendAudio($id,$fid) 发送音频消息
- sendVideo($id,$fid) 发送视频消息
- getInfo($id) 根据id获取用户资料,注: 非关注关系用户资料不能获取
- getNewMsgNum($lastid) 获取从$lastid算起新消息的数目
- getTopMsg() 获取最新一条消息的数据, 此方法获取的消息id可以作为检测新消息的$lastid依据
- getMsg($lastid,$offset=0,$perpage=50,$day=0,$today=0,$star=0) 获取最新的消息列表, 列表将返回消息id, 用户id, 消息类型, 文字消息等参数
- 消息返回结构: {"id":"消息id","type":"类型号(1为文字,2为图片,3为语音)","fileId":"0","hasReply":"0","fakeId":"用户uid","nickName":"昵称","dateTime":"时间戳","content":"文字内容"}
- getMsgImage($msgid,$mode='large') 若消息type类型为2, 调用此方法获取图片数据
- getMsgVoice($msgid) 若消息type类型为3, 调用此方法获取语音数据

3. wechatauth.class.php
    通过微信二维码登陆微信的API, 能实现第三方网站同步登陆, 首先程序分别通过get\_login\_code和get\_code\_image方法获取授权二维码图片, 然后利用微信手机客户端扫描二维码图片后将自动跳出授权页面, 用户点击授权后即可获取对应的用户资料和头像信息. 详细验证步骤请看test3.php例子.
    类主要方法:

- get\_login\_code() 获取登陆授权码, 通过授权码才能获取二维码
- get\_code\_image($code='') 将上面获取的授权码转换为图片二维码
- verify\_code() 鉴定是否登陆成功,返回200为最终授权成功.
- get\_login\_cookie() 鉴定成功后调用此方法即可获取用户基本信息
- sendNews($account,$title,$summary,$content,$pic,$srcurl='') 向一个微信账户发送图文信息
- get\_avatar($url) 获取用户头像图片数据
- logout() 注销登陆

4. wechat.js 微信内嵌网页特殊功能js调用：

- WeixinJS.hideOptionMenu() 隐藏右上角按钮
- WeixinJS.hideToolbar() 隐藏工具栏
- 通过定义全局变量dataForWeixin配置触发分享的内容：

```
var dataForWeixin={
      appId:"",
      MsgImg:"消息图片路径",
      TLImg:"时间线图路径",
      url:"分享url路径",
      title:"标题",
      desc:"描述",
      fakeid:"",
      callback:function(){}
   };
```

官方Wechat调用示例：
-------------

[](#官方wechat调用示例)

```
//test1.php
include "wechat.class.php";
$options = array(
		'token'=>'tokenaccesskey' //填写你设定的key
	);
$weObj = new Wechat($options);
$weObj->valid(); //注意, 应用验证通过后,可将此句注释掉, 但会降低网站安全性
$type = $weObj->getRev()->getRevType();
switch($type) {
	case Wechat::MSGTYPE_TEXT:
			$weObj->text("hello, I'm wechat")->reply();
			exit;
			break;
	case Wechat::MSGTYPE_EVENT:
			break;
	case Wechat::MSGTYPE_IMAGE:
			break;
	default:
			$weObj->text("help info")->reply();
}
```

扩展包Wechatext调用示例:
-----------------

[](#扩展包wechatext调用示例)

```
//test2.php
	include "wechatext.class.php";

	function logdebug($text){
		file_put_contents('./data/log.txt',$text."\n",FILE_APPEND);
	};

	$options = array(
		'account'=>'demo@domain.com',
		'password'=>'demo',
		'datapath'=>'./data/cookie_',
			'debug'=>true,
			'logcallback'=>'logdebug'
	);
	$wechat = new Wechatext($options);
	if ($wechat->checkValid()) {
		// 获取用户信息
		$data = $wechat->getInfo('3974255');
		var_dump($data);
		// 获取最新一条消息
		$topmsg = $wechat->getTopMsg();
		var_dump($topmsg);
		// 主动回复消息
		if ($topmsg && $topmsg['has_reply']==0)
		$wechat->send($topmsg['fakeid'],'hi '.$topmsg['nick_name'].',rev:'.$topmsg['content']);
	}
```

微信二维码Wechatauth登陆示例:
--------------------

[](#微信二维码wechatauth登陆示例)

```
//test3.php
	include "../wechatauth.class.php";
	session_start();
	$sid  = session_id();
	$options = array(
		'account'=>$sid,
		'datapath'=>'../data/cookiecode_',
	);
	$wechat = new Wechatauth($options);

	if (isset($_POST['code'])) {
		$logincode = $_POST['code'];
		$vres = $wechat->set_login_code($logincode)->verify_code();
		if ($vres===false) {
			$result = array('status'=>0);
		} else {
			$result = array('status'=>$vres);
			if ($vres==200) {
				$result['info'] = $wechat->get_login_info();
				$result['cookie'] = $wechat->get_login_cookie(true);
			}
		}

		die(json_encode($result));
	}
	$logincode =  $wechat->get_login_code(); //获取授权码
	$qrimg = $wechat->get_code_image(); //待输出的二维码图片
```

HTML部分请看test/test3.php, 主要是定时ajax查询是否已经授权成功

License
-------

[](#license)

This is licensed under the GNU LGPL, version 2.1 or later.
For details, see:

###  Health Score

22

—

LowBetter than 23% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 60.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/f72b56004ca72fe69a397a63f6bad7beb8d7287e6af77a1460892f8aa6d2773b?d=identicon)[xjtuwangke](/maintainers/xjtuwangke)

---

Top Contributors

[![dodgepudding](https://avatars.githubusercontent.com/u/548031?v=4)](https://github.com/dodgepudding "dodgepudding (67 commits)")[![xjtuwangke](https://avatars.githubusercontent.com/u/1585547?v=4)](https://github.com/xjtuwangke "xjtuwangke (20 commits)")[![allanpk716](https://avatars.githubusercontent.com/u/1176000?v=4)](https://github.com/allanpk716 "allanpk716 (3 commits)")[![leeeboo](https://avatars.githubusercontent.com/u/877939?v=4)](https://github.com/leeeboo "leeeboo (3 commits)")[![picasso250](https://avatars.githubusercontent.com/u/1884104?v=4)](https://github.com/picasso250 "picasso250 (3 commits)")[![neway3000](https://avatars.githubusercontent.com/u/5276634?v=4)](https://github.com/neway3000 "neway3000 (2 commits)")[![ys21426](https://avatars.githubusercontent.com/u/3363099?v=4)](https://github.com/ys21426 "ys21426 (2 commits)")[![easytzb](https://avatars.githubusercontent.com/u/1788362?v=4)](https://github.com/easytzb "easytzb (2 commits)")[![involvements](https://avatars.githubusercontent.com/u/1711966?v=4)](https://github.com/involvements "involvements (2 commits)")[![l953422179](https://avatars.githubusercontent.com/u/5308886?v=4)](https://github.com/l953422179 "l953422179 (1 commits)")[![ymlluo](https://avatars.githubusercontent.com/u/4463625?v=4)](https://github.com/ymlluo "ymlluo (1 commits)")[![Brooooooklyn](https://avatars.githubusercontent.com/u/3468483?v=4)](https://github.com/Brooooooklyn "Brooooooklyn (1 commits)")[![lanrion](https://avatars.githubusercontent.com/u/1432529?v=4)](https://github.com/lanrion "lanrion (1 commits)")[![zhangv](https://avatars.githubusercontent.com/u/496221?v=4)](https://github.com/zhangv "zhangv (1 commits)")[![zxkane](https://avatars.githubusercontent.com/u/843303?v=4)](https://github.com/zxkane "zxkane (1 commits)")

### Embed Badge

![Health badge](/badges/xjtuwangke-wechat-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/xjtuwangke-wechat-sdk/health.svg)](https://phpackages.com/packages/xjtuwangke-wechat-sdk)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M475](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M270](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M187](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

263103.1M452](/packages/google-gax)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
