善忘技术夹 Logo
善忘技术夹
技术文章 · 2409 阅读

微信公众号开发--善忘影视(二)

打开开发者模式后,需要一个后台接收微信过来的请求, 比如搜索框输入电影名字, 能返回相关电影列表信息 。

如上我搜索老九门 返回了搜索结果点击对应列表信息,就能查看影视节目的详情信息了。

为了简单, 不需要自己从零开始实现微信上的接口了, 比起最早什么都要自己实现来,现在开源的微信框架都挺成熟了。

我这里用的是http://git.oschina.net/lisenhui/mpsdk4j这个开源的实现, 可以节约很多时间,当然, oschina上有很多,选一个自己觉得可以的就行了, 都大同小异了。我使用的是ssm框架结构,可以看道文档里面有关于springmvc使用说明,如下图,

现在已经是最新版本的,我用版本是早点版本 ,代码可能有点区别,用实际的代码就好了。

#微信账号信息 在属性文件里面配置
weixin.appId=xxx
weixin.appSecret=xxxxx
weixin.token=xxx
weixin.aesKey=xxxxx
在我的是实现类里面实现引用属性值,springmvc 配置文件中初始化了属性文件
@Controller
@RequestMapping("/weixin")
public class WeiXinController extends WxSpringSupport {
@Value("${weixin.appId}")
private String appId;
@Value("${weixin.appSecret}")
private String appSecret;
@Value("${weixin.token}")
private String token;
@Value("${weixin.aesKey}")
private String aesKey;</pre>
然后实现了消息处理器
/**
 * 默认的微信消息处理器
 * 
 * @author 凡梦星尘(elkan1788@gmail.com)
 * @since 2014/12/05
 * @version 1.0.0
 */
public class WxDefaultHandler implements WxHandler {

private static final Logger log = LoggerFactory .getLogger(WxDefaultHandler.class);

以下具体的实现
// 微信接入验证
if ("GET".equals(method)) {
    try {
        reply = this.wxBase.check();
        if (reply.isEmpty()) {
            reply = "error";
            log.error("微信接入验证URL时失败!!!");
            log.error("微信服务器echoStr值: {}", this.wxBase.getEchostr());
            log.error("SHA1签名echoStr值: {}", reply);
        }
    } catch (AesException e) {
        log.error("微信接入验证URL时出现异常!!!");
        log.error(e.getLocalizedMessage(), e);
    }
    return reply;
}

// 信息互动 try { reply = this.wxBase.handler(); } catch (Exception e) { log.error(“解析微信消息时出现异常!!!”); log.error(e.getLocalizedMessage(), e); }

微信认证就是第一次微信后台启用的时候,需要验证代码是否正确。

这里需要注意的是,因为使用AES加密,需要下载jce的jar包替换jdk目录下面的文件

使用AES解密, 需要再jre下面添加相关的jce文件,不然会出现错误

/**

  • 提供接收和推送给公众平台消息的加解密接口(UTF8编码的字符串).
  • <ol>
  •      <li>第三方回复加密消息给公众平台</li>
  •      <li>第三方收到公众平台发送的消息,验证消息的安全性,并对消息进行解密。</li>
  • </ol>
  • 说明:异常java.security.InvalidKeyException:illegal Key Size的解决方案
  • <ol>
  •      <li>在官方网站下载JCE无限制权限策略文件(JDK7的下载地址: *      http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html&lt;/li>
  •      <li>下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt</li>
  •      <li>如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件</li>
  •      <li>如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件</li>
  • </ol> */

最后直接启用就好了,如果返回成功,微信后台就会显示启用成功的状态

就类似我下面的状态