PHP微信开发包,微信开发SDK

Deadly 提交于 2020-04-15 15:55:41

【推荐阅读】微服务还能火多久?>>>

本人自己用PHP原生开发的微信SDK包,有兴趣得可以了解一下。可以通过composer安装,或者码云下载。感兴趣的可以加Q群:735713840 相互讨论

项目地址:https://gitee.com/Taurus12C/wechat

 

使用详情见 index.php 文件内注释

开发中使用本人申请的微信测试号,如需自己体验可前往 微信测试号申请地址 申请

项目还在开发阶段,如遇问题请联系我.

目录结构

|—— cache                       文件缓存驱动存储空间
|—— lib                         包主文件夹
|   |—— cache                   缓存驱动
|   |—— core                    核心文件
| |—— http 接口请求驱动 | |—— Cache.php 缓存类文件 | |—— Config.php 配置获取类 | |—— Http.php 接口请求类 | |—— Wechat.php 主类 |—— vendor composer依赖 |—— config.php 配置文件 |—— index.php 方法示例描述

安装方法 composer require taurus12c/wechat

使用方法

1、开始

配置好包根目录的config.php文件,导入Wechat类,完成微信开发

use wechat\lib\Wechat;


实例化对象

$wechat = new Wechat();


2、鉴权

接口配置服务器验证方法。一般只需用到一次

$wechat->checkSignature();


获取微信全局access_token,公众号给类接口调用时所用的access_token

$global_access_token = $wechat->getGlobalAccessToken();


微信网页授权获取用户信息

$userInfo = $wechat->getUserInfo();


单独获取用户openid,此获取不跳转用户授权界面,静默授权

$openid = $wechat->getOpenId();


2、自定义菜单

//设置公众号菜单,方法形参$data强制数组,返回bool型。菜单设置方式请遵从微信自定义菜单规则

$data = [
     "button"=>[
         [
             "name"         =>"按钮一",
 "type" =>"view",  "url" =>"http://www.baidu.com",  ],  [  "name" =>"按钮二",  "sub_button" =>[  [  "name" =>"二级菜单1",  "type" =>"view",  "url" =>"http://www.baidu.com"  ]  ]  ]  ] ];  $setMenu = $wechat->menu->setMenu($data);

获取当前自定义菜单设置

$getMenu = $wechat->menu->getMenuInfo();


删除自定义菜单

$delMenu = $wechat->menu->delMenu();


设置个性化菜单,datadata菜单设置样式,matchrule个性化菜单匹配规则,返回bool型,详情微信手册

$data = [
    "button"=>[
        [
            "name"         =>"按钮一",
 "type" =>"view",  "url" =>"http://www.baidu.com",  ],  [  "name" =>"按钮二",  "sub_button" =>[  [  "name" =>"二级菜单1",  "type" =>"view",  "url" =>"http://www.baidu.com"  ]  ]  ]  ], ]; $matchrule = [  "matchrule"=>[  "tag_id"=> "2",  "sex"=> "1",  "country"=> "中国",  "province"=> "广东",  "city"=> "广州",  "client_platform_type"=> "2",  "language"=> "zh_CN"  ] ];  $setMenuConditional = $wechat->menu->setMenuConditional($data,$matchrule);

获取个性化菜单设置

$getMenuConditionalInfo = $wechat->getMenuConditionalInfo();


3、消息管理

接收用户发来的消息,返回数组类型数据,数据内容见微信开发文档

$msg = $wechat->getMsg();


被动回复文本消息,参数1:接收方openid 参数2:开发者openid 参数3:发送内容,以下使用接收来的数据

$sendText = $wechat->sendText($msg['FromUserName'],$msg['ToUserName'],'您发送的内容是:'.$msg['Content']);


被动回复图片消息,参数1:接收方openid 参数2:开发者openid 参数3:上传的图片素材id

$sendImg = $wechat->sendImg($toUserName,$fromUserName,$mediaId);


被动回复语音消息,参数1:接收方openid 参数2:开发者openid 参数3:上传的语音素材id

$sendVoice = $wechat->sendVoice($toUserName,$fromUserName,$mediaId);


被动回复视频消息,参数1:接收方openid 参数2:开发者openid 参数3:数组(格式见下方参考)

$content = [
        'title'     => '', //标题
        'desc'      => '', //描述
        'mediaId'   => '', //上传的素材ID
 ];  $sendVideo = $wechat->sendVoice($toUserName,$fromUserName,$content);

被动回复音乐消息,参数1:接收方openid 参数2:开发者openid 参数3:数组(格式见下方参考)

$content = [
        'title'         => '', //标题
        'desc'          => '', //描述
        'url'           => '', //音乐链接
 'Hurl' => '', //高品质音乐链接,WIFI状态下默认播放这个  'thumbMediaId' => '', //消息缩略图,上传的图片素材ID  ];  $sendMusic = $wechat->sendVoice($toUserName,$fromUserName,$content);

被动回复图文消息,参数1:接收方openid 参数2:开发者openid 参数3:数组(格式见下方参考)

$articles = [
        '第一篇' => [
            'title'     => '', //标题
            'desc'      => '', //描述
 'picurl' => '', //缩略图url  'url' => '', //点击跳转页面url  ],  '第二篇' => [],  '第三篇' => [],  ... //一次性最多发送8篇,数量限制详情见微信开发文档  ];  $sendNews = $wechat->sendNews($toUserName,$fromUserName,$articles);

4、素材管理

素材上传提示
图片(image): 2M,支持PNG\JPEG\JPG\GIF格式
语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
视频(video):10MB,支持MP4格式
缩略图(thumb):64KB,支持JPG格式

上传图片临时素材文件,参数1:文件路径。返回json格式字符串数据内容见微信开发手册

$tempMedia = $wechat->media->addImgTempMedia($filepath);


上传语音临时素材文件,参数1:文件路径。返回json格式字符串数据内容见微信开发手册

$tempMedia = $wechat->media->addVoiceTempMedia($filepath);


上传视频临时素材文件,参数1:文件路径。返回json格式字符串数据内容见微信开发手册

$tempMedia = $wechat->media->addVideoTempMedia($filepath);


上传缩略图临时素材文件,参数1:文件路径。返回json格式字符串数据内容见微信开发手册

$tempMedia = $wechat->media->addThumbTempMedia($filepath);


获取临时素材,参数1:素材media_id 图片素材返回图片文件流字符串 视频素材返回json格式字符串包含视频url地址。以下示例将获取的图片素材文件流保存为本地文件

$getTempMedia = $wechat->media->getTempMedia($media_id);

$file = fopen('test.jpg','w+');
fwrite($file,$getTempMedia);
fclose($file);

获取jssdk上传的高清语音

$getJssdkMedia = $wechat->media->getJssdkMedia($media_id)


上传图片永久素材

$addImgMaterial = $wechat->media->addImgMaterial($file);


上传语音永久素材

$addVoiceMaterial = $wechat->media->addVoiceMaterial($file);


上传永久视频素材,参数1:文件路径 参数2:视频标题 参数3:视频描述

$addVideoMaterial = $wechat->media->addVideoMaterial($file,$title,$introduction);


上传永久缩略图素材

$addThumbMaterial = $wechat->media->addThumbMaterial($file);


上传图文永久素材,参数1:图文内容数组,返回素材media_id

$articles = [
    [
        "title"             =>      'TITLE',                //标题
        "thumb_media_id"    =>      'THUMB_MEDIA_ID',       //图文消息的封面图片素材id(必须是永久mediaID)
 "author" => 'AUTHOR', //作者  "digest" => 'DIGEST', //图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空。如果本字段为没有填写,则默认抓取正文前64个字。  "show_cover_pic" => 'SHOW_COVER_PIC(0 / 1)',//是否显示封面,0为false,即不显示,1为true,即显示  "content" => 'CONTENT', //图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS,涉及图片url必须来源 "上传图文消息内的图片获取URL"接口获取。外部图片url将被过滤。  "content_source_url"=> 'CONTENT_SOURCE_URL', //图文消息的原文地址,即点击“阅读原文”后的URL  "need_open_comment" => '1', //Uint32 是否打开评论,0不打开,1打开  "only_fans_can_comment"=> '1' //Uint32 是否粉丝才可评论,0所有人可评论,1粉丝才可评论  ],  [  //...  ],  //最多八篇 ];  $addArticleMaterial = $wechat->media->addArticleMaterial($articles);

上传图文消息内的图片,返回图片url(图片仅支持jpg/png格式,大小必须在1MB以下)

$addArticleImgMaterial = $wechat->media->addArticleImgMaterial($file);


获取永久素材,参数1:素材media_ia,返回 图文素材视频素材为json数据,其他则为文件二进制文件内容

$getMaterial = $wechat->media->getMaterial($meida_id);


获取素材总数,返回json数据类型

$getMaterialCount = $wechat->media->getMaterialCount();


获取素材列表,参数1:查询素材类型图片(image)、视频(video)、语音(voice)、图文(news),参数2:从全部素材的该偏移位置开始返回,0表示从第一个素材返回,默认0,参数3:返回素材的数量,取值在1到20之间,默认20。返回json数据

$getMaterialList = $wechat->media->getMaterialList($type, $offset, $count);


删除永久素材

$delMaterial = $wechat->media->delMaterial($media_id);

5、用户管理

创建用户标签,参数1:标签名称

$tag = $wechat->user->createTag($name);


获取已创建的标签

$tagList = $wechat->user->tagList();


修改标签名称,参数1:要修改的标签ID,参数2:修改后的标签名称

$upTag = $wechat->user->upTag($id,$name);


删除标签,参数1:标签ID

$delTag = $wechat->user->delTag($id);


获取标签下粉丝列表,参数1:标签ID,参数2:第一个拉取的OPENID,不填默认从头开始拉取

$tagUserList = $wechat->user->tagUserList($id,$offset);


批量为用户打标签,参数1:openid数组,参数2:标签ID

$openid_list=[
    //粉丝列表
    "ocYxcuAEy30bX0NXmGn4ypqx3tI0",
    "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"
]; $tagUser = $wechat->user->tagUser($openid_list,$id);

未完待续

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!