其实一直想写这个关于微信开发的博客,但总是被其它的事情耽误,我记得刚开始接触微信的时候,还是我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.拿到这个值后,你就可以随便去调用微信其它的高级接口了,其它的我就不多说了,自己可以看微信开发者文档,里面写的非常详细
。。。。。总结到这些了,我需要去敲代码去了