微信开发运营木头 CodingPHP经验分享

微信开发集成类的使用

2017-06-15  本文已影响58人  泥豆芽儿MT

背景:

前期准备:

1).微信公众平台的配置,这里不赘述,具体的可以参考我前面所写的1、2章,个人认为还是比较全面的
2).将文件Weixin.class.php放在对应的library目录中,
3).对应的数据库中需要新建一个表,当然,后期优化可以考虑去掉或自行设计,
4).注意token的获取

一.开发者模式配置

1).参考配置截图
2).注意匹配对应目录以及令牌
/**
 * 微信开发配置控制器
 * Class WeixinController
 * @package M\Controller
 */
class WeixinController extends Controller
{
    public function index()
    {
        import('Org.Wechat.Weixin');
        //参数传值 token、AppID、AppSecert
        $wechat = new \Weixin('zxxxi', 'wxxxxxxxxx89', 'efxxxxxxxxxxxxxxxxxxxxxxxb7');
        if (!isset($_GET['echostr'])) {
            //TODO 调用响应消息函数 自动回复
            $wechat->responseMsg();
        } else {
            //实现网址接入,调用验证消息函数
            $wechat->valid();
        }
    }
}
3).必要文件上传

二.请求授权登录,获取微信用户信息

1).代码参考
import('Org.Wechat.Weixin');
//参数传值 token、AppID、AppSecert
$wechat=new \Weixin('zxxxxi','wxxxxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxxxxxxxxxxx7');
//可理解为这是当下的链接地址
$url = "http://www.xxxxx.com".$_SERVER['REQUEST_URI'];
//TODO 判断 memcache是否有值,是否过期 (此处只是一个判断举例)
if(!S(session('XXXNAME').'_NAMEID')){
   if(!$_GET['code']){
      $redirect_uri = $url;
      $urls=$wechat->getOauthRedirect($redirect_uri);
      header("Location:".$urls);
      die;
   }
}
$reT=$wechat->getOauthAccessToken();
//TODO 如果获得 token值
if($reT){
   $openid = $reT['openid'];
   $user_info = $wechat->getOauthUserinfo($reT['access_token'],$openid);
   //查询数据库是否存在
   $userData = M('users')
      ->where("openid = '$openid'")
      ->Field('user_id,user_name,abnormal')
      ->find();
   if ($userData['user_id']) {
      //执行操作 或者跳转页面
      header("Location:???????");
   }else{
      //没有帐号需要转到用户名填写页面来完成授权
      $maxuid = M('users')->max('user_id');
      $user['openid'] = $openid;
      $user['nickname'] = $user_info['nickname'];
      $user['sex'] = $user_info['sex'];
      $user['reg_time'] = time();
      $user['user_img'] = $user_info['headimgurl'];
      //TODO 进行新用户的添加
      $addTag = add('users',$user);
   }
}else{
//重新跳转,或其他操作...
}
2).手机微信端登录对应链接的结果
3).补充说明
$user_info = $wechat->getOauthUserinfo($reT['access_token'],$openid);

三、微信端分享功能

1).配置微信分享相应数据

/**
 * 配置微信分享功能
 */
public function getWxShare(){
    import('Org.Wechat.Weixin');
    $wechat=new \Weixin('zxxxxi','wxxxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxb7');
    $url = "http://www.xxxxxmi.com".$_SERVER['REQUEST_URI'];
    $res = $wechat->getJsSign($url);
    $res['wxurl'] = $url;
    $this->assign('wx',$res);
}

2).前台页面的配置信息

<script src="http://res.wx.qq.com/open/js/jweixin-1.1.0.js" type="text/javascript"></script>
<script>
    /**
     * Created by 百鬼夜行 on 2017/4/27.
     */
    //通过config接口注入权限验证配置
    wx.config({
        debug : false,
        appId : "{$wx.appid}",
        timestamp : "{$wx.timestamp}",
        nonceStr : "{$wx.noncestr}",
        url : "{$wx.url}",
        signature : "{$wx.signature}",
        jsApiList : ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo']
    });
    wx.ready(function(){
        //朋友圈
        wx.onMenuShareTimeline({
            title : "真米如初:美好的东西 如期相遇 值得期待",  // 分享标题
            link : "{$wx.wxurl}",  // 分享链接
            desc : "关注饮食,品质生活。您的健康,是我们最好的坚持,有真米,生活才够美!",  //分享描述
            imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", // 分享图标
        });
        //发送给好友
        wx.onMenuShareAppMessage({
            title : "真米如初:美好的东西 如期相遇 值得期待",  // 分享标题
            link : "{$wx.wxurl}",  // 分享链接
            desc : "关注饮食,品质生活。您的健康,是我们最好的坚持,有真米,生活才够美!",  //分享描述
            imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", // 分享图标
        });
        //QQ好友
        wx.onMenuShareQQ({
            title : "真米如初:美好的东西 如期相遇 值得期待",  // 分享标题
            link : "{$wx.wxurl}",  // 分享链接
            desc : "关注饮食,品质生活。您的健康,是我们最好的坚持,有真米,生活才够美!",  //分享描述
            imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", // 分享图标
        });
        //腾讯微博
        wx.onMenuShareWeibo({
            title : "真米如初:美好的东西 如期相遇 值得期待",  // 分享标题
            link : "{$wx.wxurl}",  // 分享链接
            desc : "关注饮食,品质生活。您的健康,是我们最好的坚持,有真米,生活才够美!",  //分享描述
            imgUrl : "http://img.52zhenmi.com/Public/upload/20170426/149321008494428.jpg", // 分享图标
        });
    });
</script>
3).最终实现的效果如下
补充提醒:

四、公众号发送消息

1).前提
2).代码举例
/**
 * 此方法不支持 图片发送 注意文字的换行显示
 */
public function postMsg(){
    import('Org.Wechat.Weixin');
    $wechat=new \Weixin('zxxxxi','wxxxxxxxxxx9','efxxxxxxxxxxxxxxxxxxxxxxxxxb7');
    $content = "微信公众号发送:\n";
    $content .= "人生如戏,我们以为可以改变自己的命运,却没想到我们的结局早已注定。\n无论怎么做都摆脱不了戏里既定的安排,可谓殊途同归。";
    $content .= "如此看来,我们的拼搏和挣扎就像小丑在跳舞,徒惹人发笑罢了。";
    //TODO 微信用户唯一标记-openID 前提是对方已经关注公众号
    $wxOpenID = "oIaCOxxxxxxxxxxxxxxxxxxxxFe0";
    $wechat->postMaggerToUser($wxOpenID,$content);
}

3).实现效果

五、公众号自动回复

1).主要的配置其实来源于上面第一节对开发者模式的配置,而举例代码中WeixinController的index()重要的就是那不到十行的代码
2).监听响应消息的函数为 Weixin.class中的 responseMsg(),对于其中详细的数据处理可根据不同的触发事件路径进行代码的修改
3).举例:关注公众号后的消息发送
4).举例:根据用户的输入进行消息的自动回复,代码实际开发中可根据获得的文字进行项目数据库中的文字匹配,此处简单演示即可。
5).效果实现截图

附录:

(1).获取用户Openid及个人信息
(2).微信端分享功能
(3).源代码下载 >>>
上一篇下一篇

猜你喜欢

热点阅读