什么是微信开发
微信开发包括三个方面,微信公众号开发,微网站开发,微信接口开发
微信作为一个客户端程序,本来所有的http请求都是发送给微信那边的服务器,所有请求的回应都是微信那边的服务器定的
微信开发的意思是,去微信开发平台申请一个账号,微信客户端会把本来要发送到微信服务器的请求发送你自己的服务器上,这样你就可以对用户的请求作出个性化回应
这些回应需要用到微信那边的api接口,要遵照微信那边制定的规则
微信开发步骤
去下面这个网站申请一个开发者账号
- 在微信开发平台填写服务器配置信息
2.填写完成后将会向填写的服务器发送携带四个参数的GET请求来验证服务器的有效性
开发者通过校验signature对请求进行校验(下面有校验方式).若确认此次GET请求来自微信服务器,请求返回ecgostr参数内容,则接入生效,成为开发成功,否则接入失败
加密 / 校验流程如下
1. 将token , timestmp ,nonce 三个参数进行字典序排序
2. 将三个惨呼字符串拼接一个字符串进行shal 加密
3.开发者获取加密后的字符串可以signature对比,标志着该请求来自于微信
实例代码:
注:验证成功后无需再次验证
public function valid(){
if($this->checkSignature()){
$echostr = $_GET['echostr'];
echo $$echostr;
}
exit
}
//接手校验信息其中的三个参数进行判断
private function checkSignature()
{
$siguature =$_GER["signature"];
$timestamp = $_GET["timestamp"];
$nonce =$_GET["nonce"];
$token = 这里写你设置的token值
$tmpArr = array($token,$timestamp , $nonce);
sort($tmpArr,SORT_SSTRING);
$tmpStr = implode($tmpArr);
$tmpStr = shal($tmpStr);
if($tmpStr == $signature){
return true;
}else{
return false
}
}
###验证成功后就可以进行相关开发工作了
##验证成功后就是获取公众号唯一的票据access token
###### 注:由于每日获取access token 次数,需要获取该access token 保存起来供你使用
http 请求方式 : GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
注意,需要使用get 请求 方式
使用curl 来请求get 方式
####实例代码
public static function get($url)
{
// 初始化会话
$ch = curl_init();
//设置会话参数
//设置url
curl_setopt($ch,CURLOPT_URL,$url);
//是返回原生数据,true:返回数据 false:直接输出
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
//是否显示请求头信息
curl_setopt($ch,CURLOPT_HEADER,false);
//主机认证: CURLOPT_SSL_VERIFYHOST
//身份认证: CURLOPT_SSL_VERIFYPEER
//是否是POST请求:CURLOPT_POST
//执行会话
$result=curl_exec($ch);
//关闭会话
curl_close($ch);
return $result;
}
//判断token 是否有效
public function getToken($id,$secret)
{
//判断是否缓存
if(file_exists(TOKEN_CACHE)){
$jsonData =file_get_contents(TOKEN_CACHE);
$data = json_decode($jsonData,true);
//判断是否过期
if(filectime(TOKEN_CACHE)+$data['expires_in']>time())){
return $data['access_token'];
}
unlink(TOKEN_CACHE);
}
$url='[https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=](https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=)'.$id.'&secret='.$secret;
$data = MyCurl::get($url);
file_put_contents(TOKEN_CACHE,$data);
$data = json_decode($data,true);
return $data['access_token'];
}
Token获取后就可以根据需求开发需要的功能了