码迷,mamicode.com
首页 > 微信 > 详细

详解微信开发者文档——2接入服务器至微信开发平台

时间:2015-04-05 20:12:51      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

写在前面的话:为了更灵活的与微信公众平台互动,需要将微信公众平台与自己的服务器进行对接,只有对接成功之后,才能够进行后面功能的实现。

=========正文开始==========

  详细讲解之前,对微信公众平台与自己服务器对接先有个感性的认识。

  假设微信已经与我们自己的服务器完成对接,之后微信公众平台就能够将自己接收到的消息发送给我们的服务器,同样我们也可以给微信服务器发送消息。这里就涉及到了几个问题:1.微信应该给我们服务器的什么地址进行对接呢?2.如何验证这个地址确实是我们自己服务器的地址呢?解决了这两个疑问,初步对接的工作也就完成了。

一、微信应该给我们服务器的什么地址进行对接呢?

1、打开自己的微信公众号后台,选择左边菜单栏最下面的开发者中心,如下图:

技术分享

2、在开发者中心页面,如下图:

技术分享

  这个页面有一些比较有用的信息,其中AppID和AppSecret对于每个公众号是唯一的,在后面的功能实现中会用到。下面的服务器配置页面,就是用来填写我们自己服务器与微信公众平台对接的地方,点击修改配置就可以填写了相关信息了。

  (1)URL(服务器地址):填写自己的服务器的一个地址,这里我使用的是SAE,至于wechat.php具体写了哪些代码,下面再讲。

  (2)Token(令牌):这里随便填写,这个在wechat.php代码里面会用到。

  (3)EncodingAESKey和消息加密解密方式:这里默认就可以了,以后如果需要用到消息加密的话,可以进行设置。

  设置完成上面信息后,点击提交,如果wechat.php中写的代码没有问题的话,应该会提示成功,然后再点击启用,就完成了微信公众平台与自己服务器的对接了。接下来来看看wechat.php中代码该怎么写。

二、如何验证这个地址确实是我们自己服务器的地址呢?

  前面点击提交之后,微信会向我们提交的地址发送GET请求,请求中含有四个参数:signature,timestamp,nonce,echostr,我们代码中需要通过如下三个步骤来验证:

(1)将token,timestamp,nonce三个参数进行字典排序

(2)将三个参数字符串进行sha1加密

(3)加密字符串和signature对比,如果比对正确原样返回echostr。

具体代码如下:

<?php
    $echoStr = $_GET["echostr"];
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];     
    $token = "test";
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr == $signature )
    {
      echo $echoStr;
      exit;
    }
    else
    {
      echo "validate没有通过";
    }
?>

  上面代码应该也比较简单了,也不过多解释了,其实这里验证是比较粗糙的,我们可以直接在代码里面写上如下代码: echo $_GET[‘echostr‘]其实就能够通过验证;而且更合理的话应该将$tmpStr发送给微信服务器,signature的比对在微信服务器端比对比较合适,我们以后会发现之后一些签名验证就是在微信服务器端验证的,这里其实不用太纠结,这里也不会涉及到多少安全性的问题,因此想怎么写就怎么写吧。

  如果在上面验证的过程中出问题了,看看是不是sae有问题,完成了这一步,和微信服务器的对接算是完成了。

详解微信开发者文档——2接入服务器至微信开发平台

标签:

原文地址:http://www.cnblogs.com/wuguanglei/p/4393017.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!