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

来源:互联网 发布:淘宝发布完宝贝就下架 编辑:程序博客网 时间:2024/05/20 13:06

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

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

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

1、填写服务器配置2、验证服务器地址的有效性3、依据接口文档实现业务逻辑
/** * 确认请求来自微信服务器 * * @param signature 微信加密签名 * @param timestamp 时间戳 * @param nonce     随机数 * @param echostr   随机字符串 * @return */@RequestMapping(value = "ichezheng", method = RequestMethod.GET)@ResponseBodypublic 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)@ResponseBodypublic 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.拿到这个值后,你就可以随便去调用微信其它的高级接口了,其它的我就不多说了,自己可以看微信开发者文档,里面写的非常详细

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

0 0