项目作者: marcus-ma

项目描述 :
Business Function components of out of the box for WeChat Platform development (拿来即用的微信开发常用业务组件库)
高级语言: PHP
项目地址: git://github.com/marcus-ma/wx-component.git
创建时间: 2018-05-14T02:20:11Z
项目社区:https://github.com/marcus-ma/wx-component

开源协议:

下载


wx-component (拿来即用的常用微信开发组件库)

使用说明


该组件库意在提供一些已封装好的常用微信H5、公众号等开发业务逻辑的功能,开发者可以根据实际业务场景导入相关的业务组件,减少理解成本,降低开发难度,拿来即用。

1起步(接入微信服务)


在要使用的微信功能的业务文件中,先引入基类组件Base.php(使用use引入),定义好属性token、appId、appSecret

  1. <?php
  2. namespace controller;
  3. use wx\Base;
  4. class demo
  5. {
  6. //引入基类组件Base
  7. use Base;
  8. //跟微信服务器对接校验的Token
  9. private $token = 'weixin';
  10. //微信公众号的唯一appId
  11. private $appId = '';
  12. //微信公众号的唯一appSecret
  13. private $appSecret = '';
  14. //微信接入检验方法
  15. public function wxInit()
  16. {
  17. //valid()为Base组件中对接微信服务器的方法
  18. $this->valid();
  19. }
  20. }

2入门(组件介绍)


#wx-component
根目录文件

  1. **#Base.php**
  2. 微信功能基类,所有其他业务类使用前必需先引入它。
  3. 使用前先确定属性tokenappIdappSecretaccessTokenFile已定义
  4. **#UserInfo.php**
  5. 获取用户身份信息业务组件。使用前先确定属性appIdappSecret已定义
  6. **#JsSdk.php**
  7. 调用jssdk(微信朋友圈分享、好友分享等js功能)前要获取的配置项业务组件。使用前先确定属性appIdjsApiTicketFile已定义
  8. **#AccountsPlatform.php**
  9. 公众号相关功能开发业务组件。使用前先确定属性appIdappSecretmsgType已定义
  10. **##AccountsPlatform**
  11. 公众号具体功能业务文件,里面包含具体事件响应功能开发业务组件。


3具体使用(组件功能实例)

1.UserInfo组件(处理获取用户身份信息业务)

  1. <?php
  2. namespace controller;
  3. use wx\Base;
  4. use wx\UserInfo;
  5. class demo
  6. {
  7. //引入基类组件Base和授权获取用户信息组件UserInfo
  8. use Base,UserInfo;
  9. //微信公众号的唯一appId
  10. private $appId = '';
  11. //微信公众号的唯一appSecret
  12. private $appSecret = '';
  13. //定义accesstoken文件处在路径
  14. private $accessTokenFile = 'xxx.json';
  15. public function startIn()
  16. {
  17. /**
  18. * oauth2授权连接
  19. *
  20. * @param $redirect_uri (要跳转到URL)
  21. * @param bool $snsapi (授权模式,默认为base型:获取openid;填写true为user_info型:获取用户的openid,头像,呢称,地区)
  22. * @param int $state (重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节)
  23. * @return string 生成拼接完的URL
  24. */
  25. // http://xxxxx/getUseStatus 为项目服务器地址
  26. $url = $this->oauth2URL('http://xxxxx/getUseStatus',true);
  27. echo "<script language='javascript'>";
  28. echo " location='".$url."';";
  29. echo "</script>";
  30. }
  31. public function getUseStatus()
  32. {
  33. /**
  34. * user_info型授权(获取用户的openid,头像,呢称,地区)
  35. *
  36. * @return array|bool|string (返回数组[info]为二维数组,若调用oauth2时带了参数则有[state])
  37. */
  38. $res = $this->getUserInfo();
  39. //获取头像
  40. $img = $res['info']['headimgurl'];
  41. //获取openid
  42. $openid = $res['info']['openid'];
  43. //获取过滤特殊字符后的微信昵称
  44. $nickname = $this->filter($res['info']['nickname']);
  45. //获取该用户是否关注的公众号(有则为true)
  46. $subscribe = $res['info']['subscribe'];
  47. }
  48. }

2.JsSdk组件(调用jssdk(微信朋友圈分享、好友分享等js功能)前要获取的配置项)

  1. <?php
  2. namespace a;
  3. use wx\Base;
  4. use wx\JsSdk;
  5. class demo
  6. {
  7. use Base,JsSdk;
  8. private $appId = '';
  9. private $appSecret = '';
  10. private $accessTokenFile = 'xxx.json';
  11. private $jsApiTicketFile = 'xxx.json';
  12. public function getJsInit()
  13. {
  14. $res = $this->getSignPackage();
  15. $appId = $res['appId'];
  16. $timestamp = $res['timestamp'];
  17. $nonceStr = $res['nonceStr'];
  18. $signature = $res['signature'];
  19. }
  20. }

3.AccountsPlatform组件(处理公众号相关功能开发业务)

  1. <?php
  2. namespace a;
  3. use wx\AccountsPlatform;
  4. use wx\Base;
  5. class demo
  6. {
  7. //引入基类组件Base和公众号相关功能开发业务组件AccountsPlatform
  8. use Base,AccountsPlatform,
  9. //引入要处理的消息类型
  10. //(处理关注事件HandleSubscribe)
  11. //(处理关键词回复事件HandleSubscribe)
  12. AccountsPlatform\HandleSubscribe,
  13. \HandleText;
  14. private $token = 'weixin';
  15. private $appId = '';
  16. private $appSecret = '';
  17. private $accessTokenFile = 'xxx.json';
  18. //定义要处理的消息业务类型,配置项从以下选
  19. //现暂时只提供“关注事件”和“关键词回复事件"
  20. /**
  21. * @var array
  22. *
  23. *
  24. (事件类型:关注事件)'event' => 'receiveEvent',
  25. (文本类型:关键字回复)'text' => 'receiveText',
  26. (位置类型:调用LBS地理信息)'location' => 'receiveLocation',
  27. (图片类型:图片信息)'image' => 'receiveImage',
  28. (声音类型:声音信息)'voice' => 'receiveVoice',
  29. */
  30. private $msgType = [
  31. 'event' => 'receiveEvent',
  32. 'text' => 'receiveText',
  33. ];
  34. //此处可进行处理用户关注后的一些业务逻辑,默认参数为用户的openid
  35. private function subscribeHook($openid){
  36. //Todo
  37. //例如关注后将该用户的openid记录在数据库
  38. }
  39. public function wxInitForSubscribe()
  40. {
  41. //_setSubscribe为设置用户关注公众号后收到的信息
  42. $this->_setSubscribe('欢迎关注我的公众号')
  43. ->valid()
  44. ->responseMsg();
  45. }
  46. public function wxInitForKeyWord()
  47. {
  48. //_setKeywords为设置关键词回复
  49. $this->_setKeywords([
  50. 'hello'=>"hello world! thanks your subscribe",
  51. "openid" => "您的openid是:",
  52. ])
  53. ->valid()
  54. ->responseMsg();
  55. }
  56. //创建菜单
  57. public function menuCreate()
  58. {
  59. //创建菜单 页面显示true则菜单创建成功
  60. $postmenu='{
  61. "button":[
  62. {
  63. "name":"关于我们",
  64. "sub_button":[
  65. {
  66. "type":"view",
  67. "name":"官网地址",
  68. "url":"http://www.lambdass.com"
  69. },
  70. {
  71. "type":"click",
  72. "name":"澜达网络",
  73. "key":"LAMBDA"
  74. }]
  75. },
  76. {
  77. "name":"百度",
  78. "type":"view",
  79. "url":"http://www.baidu.com"
  80. },
  81. {
  82. "name":"成功项目",
  83. "sub_button":[
  84. {
  85. "type":"view",
  86. "name":"原本佛山",
  87. "url":"http://www.ybfoshan.com/"
  88. },
  89. {
  90. "type":"view",
  91. "name":"佛大官网",
  92. "url":"http://web.fosu.edu.cn/"
  93. },
  94. {
  95. "type":"view",
  96. "name":"凌达工作室",
  97. "url":"http://web.fosu.edu.cn/lambda/"
  98. }]
  99. }]
  100. }';
  101. $res = $this->createMenu($postmenu);
  102. var_dump($res);
  103. }
  104. //删除菜单
  105. public function menuDelete(){
  106. $res = $this->deleteMenu();
  107. var_dump($res);
  108. }
  109. //查询菜单
  110. public function menuSelect(){
  111. $res = $this->selectMenu();
  112. var_dump($res);
  113. }
  114. }

4.wxjs(调用微信分享功能)

  1. <script src="//res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
  2. <script>
  3. const vConfig = {
  4. debug:true,
  5. appId:'',
  6. timestamp:'',
  7. nonceStr:'',
  8. signature:'',
  9. jsApiList:[
  10. 'onMenuShareTimeline', //分享到朋友圈
  11. 'onMenuShareAppMessage', //分享给朋友
  12. 'onMenuShareQQ' //分享到QQ
  13. ]
  14. };
  15. const sConfig = {
  16. title:'',
  17. link:'',
  18. imgUrl:'',
  19. desc:'',
  20. success:function () {
  21. alert('分享成功');
  22. },
  23. cancel: function () {
  24. alert('分享失败');
  25. }
  26. };
  27. </script>
  28. <script src="wxjs.js"></script>