目录
正文
以前有一个项目项目,当有用户有资金到账或者成员变动时需要给他发一条微信消息提示。针对这个,开始想使用模板消息,但是刚注册的公众号申请消息模板需要几天时间申请,在时间不足下选择了使用客服消息接口。
这里跳过网页授权和用户信息获取,请求接口的步骤,主要看获取access_token,发布客服消息,验证是否关注等等接口。
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. 微信接口返回的是一个数组
5. 实现效果
以上就是PHP实现给用户发微信消息提醒功能的详细内容,更多关于PHP微信消息提醒的资料请关注其它相关文章!
© 版权声明
THE END
暂无评论内容