最近创建的项目,用户在资金汇款或成员更改时需要发送微信消息。(David Assell,Northern Exposure,Finorture)本想对此使用模板消息,但刚刚注册的公众号申请消息模板需要几天时间,时间不足时选择了客服消息界面,微信文档地址3360。
这里跳过网页审批和用户信息收集,跳过请求界面的步骤,主要检查是否对获取access_token、发布客户服务消息、公众号等界面感兴趣。
1。获取access_token。
//access导入_ token
public function getaccesstoken($ weid){
$ $ appID=' wxfaddfdfd 6 cf 6 fc 3569 6 fc 3569 '//产品服务编号appID
$ appsecret=' 071 bebfdfdofdfd 23687 BF 53d 63a '//产品服务编号appSerect
$ URL='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 '){
Returnerror (-1,$ this-error code($ token[' err code '],$ token[' err msg ']));
}
If(empty($token) ||!is _ array($ token)| | empty($ token[' access _ token '])| | empty($ token[' exppty ')
$ error info=substr($ content[' meta '],strpos ($ content ['meta'],' { '));
$ error info=@ JSON _ decode($ error info,true);
return error(“-1”,“获取微信公共号授权失败”)。请稍后再试!公共平台包含原始数据:错误代码-'$ error info[' error code '].错误消息-'$ errorinfo ['errmsg'])。
}
$ record=array();
$ record[' token ']=$ token[' access _ token '];
$ record[' expire ']=timestamp $ token[' expires _ in ']-200;
$ cache key=cache _ system _ key(' access token 'array(' acid '=$ weid));
Cache_write($cachekey,$ record);
return $ record[' token '];
}
2.判断是否关注公众号。
//确定当前用户是否对公共编号感兴趣
public public function is subscribe($ weid、$ userid) {
//获取当前用户信息
$ user info=PDO _ get(' HC face _ users 'array(' uid '=$ userid));
//return $ user info;
If(empty($userinfo)) {
Return false
}
//access导入_ token
$ accesstoken=$ this-getaccesstoken($ weid);
//您对界面感兴趣吗
$ URL='$ access token . 'OpenID='$ userinfo ['OpenID']. 'lang=zh _ cn '
$ RES=ihttp _ request($ URL);
If(is_error($res)) {
Return false
}
If ($ RES ['代码'])!='200') {
Return false
}
$ result=@ JSON _ decode ($ RES [“内容”],true);
If($result['subscribe']==1) {
$ updateData=[];
//确定当前用户头像和昵称是否已更换
If($userinfo['avatar'])!=$result['headimgurl']) {
$ updatedata[' avatar ']=$ result[' headim gurl '];
}
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 '=$ user info[' OpenID '],
' nickname '=$ user info[' nickname '],
];
Return $ userInfoData
}
3.发送客户服务信息。
public function solpushmsg($ OpenID、$ content、$ wid) {
//access导入_ token
$ accesstoken=$ this-getaccesstoken($ wid);
$data=array(
Touser'=$openID,//用户openID
Msgtype'='text '
文字'=[
内容'=$内容,//内容
],
);
$ URL='$ accessToken
$ RES=I http _ request ($ URL,JSON _ encode ($ data,JSON _ unescaped _ unicode));//json_unicode第二个参数必须导入。否则,消息可能会以unicode编码
If(is_error($res)) {
Return false
}
If ($ RES ['代码'])!='200') {
Return false
}
Return @ JSON _ decode ($ RES ['内容'],true);
}
微信接口返回数组。
5。实现效果。
公众号