一颗小豌豆呀 發表於 2019-5-14 20:20:00

Java 微信公众号开发

<h3 id="微信公众号开发开发模式-java">微信公众号开发(开发模式-Java)</h3>
<h4 id="环境搭建">环境搭建</h4>
<blockquote>
<ul>
<li>微信公众号申请步骤<br>
https://kf.qq.com/faq/120911VrYVrA151009eIrYvy.html</li>
<li>微信公众号与后台调通<br>
java后台搭建<br>
1.创建Dynamic Web Project<br>
2.创建类WechatServlet继承HttpServlet</li>
</ul>
</blockquote>
<pre><code class="language-java">//主要重写doGet方法

   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           String signature = req.getParameter("signature");
           String timestamp = req.getParameter("timestamp");
           String nonce = req.getParameter("nonce");
           String echostr = req.getParameter("echostr");
           PrintWriter out = resp.getWriter();
           if (CheckUtil.checkSignature(signature, timestamp, nonce)) {
                   out.print(echostr);
           }
   }

</code></pre>
<pre><code class="language-java">//工具类CheckUtil
//定义TOKEN 此处命名随意(后续会用到,一致即可)
private static final String TOKEN = "miya";
       
        public static Boolean checkSignature(String signature, String timestamp, String nonce) {
                String array[] = new String[] {TOKEN, timestamp, nonce };
                //排序
                Arrays.sort(array);
                //生成字符串
                StringBuffer content = new StringBuffer();
                for (int i=0;i&lt;array.length;i++) {
                        content.append(array);
                }
                //sha1加密
                String tempStr = getSha1(content.toString());
               
                //返回比较结果
                return tempStr.equals(signature);
        }
       
    public static String getSha1(String str){
      if(str==null||str.length()==0){
            return null;
      }
      char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9',
                'a','b','c','d','e','f'};
      try {
            MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
            mdTemp.update(str.getBytes("UTF-8"));

            byte[] md = mdTemp.digest();
            int j = md.length;
            char buf[] = new char;
            int k = 0;
            for (int i = 0; i &lt; j; i++) {
                byte byte0 = md;
                buf = hexDigits;
                buf = hexDigits;
            }
            return new String(buf);
      } catch (Exception e) {
            return null;
      }
    }
</code></pre>
<pre><code class="language-xml">web.xml 配置
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="false" version="3.0"&gt;
&lt;display-name&gt;
   wechat
&lt;/display-name&gt;

&lt;servlet&gt;
    &lt;servlet-name&gt;wechatServlet&lt;/servlet-name&gt;
    &lt;servlet-class&gt;com.miya.wechat.base.WechatServlet&lt;/servlet-class&gt;
&lt;/servlet&gt;

&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;wechatServlet&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/wechat.do&lt;/url-pattern&gt;
    /* 名称随意,后续一致即可*/
&lt;/servlet-mapping&gt;
&lt;/web-app&gt;
</code></pre>
<p>项目结构:<br>
uploading-image-431716.png</p>
<p>现在即可运行项目。</p>
<blockquote>
<ul>
<li>配置微信公众平台开发模式配置<br>
服务器地址:<br>
若本地测试则 ip+端口号+项目名称+url<br>
url的配置实在web.xml里面的(名称可随意)<br>
uploading-image-950650.png</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>下载内网穿刺工具<br>
有很多,我用的是ngork<br>
同样访问成功</li>
</ul>
</blockquote>


</div>
<div id="MySignature" role="contentinfo">
    ❀❀    (ง •_•)ง       little little      🦆🦆       ❀❀❀❀♕♕♕♕♕<br><br>
来源:https://www.cnblogs.com/VVII/p/10507783.html
頁: [1]
查看完整版本: Java 微信公众号开发