开发者模式

在”高级功能”页面中,我们首先要开启”开发者模式”,如下图:

点击”查看详情”按钮,打开界面如下:

这里我们需要填写URL和Token。当你填写上URL和Token后,点击“提交验证”的按钮后,易信服务器会发送GET请求到你的服务器上。如果验证无误的话,页面会生成AppID和AppSecret字符串,后面会大量用到这两个变量。

校验程序

开发者提交信息后,易信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:

参数

描述

signature

易信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

timestamp

时间戳

nonce

随机数

echostr

随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自易信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

加密/校验流程如下:

1. 将token、timestamp、nonce三个参数进行字典序排序

2. 将三个参数字符串拼接成一个字符串进行sha1加密

3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于易信

校验函数如下:

1 function checkSignature()

2 {

3      $signature= $_GET["signature"];

4      $timestamp= $_GET["timestamp"];

5      $nonce= $_GET["nonce"];

6

7      $token= TOKEN;

8      $tmpArr= array($token, $timestamp, $nonce);

9      sort($tmpArr,SORT_STRING);

10    $tmpStr= implode( $tmpArr );

11    $tmpStr= sha1( $tmpStr );

12

13    if($tmpStr == $signature ){

14              returntrue;

15    }else{

16              returnfalse;

17    }

18 }

3,4,5行代码是通过get请求获取将signature、timestamp、nonce三个参数。第7行代码的TOKEN是在common/Global.php文件中进行了全局设置。第8-11行代码指将三个参数字符串进行排序,拼接成一个字符串进行sha1加密。最后加密串与signature做比较。

提交验证

我们通过一个例子,来说明整个验证流程。

Index.php

<?php
require_once dirname(__FILE__) . '/YiXinCore.class.php';
require_once dirname(__FILE__) . '/Log.class.php';

$token="1234567890";
$yxchat=new yxchat();

$result=$yxchat->run();

class yxchat
{
public function run()
{
//判断此次请求是否为验证请求
if (!isset($_GET['echostr']))
{
Log::wLog('INFO',"执行消息:".$echoStr);
$callback = new YiXinCore();
$callback->responseMsg();
}
else
{
Log::wLog('INFO',"执行验证:".$echoStr);
$this->valid();
}
}

private function valid()
{
$echoStr=$_GET["echostr"];
Log::wLog('INFO',"验证valid:".$echoStr);
if ($this->checkSignature())
{
Log::wLog('INFO',"验证valid:".$echoStr."成功!\r");
echo $echoStr;
exit;
}
}

private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];

$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}

?>

具体的类库我们将在后面的章节进行阐述。$result=$yxchat->run()为验证入口函数。run函数的代码,主要功能是,如果是验证请求,则具体执行valid函数,如果是其他消息请求,则执行YiXinCore类中的responseMsg的方法。valid函数,主要利用了签名函数进行合法性校验。

好了,到这一步,我们的验证程序就算是写好了,部署到服务器或者sae环境中,点击”提交验证”按钮,如果没有问题的化,系统会提示”开发者权限已开通”。这一步是必须的,将是我们后续开发的基础。

易信公众平台开发从入门到精通之开发验证相关推荐

  1. 易信公众平台开发从入门到精通之接收普通消息

    对公众号来说,这是一种新的接收用户发送消息的方式.公众号不需要再登录平台,就可以接收用户发送的文本,图片,语音,视频,地理位置等消息 当普通易信用户向公众账号发消息时,易信服务器将POST消息的XML ...

  2. 易信公众平台开发从入门到精通之天气预报

    天气预报 易信公众平台支持图文消息的返回,今天我们就说说如何使用易信公众平台实现一个图文天气预报. 天气预报API接口 1百度天气API 百度天气预报API接口可以提供当天以及未来三天的天气预报,其U ...

  3. php 易信公众开发,易信公众平台接口代码分享

    易信公众平台接口文件代码,只要将文件里的token换成自己定义的就可以直接放到自己的空间上了.注意:token值要跟您在开发模式那里写的一样. /** * wechatphp test */ //de ...

  4. 【微信易信公众平台开发】开启开发者模式

    本系列文章均为A2BGeek原创,转载务必在明显处注明: 转载自A2BGeek的[微信易信公众平台开发]系列,原文链接:http://blog.csdn.net/a2bgeek/article/det ...

  5. 【微信易信公众平台开发】天气查询功能

    本系列文章均为A2BGeek原创,转载务必在明显处注明: 转载自A2BGeek的[微信易信公众平台开发]系列,原文链接:http://blog.csdn.net/a2bgeek/article/det ...

  6. 易信公众平台开发(ASP.NET WebForm) Using Senparc.Weixin.MP SDK

    本文主要简单介绍如何通过Senparc.Weixin.MP SDK开发易信后台, 0.为什么可以用专门为微信开发的SDK 这个在Senparc.Weixin.MPSDK的官网里面有所提及, 你可以比较 ...

  7. 【微信易信公众平台开发】创建自定义菜单

    本系列文章均为A2BGeek原创,转载务必在明显处注明: 转载自A2BGeek的[微信易信公众平台开发]系列,原文链接:http://blog.csdn.net/a2bgeek/article/det ...

  8. php易信短信接口,易信公众平台demo代码php(含验证接口)

    //易信公众平台地址https://plus.yixin.im/login,复制后后缀改为.php define("TOKEN", "yixin"); $wec ...

  9. 易信公众平台的微创新:活动消息

    关键字:易信公众平台 活动消息  微信公众平台 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/yixin-activity-message.html 易信公 ...

最新文章

  1. java数据结构教程_Java数据结构
  2. 《塞洛特傳說》道具系统
  3. Solr嵌套子文档的弊端以及一种替代方式
  4. 病毒汇编逆向分析实例赏析
  5. 如何使用Javascript 访问local部署的YAAS service
  6. MySQL什么是关系_MySQL教程-关系模型
  7. AVS软件解码器的优化
  8. jetty9更改post请求长度
  9. ExcelToSQLServer-批量导入Excel文件到SQL Server数据库
  10. SpringCloud(四)Eureka自我保护机制
  11. 虚拟化技术的优点和缺点
  12. 固定偏置放大电路为何不能保证静态工作点的稳定性?
  13. 张钹院士:清华大学AI研究院要孵化人工智能界的BAT
  14. DevOps-5-看板
  15. 如何在BIOS中开启虚拟化技术
  16. Android 蓝牙 搜索周围设备代码流程分析-framework到协议栈流程
  17. 其他计算机设备是什么,电脑设备指什么
  18. Vue http request 请求拦截器
  19. blur表单验证方式
  20. SDAutoLayout快速实现Cell的高度自适应

热门文章

  1. 京东试用python全自动申请程序
  2. PHP laravel系列之bootstrap美化
  3. 【逻辑题】三个日本人
  4. 半路出家学php,PHP半路出家(1)
  5. 计算机专业面试问题同济大学,同济大学计算机考研初试和复试经验分享_跨考网...
  6. OA审批流程管理,简化审批手续!
  7. [转载]本土ERP软件的前世今生
  8. Redis 单机集群搭建步骤(五)
  9. 服务器08r2系统怎么校时,在windows 2008 R2上建 SNTP/NTP 服务器及客户机校时设置
  10. MacBook Pro合上盖子不休眠的问题简单分析