公众号开发 单独 给某个用户 推送消息_PHP公众号开发给用户发微信消息提醒功能...

最近做的一个项目,当有用户有资金到账或者成员变动时需要给他发一条微信消息提示。针对这个,开始想使用模板消息,但是刚注册的公众号申请消息模板需要几天时间申请,在时间不足下选择了使用客服消息接口,微信文档地址: https://mp.weixin.qq.com/wiki。

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

f25fcf1c4b3ea6228d4dbbbecb6f1597.png
7e137d16b941ecc25550019c01fe342c.png

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

aeacb02b4b44a28b608f613ea32e1e1b.png

5. 实现效果。

d189f5ba79af614f963a734b07c51dad.png

公众号

8f75d481f0701468f0f76be7d6ca269a.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值