php实现给用户发微信消息提醒功能-kb88凯时官网登录

来自:网络
时间:2023-07-25
阅读:
目录

正文

以前有一个项目项目,当有用户有资金到账或者成员变动时需要给他发一条微信消息提示。针对这个,开始想使用模板消息,但是刚注册的公众号申请消息模板需要几天时间申请,在时间不足下选择了使用客服消息接口。   

这里跳过网页授权和用户信息获取,请求接口的步骤,主要看获取access_token,发布客服消息,验证是否关注等等接口。

php实现给用户发微信消息提醒功能

php实现给用户发微信消息提醒功能

1. 获取access_token

// 获取access_token
public function getaccesstoken($weid) {
        $appid = "wxfaddfdfdfd6cf6fc3569";                                      // 服务号appid
        $appsecret = "071bebfdfdofdfd23687bf53d63a";                            // 服务号appserect
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
        $content = ihttp_get($url);                                             // 自定义请求函数
        if(is_error($content)) {
            return error('-1', '获取微信公众号授权失败, 请稍后重试!错误详情: ' . $content['message']);
        }
        if (empty($content['content'])) {
            return error('-1', 'accesstoken获取失败,请检查appid和appsecret的值是否与微信公众平台一致!');
        }
        $token = @json_decode($content['content'], true);
        if ($token['errcode'] == '40164') {
            return error(-1, $this->errorcode($token['errcode'], $token['errmsg']));
        }
        if(empty($token) || !is_array($token) || empty($token['access_token']) || empty($token['expires_in'])) {
            $errorinfo = substr($content['meta'], strpos($content['meta'], '{'));
            $errorinfo = @json_decode($errorinfo, true);
            return error('-1', '获取微信公众号授权失败, 请稍后重试! 公众平台返回原始数据为: 错误代码-' . $errorinfo['errcode'] . ',错误信息-' . $errorinfo['errmsg']);
        }
        $record = array();
        $record['token'] = $token['access_token'];
        $record['expire'] = timestamp   $token['expires_in'] - 200;
        $cachekey = cache_system_key('accesstoken', array('acid' => $weid));
        cache_write($cachekey, $record);
        return $record['token'];
    }

2. 判断是否关注

// 判断当前用户是否关注公众号
public public function issubscribe($weid,$userid) {
        // 获取当前用户信息
        $userinfo = pdo_get('hcface_users',array('uid'=>$userid));
        //return $userinfo;
        if(empty($userinfo)) {
            return false;
        }
        // 获取access_token
        $accesstoken = $this->getaccesstoken($weid);
        // 是否关注接口
        $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$accesstoken."&openid=".$userinfo['openid']."&lang=zh_cn";
        $res = ihttp_request($url);
        if(is_error($res)) {
            return false;
        }
        if($res['code'] != '200') {
            return false;
        }
        $result = @json_decode($res['content'],true);
        if($result['subscribe'] == 1) {
            $updatedata = [];
            // 判断当前用户头像和昵称是否更换
            if($userinfo['avatar'] != $result['headimgurl']) {
                $updatedata['avatar'] = $result['headimgurl'];
            }
            if($userinfo['nickname'] != $result['nickname']) {
                $updatedata['avatar'] = $result['nickname'];
            }
            if(!empty($updatedata)) {
                pdo_update('hcface_users',$updatedata,array('uid'=>$userid));
            }
        }
        $userinfodata = [
            "subscribe" => $result['subscribe'],
            "user_openid" => $userinfo['openid'],
            "nickname" => $userinfo['nickname'],
        ];
        return $userinfodata;
    }

3. 发送客服消息

public function solpushmsg($openid, $content, $wid) {
        // 获取access_token
        $accesstoken = $this->getaccesstoken($wid);
        $data = array(
          'touser' => $openid,              // 用户openid
          'msgtype' => 'text',
          'text' => [
                'content' => $content,     // 内容
            ],
        );
        $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$accesstoken; 
        $res = ihttp_request($url,json_encode($data,json_unescaped_unicode)); // json_encode第二个参数必须带上,不然发出的消息可能是unicode编码的
        if(is_error($res)) {
            return false;
        }
        if($res['code'] != '200') {
            return false;
        }
        return @json_decode($res['content'],true);
    }

4. 微信接口返回的是一个数组

php实现给用户发微信消息提醒功能

5. 实现效果

php实现给用户发微信消息提醒功能

以上就是php实现给用户发微信消息提醒功能的详细内容,更多关于php微信消息提醒的资料请关注其它相关文章!

返回顶部
顶部
网站地图