编辑模式和开发模式
微信公众号申请成功后,如果要接收和处理用户的请求,必须在“高级功能”中进行配置。点击“高级功能”看到如下界面:
从上图可以看出,高级功能包括编辑模式和开发模式两种模式,而这两种模式是互斥的,即不能同时启动。两种模式有什么区别?作为开发者你想开哪家?
编辑模式:主要是非程序员和信息发布的公众账号使用。这种模式开启后,你可以通过界面轻松配置“自定义菜单”和“自动回复消息”。
开发模式:主要是有开发能力的人使用。这种模式开启后,可以利用微信公众平台的开放接口,通过编程创建自定义菜单,接收/处理/回复用户消息。这种模式比较灵活,建议有开发能力的公司或个人采用这种模式。
启用开发模式(上)
微信公众号注册完成后,默认开启编辑模式。那么如何开启开发模式呢?操作步骤如下:
1)点击进入编辑模式,将右上角的编辑模式开关从“开”切换到“关”,如下图所示:
2)点击高级功能进入开发模式,将右上角的开发模式开关由“关”切换到“开”,但切换时会遇到如下提示:
提示我们先成为开发者,才能开启开发模式。然后点击“成为开发者”按钮,如下图所示:
如果提示信息不完整,先填写信息再回来继续操作。需要填写的信息包括公众账号头、描述、操作区。
信息填写完成后,再次点击“成为开发者”,会看到界面配置信息界面,如下图所示:
这里需要填写URL和令牌的两个值。URL是指可以接收和处理微信服务器发来的GET/POST请求的地址,并且已经存在,现在可以在浏览器中访问,这就需要我们开发公众账号后台处理程序(至少要处理完GET请求)并部署在公网服务器上。Token稍后会解释。
也就是说,完成接口配置,只需要先完成微信服务器的GET请求处理?是的,那为什么呢?因为这是微信公众平台接口里定义的。具体请参考API文档-消息接口-消息接口指南中的URL访问部分。点击此处进入。
写的很清楚。其实只要你能看懂它说的是什么,就OK。至于怎么写相关代码,我已经帮你完成了。请继续读下去。
创建一个公众账号后台接口程序
创建一个Java Web项目,并创建一个可以处理请求的新servlet。任意命名。我在这里将其命名为org . liufeng . course . servlet . coreservlet,代码如下:
可以看到,代码中只完成了doGet方法,它的作用是确认请求是否来自微信服务器。不过doPost方法不是我们这次要讲的,也不用管doPost方法完成接口配置,先空在那里就行了。在doGet方法中,调用org . liufeng . course . util . sign util . check signature方法,SignUtil.java实现如下:
这里唯一需要注意的是SignUtil类中的成员变量Token。这里给什么值,接口配置信息里的token要填什么值,只要双方一致就行,没有其他要求。建议使用项目名称、公司名称缩写等。我在这里使用的项目名称是weixinCourse。最后,我们来看看CoreServlet在web.xml中是如何配置的,web.xml中的配置代码如下:
至此,所有的编码都完成了,就这么简单。下一步是将项目发布到公共网络服务器。如果没有公网服务器环境,可以了解一下BAE,SAE或者阿里云。发布到服务器后,我们在浏览器中访问CoreServlet。如果我们看到下面的界面,这意味着我们的代码是好的:
啊,所有代码都报空指针异常,证明没问题?当然,因为直接在地址栏访问coreServlet就相当于提交了一个GET请求,而我们没有传递任何参数,当然在验证的时候会报错空指针异常。
接下来复制coreServlet的访问路径,然后返回微信公众平台的访问配置信息界面,将coreServlet的访问路径粘贴到URL中,将SignUtil类中指定的token值weixinCourse填充到Token中。填写后的结果如下图所示:
我写这个教程的时候用的是BAE环境。如果你想学习没有公共服务器环境的微信公众号开发,建议你试试。注册和使用都很方便。有什么问题可以交流。
然后点击“提交”。如果程序编写正确,URL和Token填写正确,可以在页面顶部看到“提交成功”的提示,再次跳转到开发模式设置界面,可以看到“您已经成为开发者”的提示,如下图所示:
启用开发模式(如下)
到这个时候,我已经成为一名开发人员,经历了各种波折。哈哈,还没完呢。最后一步,打开开发模式。将右上角的开发模式开关从“关”切换到“开”,如下图所示:
至此,界面配置和开发模式的开启全部完成,内容在此。