利用百度云平台运行我们自己的服务端项目,在平台上线运行。利用这个项目对应的域名将其配置到微信公众平台,并填写token值。(这里的token值是我们自定义的一个字符串,它配置在服务端项目)在手机微信客户端搜索你的微信公众平台公众号(订阅号),当然通过二维码会更快速准确,呵呵。

下面我们先重服务器端开始。

进入百度云平台的管理控制台(请大家进入旧版--右上角):http://developer.baidu.com/dev点击创建应用,并创建一个手机web应用。

出现以下页面后,点击云环境:

创建域名,选择开发语言(我用的是Java),选着版本管理器(我用的是svn),点击确定:

等待后弹出提示创建成功后,点击确定,跳转到如下页面---------创建版本:

点击创建版本后,会出现两种选择,一种是在线创建项目,然后在线编辑发布,本人还是觉得第二种顺手,上传war包,即将本地建好的web项目发布为war包,然后上传,在上线,我们就以上传war包方式为例:这里我们就暂且停下:开始来编辑我们需要的web项目。

在eclipse中心建一个web项目(tomcat服务器)新建MainServer.java

需要导入的jar包:大家没有的可以到我的云盘去下载:点击打开链接

[java] view plaincopyprint?
  1. <span style="font-family:SimHei;font-size:12px;">package com.weixin.zfeng.server;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.security.MessageDigest;
  6. import java.util.Arrays;
  7. import java.util.Date;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.ServletInputStream;
  10. import javax.servlet.http.HttpServlet;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import org.dom4j.Document;
  14. import org.dom4j.DocumentHelper;
  15. import org.dom4j.Element;
  16. import com.weixin.zfeng.utils.Weather;
  17. public class MainServer extends HttpServlet{
  18. //这里是你定义的token值
  19. private final String TOKEN = "haha";
  20. @Override
  21. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  22. throws ServletException, IOException {
  23. //取出随机字符串
  24. String echostr=req.getParameter("echostr");
  25. if(null==echostr||echostr.isEmpty()){
  26. responseMsg(req,resp);
  27. }else{
  28. if(this.checkSignature(req)){
  29. resp.getWriter().print(echostr);
  30. }else{
  31. resp.getWriter().print("");
  32. }
  33. }
  34. }
  35. @Override
  36. protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  37. throws ServletException, IOException {
  38. doPost(req, resp);
  39. }
  40. //回复
  41. public void responseMsg(HttpServletRequest req,HttpServletResponse resp) throws IOException{
  42. String postStr=null;
  43. try{
  44. postStr=this.readStreamParameter(req.getInputStream());
  45. }catch(Exception e){
  46. e.printStackTrace();
  47. }
  48. //System.out.println(postStr);
  49. if (null!=postStr&&!postStr.isEmpty()){
  50. Document document=null;
  51. try{
  52. document = DocumentHelper.parseText(postStr);
  53. if(null==document){
  54. resp.getWriter().print("");
  55. return;
  56. }
  57. }catch(Exception e){
  58. e.printStackTrace();
  59. }
  60. Element root=document.getRootElement();
  61. String fromUsername = root.elementText("FromUserName");
  62. String toUsername = root.elementText("ToUserName");
  63. String keyword = root.elementTextTrim("Content");
  64. String time = new Date().getTime()+"";
  65. String textTpl = "<xml>"+
  66. "<ToUserName><![CDATA[%1$s]]></ToUserName>"+
  67. "<FromUserName><![CDATA[%2$s]]></FromUserName>"+
  68. "<CreateTime>%3$s</CreateTime>"+
  69. "<MsgType><![CDATA[%4$s]]></MsgType>"+
  70. "<Content><![CDATA[%5$s]]></Content>"+
  71. "<FuncFlag>0</FuncFlag>"+
  72. "</xml>";
  73. //发送消息类型
  74. String msgType = "text";
  75. String contentStr = "";
  76. String resultStr="";//返回消息
  77. //关注订阅号后,返回的提示
  78. if(null==keyword||keyword.equals("")){
  79. contentStr = "hi,how are you! I'm server and with baiduyun";
  80. }
  81. //微信客户端发送time,服务器解析到后返回当前时间
  82. else if(keyword.equals("time")){
  83. contentStr = new Date().toString();
  84. }
  85. resultStr = String.format(textTpl, fromUsername, toUsername, time, msgType, contentStr+"---zhaofeng");
  86. resp.getWriter().print(resultStr);
  87. }else {
  88. resp.getWriter().print("");
  89. }
  90. resp.getWriter().flush();
  91. resp.getWriter().close();
  92. }
  93. //检查请求
  94. public boolean checkSignature(HttpServletRequest request){
  95. //这里是微信进行安全验证的四个值,由于token为明文,所以前用前三个值进行加密计算后的值与token对比(不具体描述)
  96. String signature = request.getParameter("signature");
  97. String timestamp = request.getParameter("timestamp");
  98. String nonce = request.getParameter("nonce");
  99. String token=TOKEN;
  100. String[] tmpArr={token,timestamp,nonce};
  101. Arrays.sort(tmpArr);
  102. String tmpStr=this.ArrayToString(tmpArr);
  103. tmpStr=this.SHA1Encode(tmpStr);
  104. if(tmpStr.equalsIgnoreCase(signature)){
  105. return true;
  106. }else{
  107. return false;
  108. }
  109. }
  110. public String SHA1Encode(String sourceString) {
  111. String resultString = null;
  112. try {
  113. resultString = new String(sourceString);
  114. MessageDigest md = MessageDigest.getInstance("SHA-1");
  115. resultString = byte2hexString(md.digest(resultString.getBytes()));
  116. } catch (Exception ex) {
  117. }
  118. return resultString;
  119. }
  120. private String byte2hexString(byte[] bytes) {
  121. StringBuffer buf = new StringBuffer(bytes.length * 2);
  122. for (int i = 0; i < bytes.length; i++) {
  123. if (((int) bytes[i] & 0xff) < 0x10) {
  124. buf.append("0");
  125. }
  126. buf.append(Long.toString((int) bytes[i] & 0xff, 16));
  127. }
  128. return buf.toString().toUpperCase();
  129. }
  130. //
  131. public String ArrayToString(String [] arr){
  132. StringBuffer bf = new StringBuffer();
  133. for(int i = 0; i < arr.length; i++){
  134. bf.append(arr[i]);
  135. }
  136. return bf.toString();
  137. }
  138. //流中读取数据
  139. public String readStreamParameter(ServletInputStream in){
  140. StringBuilder buffer = new StringBuilder();
  141. BufferedReader reader=null;
  142. try{
  143. reader = new BufferedReader(new InputStreamReader(in));
  144. String line=null;
  145. while((line = reader.readLine())!=null){
  146. buffer.append(line);
  147. }
  148. }catch(Exception e){
  149. e.printStackTrace();
  150. }finally{
  151. if(null!=reader){
  152. try {
  153. reader.close();
  154. } catch (IOException e) {
  155. e.printStackTrace();
  156. }
  157. }
  158. }
  159. return buffer.toString();
  160. }
  161. }
  162. </span>

这里是一个最基本的骨架代码,大家可以在上面进行跟多丰富的扩展。接着我们将项目导出为war包。接着就是刚刚说到的上传war包了,这里就不再讲了。上传成功后点击上线(哦这里有个下提示,当然这里不存在,免费用户每次只能上传50M以内哦),等待提示“代码已生效”后,出现:

接着我们就应该配置微信公众平台了:(申请注册微信公众平台要求比较严格,需要审核几天到N天不等)。https://mp.weixin.qq.com/

前不久我是借用别个的账号进行测试的,我的公众号都几天了还没有通过,哎~所以这里没法给大家截图。其实微信里边配置很简单,就是一个访问项目的域名,和一个token值,填正确这两个后就可以确定了,然后就是关注账号进行测试了。我的上一个测试用的是return这个号,大家关注后发送time试下效果(相同代码)

这里的域名就是你创建web项目时写的mytestserverforweixin.duapp.com注意这里并不是完全正确的域名,还需要在前面加上你的版本号:1.mytestserverforweixin.duapp.com。希望过几天我的公众号能够通过,

到时候给大家截两张图更好。

百度云和微信账号接入相关推荐

  1. (凯思奥2020-03月)问题记录3,GUI问题记录3 4,国际化异常,微信平台接入 = 数据库修改 + 自动化填充 + 前后端接口修正 + 联调测试问题 + 微信与数字账号绑定 + 思考+部署

    问题记录3: 1. UserPage: 未登录状态(报解构异常),或直接登出再登录,没有获取用户数据. 2.WorkContentPage gui相关(大片红字报错)(国际化message类型问题) ...

  2. 微信公众平台开发教程第2篇-----微信开发者接入

    原文地址为: 微信公众平台开发教程第2篇-----微信开发者接入 最近几天在群里看到没有接触过开发的朋友也有在玩微信的公众平台,微信用户到目前已经达到3个亿了吧!!  我不知道伙伴们是因为什么而接触微 ...

  3. 微信账号公开买卖;华为:5G 火车站启动;小米 9 高通骁龙 855 全球首发 | 极客头条...

    「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 快讯速知 微 ...

  4. ehvierwer登录与不登录_【虎嗅早报】抖音回应无法用微信账号登录:不清楚是否为人为...

    题图来自视觉中国 早上好. 昨天白日里,一场雪都没下过的北京已经有了春天的感觉,不过对中概股和部分企业之间来说依然是个寒冬里不平静的一天. 抖音与微信继续"硬刚" @新浪科技[抖音 ...

  5. 如何打通微信账号体系?

    如果你的微信应用使用同一微信主体注册,Authing 会将终端用户自动识别为同一个用户,不需要你进行额外操作. 准备工作 你一共需要准备以下内容: 注册 Authing 开发者账号 使用同一个微信主体 ...

  6. 微信支付 postman_小刘同学微信支付接入全笔记

    走上"码农"这条路已经快一年半啦,做过不少的Demo和项目,也接触了不少的业务场景,8000w的大数据量处理,QPS500+的并发优化,也算是在开发的这条路上踏出了入门向前的步伐: ...

  7. Egret微信游戏接入

    自学开发笔记,有兴趣的同学请关注微信WiGameFun,不定时分享游戏开发相关技术.有不对的地方烦请指点修正.​ Egret微信游戏接入 ​前面几篇都是整理如何使用Egret引擎或者与它相关的一些开发 ...

  8. 微信公众平台接口调试工具json格式不对怎么搞_腾讯云和微信推出更快速的小程序开发平台,微信读书小程序作示范...

    腾讯云副总裁刘颖将腾讯云定义为微信的一个助手,腾讯云面向微信生态开发者输出的技术解决方案包括"小程序·云开发".小程序音视频直播.小游戏联机对战引擎等,腾讯云与企业微信的合作也会在 ...

  9. 92%的奢侈品牌开通微信账号 营销到底该如何做?

    近几年来,越来越多的奢侈品牌在中国开始积极运用社交媒体--微信.根据奢侈品数字研究机构 L2 在今年发布的一份 Digital IQ Index: Luxury China 报告指出,在目前进入中国的 ...

最新文章

  1. 动态添加跨行表格_学会这2招,轻松搞定数据透视表动态更新,效率猛增一倍...
  2. SQL同时删除两张表中的数据
  3. 人类高质量AI训练方式:精细化数据集管理颠覆唯SOTA论
  4. java的三种代理模式
  5. 感觉 Mongodb 的操作 还没 mysql 方便 。。。。
  6. serum血清序列号_图文教程 将serum血清预制导入你的serum
  7. 腾讯数据中心负责人揭秘:半年时间如何搭好“山洞鹅厂”
  8. pycharm 修改新建文件时的头部模板
  9. ExtJs五(ExtJs Mvc登录优化)
  10. 【Siddhi】Siddhi 组件架构
  11. 天锐绿盾技术大讲堂:解密审批流程管理
  12. ukey其他错误_UKEY不能识别解决方法
  13. 怎么使用QQ音乐api搭建个人音乐站点
  14. Python识别同构数
  15. Axure 网站后台-能源管理系统 rp 9原模板代码下载
  16. 正确获取CleanMyMac注册码并激活
  17. android6最新版本,安卓版“AirDrop”发布,安卓6版本以上都能用!
  18. python使用什么来区分代码块_Python 小数据池、代码块以及代码块缓存机制
  19. 获得用户输入一个整数N,计算并输出N的32次方:
  20. 电池电量与电压的关系

热门文章

  1. python 安装scrapy是报错 building 'twisted.test.raiser' extension error: Microsoft Visual C++ 14.0 is req
  2. 基于freeswitch 自动外呼系统实现(一)
  3. python3.6 str.replace() 字符串替换方法
  4. 深圳市腾讯计算机系统有限公司末日沙城,末日沙城腾讯版
  5. 【代码笔记】Pytorch-两层BiLSTM情感计算Demo代码解读
  6. Java常见报错--学习中的报错信息整理收集
  7. 基于kaldi的在线语音识别
  8. PADS Layout制板文件和贴片文件的输出方法
  9. Comunion 区块链深度学习系列|哈希碰撞原理
  10. 2022-7-8 Leetcode 59.螺旋矩阵 II