前情回顾总结:
个人开发的订阅号权限太少,一般都直接使用自定义菜单来设置功能,在企业中一般都是使用服务号进行开发,如果我们自己的订阅号使用服务器进行开发的话,他的自定义菜单和自动回复都将失效,需要自己再重新开启。
一、.微信测试号的简单步骤:
在开发者工具里面找到测试账号,他的权限有许多可以使用。
直接查看开发工具的开发文档开始开发按步骤进行
1.填写服务器配置,
2.验证消息的确来自微信服务器
微信认证配置成功。我们就是开发者状态
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = "sunhaojie";
$echostr=$_GET["echostr"]
$tmpArr = array($token, $timestamp, $nonce);
排序
sort($tmpArr, SORT_STRING);
//将数组转化成字符串
$tmpStr = implode( $tmpArr );
//加密
$tmpStr = sha1( $tmpStr );
//判断是否来源于微信
if( $tmpStr == $signature ){
echo $echostr
}
}
checkSignature()
3,依据接口文档实现业务逻辑
微信接口:
拿到微信接口我们一般都需要appid appsecret (密码) access_token (这个access_token 和我们服务器配置里面的token令牌不一样,access_token 在接口中相当于唯一标识)
接口域名:使用单独的域名在相应区域速度较快。
appid appsecret 可以直接获取,access_token 需要我们通过接口获取,access_token 每天获取个数,时间有限制,所以我们需要想办法在2小时之内使用同一个access_token 所以我们需要保存起来。
4. 我们一般不使用ajax 调取接口会有跨域,jsonp不知道当前的回调函数,在这里使用php 调取微信接口,使用php的网络请求
第一中请求方式:curl:client url
第二中请求方式 :socket
在这里使用curl 请求get微信接口 获取access_token
在没有curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);情况下,没 有echo 就打印出来了,我们不能让他自动打印出来所以需要添加
//1.创建一个会话
$curl=curl_init();
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxc748c783b38776af&secret=74f650400702c2789c1cd3f690d3b91c";
//2.配置会话消息
curl_setopt($curl,CURLOPT_URL,$url);
//设置返回结果集不让自动输出
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
//3.抓取url,并传递给浏览器
$result =curl_exec($curl);
curl_close($curl);
//我们将上述代码进行简单的封装
function httpGet($url){
//1.创建一个会话
$curl=curl_init();
//2.配置会话消息
curl_setopt($curl,CURLOPT_URL,$url);
//设置返回结果集不让自动输出
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
//3.抓取url,并传递给浏览器
$result =curl_exec($curl);
curl_close($curl);
return $result;
};
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxc748c783b38776af&secret=74f650400702c2789c1cd3f690d3b91c";
echo httpGet($url)
2、通过curl 请求post微信接口,在微信接口中都需要传递一个access_token 所以在这里post接口也有?拼接。openid 就是关注这个公众号的唯一ID 当前接口用来设置用户名的名字
function httpPost($url,$data){
$curl=curl_init();
// get 请求是默认的所以不需要设置,post 需要设置
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_URL,$url);
//配置data 数据的会话消息
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
$result =curl_exec($curl);
curl_close($curl);
return $result;
};
$url="https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=30_QAGQHcRHcbO7A-bavfX5C8EMCUgIWWit9cNpD-wO0xyOU8L-cEQlDa1MNABhmpTZrNgeSaOiDDcc0o7duaImU3nBBRCRX8cS0QFeFBzJYVEn21slbCEy5KgbPOiJY78X7qSSkS2KB175Td8BAYCdAAALJN";
$data='{
"openid":"oBRvXw2BsKTxcf29nVMQcB8Lh_94",
"remark":"sunhaojie"
}';
echo httpPost($url,$data);