微信公众号开发总结(一)

其实一直想写这个关于微信开发的博客,但总是被其它的事情耽误,我记得刚开始接触微信的时候,还是我13出来的实习的时候,那个时候微信好火,它的高级接口,其它如何接入与自己的服务器平台,但后面尤其来了上海之后就没在接触,这次公司又要开发,正好自己学习了一把,

1.查看微信开发者文档,里面写的非常清楚,怎么接入,怎么返回json数据,

接入微信公众平台开发,开发者需要按照如下步骤完成:

1、填写服务器配置
2、验证服务器地址的有效性
3、依据接口文档实现业务逻辑
/**
 * 确认请求来自微信服务器
 *
 * @param signature 微信加密签名
 * @param timestamp 时间戳
 * @param nonce     随机数
 * @param echostr   随机字符串
 * @return
 */
@RequestMapping(value = "ichezheng", method = RequestMethod.GET)
@ResponseBody
public String wxApi(String signature, String timestamp, String nonce, String echostr) {
    String returnStr = SignUtil.checkSignature(signature, timestamp, nonce) ? echostr : "";
    return returnStr;
}

/**
 * 处理微信服务器发来的消息
 *
 * @return
 */
@RequestMapping(value = "ichezheng", method = RequestMethod.POST)
@ResponseBody
public String wxApi(HttpServletRequest request) throws Exception {
    WeiXinMessage outMessage = null;
    Map requestMap = MessageUtil.parseXml(request);
    // 发送方帐号(open_id)
    String fromUserName = (String) requestMap.get("FromUserName");
    // 公众帐号
    String toUserName = (String) requestMap.get("ToUserName");
    // 消息类型
    String msgType = (String) requestMap.get("MsgType");
    logger.info("fromUser:==" + fromUserName + "toUser:==" + toUserName);
    outMessage = createReturnMessage(fromUserName, toUserName);
    if (msgType.equals(Constant.MSG_TYPE_TEXT)) {
        String content = ((String) requestMap.get("Content")).trim();
        sendText(outMessage, content);
        if (content.equalsIgnoreCase("id")) {
            //用户回复id
             /*  logger.info("用户通过公众号查询自己的id");
                User user = userService.selectUserByOpenid(inMsg.getFromUserName());
                if(user != null ){
                    sendText(outMessage, "您的用户id为:"+user.getId().toString());
                }else{
                    sendText(outMessage, "系统异常,请联系客服人员。");
                }*/
        } else {
            /*   HashMap< String ,Object> map=materialTextService.getMaterialText(inMsg.getContent());
                if(Integer.parseInt(map.get("code").toString())==0){
                    logger.info("进入查找massage!!");
                    ObjectMapper obj=new ObjectMapper();
                    Map maps=(Map) map.get("info");
                    sendText(outMessage, maps.get("content").toString());
                }else{
                    logger.info("转客户服务。。。");
                    this.customerService(outMessage);
                }*/
        }
        //   textMessage.setContent(content);
        //    respMessage = MessageUtil.textMessageToXml(textMessage);
    }
    //事件推送
    else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
        String eventType = (String) requestMap.get("Event");
        if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
            sendText(outMessage, Constant.WELCOME_MSG);
            String bindUser = userService.bindUserInfoById(outMessage);
        }
        //取消订阅
        else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
            //暂不做处理
        }
        //自定义菜单点击事件
        else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
            String eventKey = (String) requestMap.get("EventKey");
            outMessage.setMsgType("news");
            logger.info("进入菜单点击");
            outMessage = GraphicMessageUtils.graphicMessage(eventKey, outMessage);
        }
    }
    return WeiXinUtil.messageToXml(outMessage);
}
这个时候仅仅是跟微信平台接入成功了,要注意需要配置微信平台服务器配置相关信息

2.access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

所以你需要在自己的缓存机制里面保存这个access_token,并且2个小时后更新它

3.拿到这个值后,你就可以随便去调用微信其它的高级接口了,其它的我就不多说了,自己可以看微信开发者文档,里面写的非常详细

。。。。。总结到这些了,我需要去敲代码去了

你可能感兴趣的:(微信开发小结)