以前有一个我的项目我的项目,当有用户有资金到账或者成员变动时须要给他发一条微信音讯提醒。针对这个,开始想应用模板音讯,然而刚注册的公众号申请音讯模板须要几天工夫申请,在工夫有余下抉择了应用客服音讯接口。   

这里跳过网页受权和用户信息获取,申请接口的步骤,次要看获取access_token,公布客服音讯,验证是否关注等等接口。

1. 获取access_token

// 获取access_tokenpublic 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. 微信接口返回的是一个数组

5. 实现成果