微信相关接口

先列出来需要用到的函数吧

 function fetchUrl($url, $time=120)
 {
$curl_opt = array(
                CURLOPT_URL => $url,
                CURLOPT_AUTOREFERER => TRUE,
                CURLOPT_RETURNTRANSFER => TRUE,
                CURLOPT_CONNECTTIMEOUT => 0,
                CURLOPT_TIMEOUT => $time,
                CURLOPT_SSL_VERIFYPEER => FALSE,
                CURLOPT_SSL_VERIFYHOST => FALSE
        );
        $ch = curl_init();
        curl_setopt_array($ch, $curl_opt);
        $contents = curl_exec($ch);
        curl_close($ch);
        return $contents;
 }


1、获取当前用户是否关注该公众号,如果有关注还可以获取其他用户信息(详情见:微信公众平台开发者文档----用户管理----获取         用户基本信息)

这里我直接写例子:

$url2 = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={$access_token}&openid={$openid}&lang=zh_CN";     
        $res2 = fetchUrl($url2);
        $data2 = (array)json_decode($res2); //微信会返回下述JSON数据包给公众号
        $subscribe = $data2['subscribe'];
        $openid = $data2['openid'];

(注意:如果用户没有关注该公众号,微信只会返回两个值:subscribe、openid,如果subscribe为0,则表示没有关注,否则会返回更多用户详细信息)


可以看到这个接口里面需要用到 $access_token 和 {$openid}这两个值,那么调用这个接口前,就需要先获取这两个值,这就需要调用其他微信接口。

2、获取access_token(详情见:网页授权获取用户基本信息

  $url1 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
$res1 = fetchUrl($url1);
    $data1 = (array)json_decode($res1);
$access_token = $data1['access_token'];

(注意:这个接口里面用到的两个值appid和secret在微信公众号后台----开发者中心--配置项--开发者ID 可以看到

3、获取openid(详情见:网页授权获取用户基本信息----通过code换取网页授权access_token

$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$secret}&code={$code}&grant_type=authorization_code";
$data = (array)json_decode(fetchUrl($url));
        $openid = $data['openid'];

(注意:这个接口用到的openid和secret和上个接口一样,在公众号后台拿到,另外一个code还需要用另个接口获取)

4、获取code(详情见:网页授权获取用户基本信息----用户同意授权,获取code

这个接口需要引导关注者打开如下页面

我是在模板页面这么做的:

function goHome(){
var url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx2ae54a94c0b2fe8a&redirect_uri=http://zhuanti.49you.com/wxjb150427/ajax_action.php&response_type=code&scope=snsapi_base&state=1#wechat_redirect";
 window.location.href=url;
}

然后一进入页面就执行这个函数

      页面将跳转至 redirect_uri/?code=CODE&state=STATE(在这里获取code就好)


5、最后获取结果后,如果用户没有关注,想直接跳转至关注页面,用js:

window.location.href="weixin://profile/gh_44bbe5b7146c";

(注意:gh_44bbe5b7146c是微信公众号原始ID)

6、还有一项需要注意:

     有时候会出现错误:redirect_uri参数错误,要检查下后台配置:

开发者中心----接口权限表-----网页授权获取用户基本信息 ,这里配置的域名和redirect_uri参数跳转的域名是否一致,当然也可能是其他原因。

域名格式:zhuanti.49you.com(不需要带http://)


     

你可能感兴趣的:(html,php)