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

  |   0 评论   |   1,905 浏览

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


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

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

    我这里用的是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</li>
    *      <li>下载后解压,可以看到localpolicy.jar和USexport_policy.jar以及readme.txt</li>
    *      <li>如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件</li>
    *      <li>如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件</li>
    * </ol>
    */

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

    就类似我下面的状态

    评论

    发表评论

    validate