微信开发__入门

0.作者前言

本文针对人群是有一定开发基础的人员,可以比较快的帮助你了解和学习微信开发.

其次是本文作者本次书写,全部采用的是个人的订阅号,假如是正常的开发流程,可能会存在不同,请读者注意.

本文代码部分主要提供的是关键代码,非关键代码因人而异,需要读者自行补充,请注意.

今天文章下面对一些方法进行了封装,虽然在公司里面,这些都是由后台来对这些任务完成,但是身为一个有理想,有抱负的前端,我们会肯定是有必要的,对吧.而且微信开发很多时候,也是直接由前端来开发完成的.

最后,如果喜欢本文,请关注我呦. 2016年05月31日

CSDN:http://blog.csdn.net/mr_lp?viewmode=contents


1.基本认知

  • 订阅号
  • 公众号
  • 企业号

具体内容请参考 微信公众平台注册步骤示例图(企业)

咱们只需要明白下面这个图的内容。

2. 开发前准备

  1. 申请一个微信公众号

    微信公众号链接

我们选择了

之后我们首先需要去配置一下接口.

之后我们就可以去修改我们的token.

之后我们需要前往

开发–> 开发者工具 –> 开始开发 –> 接入指南

可以直接点击 接入指南

找到 PHP示例代码下载去进行下载.

我这里帮大家偷个懒 PHP 示例代码下载

下载之后我们需要去进行解压缩,将解压缩之后的文件名称去进行一下修改,例如可以改成 wx.php.

之后我们打开php , 去将里面的内容 token 去进行更改.

之后我们将其从新压缩,压缩完成之后我们需要打开我们的新浪云去管理我们的 PHP 文件.

首先,使用新浪云首先需要进行新浪云的注册以及实名认证,这里相信大家都能弄明白.

只是额外提一点,新浪云是需要消耗云豆的,而新手注册会赠送200云豆,以后则需要自己去购买了.

但是如果是好友邀请,你除了当前的200之外,应该,注意是应该会额外赠送你200云豆,所以咯,小伙伴们如果不嫌弃,可以直接用我下面的注册链接,这样你应该就能获得 400 云豆了.

我的邀请链接 http://t.cn/R5UICr2

在我们注册之后,我们就需要开始去创建我们新的应用了.

这里需要注意, PHP 的版本不要选太高,否则会影响后面的内容.

创建了空应用之后,我们就可以在这里找到我们刚才创建的应用了,点击上面的应用名称.

找到应用中的代码管理,之后选择右侧的上传代码.

这时候发现,提示代码上传只支持 zip, gz, tar.gz 三种格式.

这时候就可以把我们刚才特意打包好的应用去上传上去了.

上传之后,我们也可以在上传代码的边上找到编辑代码.

之后直接在编辑代码中去更改我们的 PHP 文件了.

还记得我们刚才在边上有一个链接么?

这时候我们就可以将刚才的链接去直接复制过去,回到微信开发接口这边,把刚才的 URL 填写进去.

但是需要注意,我们需要将链接补全完毕,

也就是将刚才的路径去做一个更改,将地址和文件名串联在一起,之后回到刚才的接口中,可以去做 URL 的添加,但是需要注意,需要在前面添加上 HTML 协议.

至此,我们已经获取了 我们的接口,接下来就正式进入微信开发.


3.获取access_token

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。

以上话术出自 获取access_token

这里主要就是看看你刚才去生成的 APPID 和 APPSECRET 能否正常的获取.

这里我们可以直接现在网页中去尝试一下,看看能否获取数据.

这里把刚才的APPID 等填写进去,如果成功的话,我们应该就能看见我们的 access_token 了.

http请求方式:

GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

这块代码是固定的,可以直接粘贴.

可是我现在只是在网页中获取出来了,我们要是在程序中怎么去获取呢?难道用 AJAX ? 当然不是,这时候我们需要使用 PHP 去获取.

<?php
    $appid = "**********这里书写自己的 id*********";
    $appsecret = "**********这里书写自己的secret*********";

    $api = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}}&secret={$appsecret}";

    $json = file_get_contents($api);
    // 这种可以进行获取,但是数据不稳定,所以不推荐使用

    // 微信官方推荐使用的方法是 curl,
    // 我们可以新建一个 PHP,去 打印一下 phpinfo();
    // 之后在网页中去查询一下是否有 curl 这个内容

    echo $json;
 ?>

如果我们验证之后确实存在,我们就可以去使用微信提供的方式.

<?php
    $appid = "**********这里书写自己的 id*********";
    $appsecret = "**********这里书写自己的secret*********";

    $api = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}}&secret={$appsecret}";

    //$json = file_get_contents($api);
    // 这种可以进行获取,但是数据不稳定,所以不推荐使用

    // 微信官方推荐使用的方法是 curl,
    // 我们可以新建一个 PHP,去 打印一下 phpinfo();
    // 之后在网页中去查询一下是否有 curl 这个内容

    // echo phpinfo();//比file_get_contents稳定且能发送post请求

    function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
    // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);

//  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
    // 这里进行注释是因为这里是进行 token 去进行验证
    // 防止其他人恶意刷内容
    // 这里因为是本地测试,所以注释一下,正式上线的时候还是需要注释开的
    curl_setopt($curl, CURLOPT_URL, $url);

    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
  }

    $json = httpGet($api);

    echo $json;
 ?>

此段代码可以在 微信JS-SDK中查询到.

这时候我们应该就能够获取我们的 token 了,但是我们现在还需要将其从新获取出来,我们可以将其转换为一个数组,之后从新获取我们的 access_token.

<?php
    $appid = "**********这里书写自己的 id*********";
    $appsecret = "**********这里书写自己的secret*********";

    $api = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}}&secret={$appsecret}";
    function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
//  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
    curl_setopt($curl, CURLOPT_URL, $url);

    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
  }

    $str = httpGet($api);

    // 第二个参数设置为 true ,返回值改为数组
    $arr = json_decode($str,true);
    print_r($arr);

    $accessToken = $arr["assess_token"];
 ?>

我们已经获取了具体的 access_token, 之后我们就可以存入我们的数据库中,每次使用的时候去进行一个判断,如果是旧的就去获取新的替换它.

这里不对数据库操作做更多说明,这个完全看自己习惯,

只是补充一点, token 的 类型要是 TEXT ,time 的类型最好是 VARCHAR.

之后回到代码部分,这时候我们会首先去连接一下我们刚才的数据库.

具体连接数据库请自行操作.

之后我们就去通过数据库操作去获取到我们的 token.

<?php 

    $appid = "**********这里书写自己的 id*********";
    $appsecret = "**********这里书写自己的secret*********";

    function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
//  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
    curl_setopt($curl, CURLOPT_URL, $url);

    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
  }

    $str = httpGet($api);

    function getToken(){
        global $appid;
        global $appsecret;

        $api = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}}&secret={$appsecret}";

        // 第二个参数设置为 true ,返回值改为数组
        $arr = json_decode($str,true);
        // print_r($arr);

        $accessToken = $arr["assess_token"];

        return $accessToken;
    }

    $sql = "SELECT * FROM token";
    $result = mysql_query($sql);
    if (mysql_num_rows($result) > 0) {
        //我们判断时间是否过期

        $row = mysql_fetch_assoc($result);
        $time = $row["time"];
        $nowTime = time();
        // 因为刚才微信默认的有效时间是7200秒(2小时)
        if ($nowTime - $time > 7200) {
            // 过期了,从新获取并更新数据库
            $token = getToken();
            $time = time();
            $sql = "UPDATE token SET token=‘{$token}‘,time=‘$time‘";

            mysql_query($sql);
            if (mysql_affected_rows() > 0) {
                echo "更新成功";
            }
            else{
                echo "更新失败";
            }
        }
        else{
            // 没过期
            $token = $row["token"];
        }
        echo $token;
    }
    else{
        //没有的话,就直接去插入
        $sql = "INSERT INTO token(id,token,time) VALUES (NULL,‘{$accessToken}‘,‘{$time}‘)";

        mysql_query($sql);
        if (mysql_insert_id() > 0) {
            echo "插入成功";
        }
        else{
            echo "插入失败";
        }
    }
    echo $token;
 ?>

4.获取微信服务器IP地址

如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过该接口获得微信服务器IP地址列表或者IP网段信息。

以上话术出自 获取微信服务器IP地址

http请求方式:

GET

https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN

这里我们首先可以先来获取一下微信的服务器列表.

// 获取微信服务器列表
    function getIP($token){
        $api = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token={$token}";
        $json = http_get($api);
        echo $json;
    }
    getIP($token);

我们再对其进行一下封装,

    // 获取微信服务器列表
    function getIP($token){
        $api = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token={$token}";
        $json = http_get($api);

        $arr = json_decode($json,true);
        return $arr["ip_list"];
    }
    $ip_List = getIP($token);
    print_r($ip_List);

记得实际操作的时候,需要对获取到的数据进行一个验证,只有在获取到了对应的数据之后再进行下面的操作.

同样的操作,像我们想获取用户列表等内容,同样也是如此.

5.获取用户列表

公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。

以上话术出自 获取用户列表

http请求方式:

GET(请使用https协议)

https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID

我们也可以对其进行一下封装.

    // 第二个参数为可选参数
    function getUserList($token,$nextOpendId = false){
        if ($nextOpendId) {
            $api = "https://api.weixin.qq.com/cgi-bin/user/get?access_token={$token}&next_openid={$nextOpendId}";
        }
        else{
            $api = "https://api.weixin.qq.com/cgi-bin/user/get?access_token={$token}";
        }
        $json = httpGet($api);
        echo $json;

        // $arr = json_decode($json,true);
    }
    getUserList($token);

    // 用这个方法可以获取到我们的内容是从哪个位置开始
    // 例如假如有 100个人,我们给定的是 第50 个人的 token, 返回的应该是 51 - 100
    // getUserList($token,"用户的 token 内容");

这时候我们就可以对其进行一下打印,打印之后就可以看到我们的想要的用户列表了.

6.获取用户详细信息

在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。

请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。

上方出自 微信公众平台说明 获取用户基本信息(UnionID机制)

http请求方式:

GET

https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN 

//获取用户详细信息
    function getUserInfo($token,$userOpenId){
        $api = "http请求方式: GET https://api.weixin.qq.com/cgi-bin/user/info?access_token={$token}}&openid={$userOpenId}}&lang=zh_CN";
        $json = httpGet($api);

        $arr = json_decode($json,true);

        return $arr;
    }
    getUserList($token,"用户的 token 内容");
    $userInfo = getUserInfo($token,"某一用户的 token");
    // 获取用户信息
    print_r($userInfo);

    // 获取用户头像
    echo "<img src = ‘".$userInfo["headimgurl"]."‘>";

7.长链接转短链接接口

在今天文章最后,我们再来给大家演示一个 post 接口的写法.

将一条长链接转成短链接。

主要使用场景: 开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降,将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。

上述话语出自 长链接转短链接接口

http请求方式:

POST

https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN

以上请求网址是固定的,可以直接替换.

    function httpPost($data,$url){
         $ch = curl_init();
         curl_setopt($ch, CURLOPT_URL, $url);
         curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
         curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)‘);
         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
         curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         $tmpInfo = curl_exec($ch);
         if (curl_errno($ch)) {
          return curl_error($ch);
         }
         curl_close($ch);
         return $tmpInfo;
    }

    function longToShort($token,$url){
        $api = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token={$token}";
        // 这里直接采用官网提供的url 了
        $data = ‘{"action":"long2short","long_url":"‘$url.‘"}‘;
        $json = httpPost($data,$api);

        // echo $json;

        return json_decode($json,true);
    }
    longToShort($token,"https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433600&token=&lang=zh_CN");
    print_r($arr);

这时候我们可以去打印一下现在的URL ,这时候我们就不必使用之前的非常长的接口内容了,而可以直接去使用我们缩短的网址了.

同时这个函数不仅仅可以用在此处,其余时候也可以直接去使用.

时间: 2024-10-11 12:30:59

微信开发__入门的相关文章

微信开发实战入门视频教程(Android4.4.2)

基于移动技术微信公众平台开发实战入门(Android4.4.2,微移动应用,项目实战) 适合人群:初级课时数量:40课时用到技术:微移动应用涉及项目:手机微信开发 qq:1840215592 课程内容简介微信腾讯公司推出的一个即时通讯服务的应用,微信提供公众平台.朋友圈.消息推送等功能,预计到2014年年底其注册用户量将突破10亿.面对一个用户数如此巨大的家伙,大家怎么能放过,都迫不及待的希望自己的应用能够跟微信产生一些联系.那么我们这套课程要讲的就是如何跟微信产生连接,如何将我们的网站接入到微

关于C#的微信开发的入门记录一

在之前老是看到一些微信开发的例子,但是作为初学者会有很多问题,之前我也找了很多帖子,但是最终也没能解决,现在刚好手里有一个项目,总结一下分享给准备做却动不了手的朋友们,本文只是以我个人的经验作为浅谈(大学生),不足之处还望大家不吝赐教! 在开发之前我们需要有三样东西,接下来将一一介绍三样东西的准备: 首先,需要申请一个公众平台账号: 其次,需要一个域名空间,也就是在网络上得一块空间: 再次,还需要一个网站: 一:微信公众平台账号,怎样注册网上有很详细的教程,请移步查看: 然后问题来了,请仔细查看

C#微信开发之入门

这段时间公司要开发微信公众号,研究了一段时间,走了不少弯路,现在记录下这段时间的劳动成果. 开发微信公众号当然第一步是要申请个公众号啦,可是申请公众号很麻烦,而且需要很长时间,具体怎么申请可以百度下.为了方便我就申请了一个测试号,看微信开发文档的时候发现新大陆啦,有测试号这东西,省了我不少麻烦,哈哈! 一.申请测试号 1.输入网址http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,进入申请微信测试号页面 2.如果有微信就可以

微信开发之入门篇(一)

刚开始进行微信的开发测试,从最基础的入手: 控件.接口等的使用参考https://mp.weixin.qq.com/debug/wxadoc/dev/index.html?t=2017117 今天测试wx.request接口的时候出现域名网址不合法的情况,捣鼓了好久,网上说需要在小程序的公众平台账号上配置域名才能正常访问: 但今天测试出来了另外一种方法(适用于测试): 将微信开发工具左上角的设置-->设置代理栏选为不使用任何代理,直接连接服务器 然后勾选项目中的开发环境不校验请求域名与TLS版本

关于C#的微信开发的入门记录二

在准备了空间和域名之后,现在来讲讲我们接下来的编码过程: 今天就先到这里了!没有服务器那些的请看我之前的博客:http://www.cnblogs.com/zhankui/p/4515905.html 不会域名解析的请看:http://www.cnblogs.com/zhankui/p/4517333.html       因为我拿到手的项目是要做一个微信教务系统,所以呢我这里肯定是要用到数据库的,所以代码总放在一起不好看,也不方便修改,所以采用分层的方式来进行编码,我的分层如下图所示: 顺便提

JAVA微信开发-新手接入指南

相信很多人对微信开发已经不那么陌生,我也是从一个微信开发的菜鸟经过各种问题的折磨,然后去搜索引擎搜索各种文章阅读,但是基本都是零散的资料,没有一个统一.系统的阐述微信应用如何开发.作者结合自己的实际开发经验,归纳整理出来分享给微信开发的入门者或正在研究的开发者. 这篇文章主要阐述如何搭建一个微信开发平台.古人云:“磨刀不负砍才工”.我们开发应用也需要准备一些必要的条件.  准备工作   1.  下载 Jdk1.7  安装 2.  下载 Tomcat 7.0 3.  下载 Myeclipse 6.

微信开发入门

问题描述:在做微信公众号开发的时候,第一次看见微信开发文档 简直就是一脸懵逼啊!都什么跟什么啊,请看下面详解: 1.微信开发需要启用开启开发者模式(不懂的自行百度) 2.填写服务器地址,token 3.服务器配置: 1 <?php 2 3 class Test{ 4 private $token = '4512c35162db71cb7ecee5bc5cd65978'; 5 private $weixin_token = null; 6 /** 7 * @desc 验证微信接入 8 * @aut

微信开发学习总结(二)——微信开发入门

上一篇<微信开发学习总结(一)——微信开发环境搭建>我们已经完成了微信开发的准备工作,准备工作完成之后,就要开始步入正题了. 一.微信公众平台的基本原理 在开始做之前,先简单介绍了微信公众平台的基本原理. 微信服务器就相当于一个转发服务器,终端(手机.Pad等)发起请求至微信服务器,微信服务器然后将请求转发给我们的应用服务器.应用服务器处理完毕后,将响应数据回发给微信服务器,微信服务器再将具体响应信息回复到微信App终端. 通信协议为:HTTP 数据传输格式为:XML 具体的流程如下图所示:

微信小程序开发的入门教程

广州微信小程序开发公司(www.dthulian.com)品向科技,下面跟大家详细介绍微信小程序开发的入门教程: 开发前准备: 注册小程序帐号 绑定开发者 登录微信公众平台小程序,进入用户身份- 开发者,新增绑定开发者. 已认证的小程序可以绑定不多于20个开发者.未认证的小程序可以绑定不多于10个开发者. 获取AppID下载并安装开发者工具 下载完成后,使用管理员或者绑定的开发者微信号扫码登录. 一个微信小程序 创建项目 我们需要通过开发者工具,来完成小程序创建和代码编辑. 开发者工具安装完成后