微信公众平台开发-起航篇

      Hello,读者姥爷们,大家好。我是不是加多宝的宝,一个程序员,主要使用的语言是PHP(有时候会写一些android的程序)。我是一个毕业不到两年的大学生,所以也不能说教大家什么,在这里分享一些自己的学习经历,希望和大家一起进步。

      好了,其他的不多说了,本篇的目的是让大家快速入门微信公众平台的api开发。文中案例自然使用我最熟悉的PHP + Mysql作为开发语言和数据库。

      本篇不讲什么是微信公众号等之类的科普内容 和 微信公众号申请相关的内容,相信大家也已经非常熟悉了。本篇主要讲如何接入微信并验证token。

      我们不申请微信公众号,而是使用微信官方提供的 【微信测试号】 作为开发平台。他的好处是:免得浪费你一个邮箱,不用你的微信绑定银行卡,拥有众多的权限,不会让大家申请了订阅号,不认证的话权限就会很少。下面放出微信测试号的地址,只需要使用微信登陆即可。戳这里:)

      登陆完之后会看到一个“测试号管理”的页面,下面我们需要配置一下我们的微信测试号。如下图所示,在测试号管理中我们可以查看我们的appID,appsecret和配置我们的测试号。想要开发,你还需要一个服务器空间 和 域名(注意,微信公众平台接口仅支持80端口)。填写的url必须是公网可访问的才行。token是我们和微信服务器的一个约定字符串,自己随便写就好了。

微信公众平台开发-起航篇_第1张图片
测试号管理界面部分-1

      然后我们需要编写一个test.php文件传到我们的服务器上来让微信验证我们的接口。(参考文档:《微信文档:接入指南》)当我们提交验证的时候(当然现在还没有编写好验证脚本,不要提交哦)微信服务器会给我们填写的接口URL发送一个GET请求,并传递四个参数:timestamp(时间戳),nonce(一个随机数),signature(微信加密签名),echostr(随机字符串)。例如:

http://www.exmple.com/test.php?timestamp=1472583690&nonce=123456&signature=a1sb2a5d334b&echostr=1a3e2c5b4d80

讲解其中两个参数:

1.signature :这是我们需要验证的加密签名。他是由timestamp,nonce和token(我们自己填写的)按照字典序排序之后拼接成字符串然后用sha1算法加密后的字符串。我们要做的就是把接到的timestamp,nonce和我们定义的token如此操作之后和微信给我们传来的signature做比较。

2.echostr : 它的作用是当我们加密签名验证通过之后输出出来。(只有第一次验证服务器的时候微信才会给我们发送这个参数,以后会利用到这一现象)。

接下来我们开始编码吧。

define('TOKEN','rainlu');//定义我们的token

$timestamp = $_GET['timestamp'];//接受时间戳

$nonce = $_GET['nonce'];//接受随机数

$signature = $_GET['signature'];//接受签名

$echostr = $_GET['echostr'];//接受随机字符串

$tmpArr = array($timestamp,$nonce,TOKEN);//将时间戳,token,随机数放到数组里,方便排序

sort($tmpArr,SORT_STRING);//字典序排序数组

$tmpStr = sha1(implode($tmpArr));//拼接字符串并用sha1算法加密

if($tmpStr == $signature){

      echo $echostr;//验证成功,输出echostr

      exit;

}else{

      echo 'error';

      exit;

}

      这样,一个最简单的验证脚本就写好了(下一篇我们将优化这个脚本)。下一步将他传入到我们的服务器,然后手动去输入地址看通不通。通的话就回到“测试号管理”页面提交配置,如果提示“token验证失败”,请多提交两次试试,如果还不行就检查自己的脚本看哪里编写的有问题。

      小作业:将验证脚本写到一个微信类中去。

      这一篇到这里就结束了,喜欢的话点个赞啊,投个硬币(并不)啊都可以。

      参考文献:《微信官方文档》 ,《php官方手册》

大家周末愉快,转载请注明出处。by 2016-05-06 over。

你可能感兴趣的:(微信公众平台开发-起航篇)