微信公众平台申请消息接口

微信公众平台的高级功能为我们提供了“编辑模式”和“开发模式”两种高级功能。在“编辑模式”下,可以通过简单的界面编辑,来设置自动回复,或公众号底部自定义菜单等功能。但是,如果你还想自定义更加自由灵活的功能,就需要用开发者模式了。在此模式下,开发者可以通过公众平台提供的接口,实现自动回复、获取订阅者、自定义菜单消息等功能。甚至像小黄鸡这样的自动对话系统,都是在开发模式下完成的。

好了,进入正题。要进入开发模式,首先需要申请消息接口。消息接口就是你的服务器上处理微信消息的地址,以后你的收听者给你发送的微信消息都会被转发到这个地址上进行处理。接口申请的大致过程是这样的。

首先,你需要一个绑定了域名的服务器,然后填写一个处理接口申请的url地址和你自己的token(因为是你自己填写的,所以该token可以用于确认接口申请是你发出的而不是别人冒充的)。

然后,微信服务器将发送GET请求到你填写的URL上,并且带上四个参数:

参数描述
signature微信加密签名
timestamp时间戳
nonce随机数
echostr随机字符串

最后,就是你(开发者)需要做的的处理,即通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。

signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

加密/校验流程:

    1. 将token、timestamp、nonce三个参数进行字典序排序
    2. 将三个参数字符串拼接成一个字符串进行sha1加密
    3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
参见官方文档:http://mp.weixin.qq.com/wiki/index.php?title=%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3%E6%8C%87%E5%8D%97 中的“2 申请消息接口”
  
代码实现很简单。新建一个action用于处理微信服务器发过来的接口确认请求,假设命名为InterfaceConfirm
public class InterfaceConfirm extends ActionSupport {}

以下是该action的execute()方法实现


@Override
    public String execute() throws Exception {
        // 获取请求和响应
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        //获取请求参数
        String signature = request.getParameter("signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostring = request.getParameter("echostr");
        String token = "***";    //你自己填写的token
        //对请求参数和自己的token进行排序,并连接排序后的结果为一个字符串
        String[] strSet = new String[]{token, timestamp, nonce};
        java.util.Arrays.sort(strSet);
        String total = "";
        for (String string : strSet) {
            total = total + string;
        }
        //SHA-1加密实例
        MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
        sha1.update(total.getBytes());
        byte[] codedBytes = sha1.digest();
        String codedString = new BigInteger(1, codedBytes).toString(16);//将加密后的字节数组转换成字符串。参见http://hi.baidu.com/aotori/item/c94813c4f15caa60f6c95d4a
        if (codedString.equals(signature)) { //将加密的结果与请求参数中的signature比对,如果相同,原样返回echostr参数内容
            OutputStream os = response.getOutputStream();
            BufferedWriter resBr = new BufferedWriter(new OutputStreamWriter(os));
            resBr.write(echostring);
            resBr.flush();
            resBr.close();
        }
        return SUCCESS;
    }

接着配置一下这个action,并将配置的路径填写到第二张图中的URL里面,最后点击“提交”,如果参数响应正确,会提示成功,并跳转到成功提示页,“你已成为开发者”!!

PS:其实以上验证过程还可以更简单,就是不加验证,直接返回echostr内容,如果你想这样做的话。因为这会带来一个安全问题,就是任何另外一个开发者,只要知道你这个action的地址,再随便填写一个token都可以通过接口申请验证。这样的话,任何发送到另外一个开发者的公众账号上的消息,实际上都会被微信服务器转发到你的服务器上。更进一步的后果就不得而知了。

 
微信公众平台消息接口使用指南 >>微信公众平台接口申请地址 最近微信开发这个东西炒的很猛,于是dApps考虑提供一些资源。 一 、微信公众平台消息接口简介 公众平台消息接口为开发者提供了一种新的消息处理方式。 二 、 微信公众平台消息接口申请 点击申请,如实填写负责人姓名 、 手机号和邮箱,填写网址url和token,其中token可由开发者可以任意填写,用作生成签名。 三 、 网址接入 阅读详情

相关推荐

腾讯微信公众平台开发教程(二)

公众平台消息接口为开发者提供了一种新的消息处理方式。

IT深耕十余载,大道之简 404

通过调用微信公众号模板消息接口实现业务通知消息

本次实验,最终实现的效果是,通过访问一个URL,调用程序的模板消息接口,实现通过公众号将消息推送给用户。小程序模板消息:分为一次订阅消息和长期订阅消息。,源码为java springboot实现(如何启动服务,请先学习springboot)启动服务前,请先将appid、appsecret、接收消息的用户的openid、模板消息ID,替换成自己的实际参数。业务产生的消息通知到用户,有各种各样的形式,app内消息、系统内消息、邮件通知、短信通知等,本文不涉及以上消息形式,仅为微信公众号的模板消息使用说明。

Kanen001的博客 1930

微信模版消息开发

在项目中,用到了微信的模版消息。搜索了一下,发现了很多好玩的东西,这里跟大家分享一下。 一,微信公众平台简介  微信公众平台,可以分为三类。 (1)订阅号:主要偏重于为用户传达资讯,类似于 报纸杂志,认证前后都是每天只可以群发一条消息。 (2)服务号:主要偏重于服务交互(类似于银行,114,提供服务查询),认证前后每个月可以群发4条消息。 (3)企业号:主要用于公司内部通信使用,需要

遇见未知的自己 3946

微信六大接收接口(接收普通消息)

1.文本接口 说明:如果用户发送过来的XML数据中,MsgType节点为'text'就代表用户发送的是文本消息接口开发步骤: 1>在接收是,接收MsgType节点 // 接收用户消息类型 $msgType = $postObj->MsgType; 2>在接收消息是对$MsgType进行判断 if ($msgType == 'text

LTOVE 5414

微信API接口(收藏)

微信API接口,个人微信协议

技术研究中心 1万+

如何对接微信公众号接口,实现后端登录后发消息

本文介绍了微信公众号接口对接的完整流程,重点展示了后端登录后如何主动向用户发送消息的实现思路。

m0_46286097的博客 2039

微信公众平台申请消息接口验证工具

申请了一个微信公众账号,还没想好服务器端用什么技术开发。 但是发现通过验证必须要有服务器, 开箱即用: 找一台外网能访问的安装了jdk的机器,直接运行 java -jar weixinhelper.jar 你的token 然后再微信公众平台接口配置信息 中填写你的http url和token即可通过验证。

KimmKing的技术博客 4013

微信公众平台申请消息接口–struts2(jsp)

微信公众平台的高级功能为我们提供了“编辑模式”和“开发模式”两种高级功能。在“编辑模式”下,可以通过简单的界面编辑,来设置自动回复,或公众号底部自定义菜单等功能。但是,如果你还想自定义更加自由灵活的功能,就需要用开发者模式了。在此模式下,开发者可以通过公众平台提供的接口,实现自动回复、获取订阅者、自定义菜单消息等功能。甚至像小黄鸡这样的自动对话系统,都是在开发模式下完成的。   好了

u011573042的专栏 1754

微信公众平台申请消息接口--struts2(jsp)实现

  微信公众平台的高级功能为我们提供了“编辑模式”和“开发模式”两种高级功能。在“编辑模式”下,可以通过简单的界面编辑,来设置自动回复,或公众号底部自定义菜单等功能。但是,如果你还想自定义更加自由灵活的功能,就需要用开发者模式了。在此模式下,开发者可以通过公众平台提供的接口,实现自动回复、获取订阅者、自定义菜单消息等功能。甚至像小黄鸡这样的自动对话系统,都是在开发模式下完成的。   好了,进...

weixin_30555125的博客 244

一旦手把手教你开发微信公众平台

一旦手把手教你开发微信公众平台目录一旦手把手教你开发微信公众平台 目录 1 初步认识微信公众平台 2 如何申请微信公众平台测试号 3 接口配置信息 4 环境搭建以及验证消息真实性1: 初步认识微信公众平台微信公众平台,简称weChat。曾命名为“官号平台”和“媒体平台”,最终定位为“公众平台”,无疑让我们看到一个微信对后续更大的期望。和新浪微博早期从明星战略着手不同,微信此时已经有了亿级的用户,挖掘

u013887254的专栏 2832

微信公众平台开发教程索引文档 不谢!

  微信公众平台开发者可以通过公众平台开发接口来进行消息交互、自定义菜单交互、素材管理、管理微信小店、发放微信卡券等,这里ytkah对微信公众平台开发文档做了一个小索引,方便开发者进行查询,包括实例源码下载   微信团队官方发布的微信公众平台开发者文档 新手指南 接入指南 典型案例介绍 开发者规范 模板消息运营规范 公众号类型的接口权限说明 微信开发者互助问...

weixin_30826095的博客 180

微信公众平台消息接口开发(8)小黄鸡(小贱鸡)机器人

微信公众平台消息 接口小黄鸡 小贱鸡 机器人作者:http://www.cnblogs.com/txw1958/ 第一部分 基于模拟请求的方式 一、模拟请求数据 先看一下小黄鸡的网页版界面 我们通过模拟http请求来实现,上面对话抓包如下: 发送消息的包 接收消息的包: 根据上面的包,模拟发起请求如下: 二、与微信对接 小黄鸡还可以使用API方式...

weixin_30423977的博客 152

微信公众平台 发送消息-群发接口

前言:最近做微信开发,弄了一个群发接口,本着不记录肯定会忘记的本事,在这里整理一下。多学习多进步。本文比较啰嗦,可以查看参考文章,我就是从那位大神那里学习到的。本片文章基于Spring开发,Spring提供的用于访问Rest服务的客户端。 这篇文章解决的问题: 1.上传图文消息素材 2.根据openid列表群发官方技术文档:微信公众平台技术文档一、查看相关技术文档,确定自己业务需求我想说明一下

小小布的程序世界 6069

微信公众平台消息接口API指南

简介 微信公众平台消息接口为开发者提供了一种新的消息处理方式。微信公众平台消息接口为开发者提供与用户进行消息交互的能力。对于成功接入消息接口微信公众账号,当用户发消息给公众号,微信公众平台服务器会使用http请求对接入的网址进行消息推送,第三方服务器可通过响应包回复特定结构,从而达到回复消息的目的。 申请消息接口 点击申请,填写网址url和token,其中token可由开发者可以任意填写,

BOTOAI 3130

微信公众平台 客服接口-发消息

微信公众平台技术文档:客服消息一、接口说明当用户和公众号产生特定动作的交互时(具体动作列表请见下方说明),微信将会把消息数据推送给开发者,开发者可以在一段时间内(目前修改为48小时)调用客服接口,通过POST一个JSON数据包来发送消息给普通用户。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。目前允许的动作列表如下(公众平台会根据运营情况更新该列表,不同动作触发后

小小布的程序世界 2万+

微信公众平台 发送模板消息

前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西。今天先总结一下微信公众平台模板消息的发送。因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下。微信公众平台技术文档:模板消息接口一、概述模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。关

小小布的程序世界 2万+
上一篇: eclipse+maven+jetty+struts2 HelloWorld
下一篇: Spring国际化 Spring(3)
snake_hand
博客等级 码龄14年 21粉丝 537原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值